version 0.3
[jMoule] / src / DonkeyGui.java
1 import java.awt.*;\r
2 import java.awt.event.*;\r
3 import javax.swing.*;\r
4 import javax.swing.table.*;\r
5 import java.util.Vector;\r
6 \r
7 public class DonkeyGui extends JFrame\r
8 {\r
9 \r
10         DonkeyGui(final DonkeyCore donkeyCore)\r
11         {\r
12                 Dimension screensize=Toolkit.getDefaultToolkit().getScreenSize();\r
13                 \r
14                 // Splash window\r
15                 JWindow splash=new JWindow();\r
16                 splash.getContentPane().add(new JLabel(new ImageIcon(getClass().getResource("/splash.jpg"))));\r
17                 splash.pack();\r
18                 Dimension windowsize=splash.getSize();\r
19     splash.setLocation((screensize.width-windowsize.width)/2,(screensize.height-windowsize.height)/2);\r
20           splash.setVisible(true);\r
21                 \r
22                 // Main window\r
23                 setTitle("jMoule");\r
24                 setSize(600,400);\r
25     windowsize=getSize();\r
26     setLocation((screensize.width-windowsize.width)/2,(screensize.height-windowsize.height)/2);\r
27     setIconImage(Toolkit.getDefaultToolkit().createImage(getClass().getResource("/icon.gif")));\r
28                 addWindowListener(new WindowAdapter() {\r
29       public void windowClosing(WindowEvent e)\r
30       {\r
31         System.exit(0);\r
32       }\r
33     });\r
34     \r
35     JTabbedPane tabbedPane=new JTabbedPane();\r
36                 getContentPane().add(tabbedPane);\r
37 \r
38                 // Control panel\r
39                 JPanel controlPanel=new JPanel();\r
40                 JPanel connectPanel=new JPanel();\r
41                 connectPanel.add(new JLabel("Host : "));\r
42                 final JTextField hostText=new JTextField("",10);\r
43     connectPanel.add(hostText);\r
44                 connectPanel.add(new JLabel("Password : "));\r
45                 final JPasswordField passwordText=new JPasswordField("",5);\r
46     connectPanel.add(passwordText);\r
47     JButton connectButton=new JButton("Connect");\r
48                 connectPanel.add(connectButton);\r
49     JButton killButton=new JButton("Kill");\r
50                 connectPanel.add(killButton);\r
51     connectButton.addActionListener(new ActionListener() {\r
52       public void actionPerformed(ActionEvent event)\r
53       {\r
54                     //System.out.println("connectButton");\r
55                     if (hostText.getText().length()==0) return;\r
56                     donkeyCore.connect(hostText.getText(),4001,new String(passwordText.getPassword()));\r
57       }\r
58     });\r
59     killButton.addActionListener(new ActionListener() {\r
60       public void actionPerformed(ActionEvent event)\r
61       {\r
62                     //System.out.println("killButton");\r
63                     donkeyCore.kill();\r
64       }\r
65     });\r
66                 tabbedPane.add(connectPanel,"Control");\r
67 \r
68                 // Server panel\r
69                 JPanel serverPanel=new JPanel(new BorderLayout());\r
70                 JPanel servertopPanel=new JPanel();\r
71                 JButton connectMoreButton=new JButton("Connect More");\r
72                 servertopPanel.add(connectMoreButton);\r
73                 JButton cleanOldButton=new JButton("Clean Old Servers");\r
74                 servertopPanel.add(cleanOldButton);\r
75                 /*\r
76                 JButton sconnectButton=new JButton("Connect");\r
77                 servertopPanel.add(sconnectButton);\r
78                 JButton disconnectButton=new JButton("Disconnect");\r
79                 servertopPanel.add(disconnectButton);\r
80                 */\r
81                 serverPanel.add(servertopPanel,"North");\r
82                 //final JTable serverTable=new JTable(new ServerTableModel(donkeyCore.serverInfos));\r
83 \r
84         TableModel dataModel=new ServerTableModel(donkeyCore.serverInfos,donkeyCore);\r
85         TableSorter sorter=new TableSorter(dataModel);\r
86         JTable tableView=new JTable(sorter);\r
87         tableView.setColumnSelectionAllowed(false);\r
88         tableView.setRowSelectionAllowed(false);\r
89         sorter.addMouseListenerToHeaderInTable(tableView);\r
90 \r
91                 //serverPanel.add(new JScrollPane(serverTable),"Center");\r
92                 serverPanel.add(new JScrollPane(tableView),"Center");\r
93                 tabbedPane.add(serverPanel,"Servers");\r
94     connectMoreButton.addActionListener(new ActionListener() {\r
95       public void actionPerformed(ActionEvent event)\r
96       {\r
97                     //System.out.println("connectMoreButton");\r
98                     donkeyCore.connectMore();\r
99       }\r
100     });\r
101     cleanOldButton.addActionListener(new ActionListener() {\r
102       public void actionPerformed(ActionEvent event)\r
103       {\r
104                     //System.out.println("cleanOldButton");\r
105                     donkeyCore.cleanOld();\r
106       }\r
107     });\r
108                 /*\r
109     sconnectButton.addActionListener(new ActionListener() {\r
110       public void actionPerformed(ActionEvent event)\r
111       {\r
112                     System.out.println("sconnectButton");\r
113                     for (int i=0;i<serverTable.getSelectedRowCount();i++)\r
114                     {\r
115                         ServerTableModel m=(ServerTableModel)serverTable.getModel();\r
116                         //Vector v=(Vector)r.serverInfos.get(serverTable.getSelectedRows()[i]);\r
117                             donkeyCore.connectServer((Long)m.getValueAt(i,0));\r
118                     }\r
119       }\r
120     });\r
121     disconnectButton.addActionListener(new ActionListener() {\r
122       public void actionPerformed(ActionEvent event)\r
123       {\r
124                     System.out.println("disconnectButton");\r
125                     for (int i=0;i<serverTable.getSelectedRowCount();i++)\r
126                     {\r
127                         ServerTableModel m=(ServerTableModel)serverTable.getModel();\r
128                         //Vector v=(Vector)r.serverInfos.get(serverTable.getSelectedRows()[i]);\r
129                             donkeyCore.disconnectServer((Long)m.getValueAt(i,0));\r
130                     }\r
131       }\r
132     });\r
133     */\r
134 \r
135                 // Search panel\r
136                 JPanel searchPanel=new JPanel(new BorderLayout());\r
137     JPanel topPanel=new JPanel();\r
138     topPanel.add(new JLabel("Query : "));\r
139     final JTextField searchText=new JTextField("",15);\r
140     topPanel.add(searchText);\r
141     JButton searchButton=new JButton("Search");\r
142     topPanel.add(searchButton);\r
143     JButton extendButton=new JButton("Extend");\r
144     topPanel.add(extendButton);\r
145     /*\r
146     JButton downloadButton=new JButton("Download");\r
147     topPanel.add(downloadButton);\r
148     */\r
149     searchPanel.add(topPanel,"North");\r
150                 final JTabbedPane resultsPane=new JTabbedPane();        \r
151                 searchPanel.add(resultsPane,"Center");\r
152                 final Vector resultTables=new Vector();\r
153     searchButton.addActionListener(new ActionListener() {\r
154       public void actionPerformed(ActionEvent event)\r
155       {\r
156                     //System.out.println("searchButton");\r
157                     if (searchText.getText().length()==0) return;\r
158         Vector searchResult=donkeyCore.search(searchText.getText());\r
159         \r
160         /*\r
161         JTable resultTable=new JTable(new ResultTableModel(searchResult));\r
162         resultTables.add(resultTable);\r
163         resultsPane.add(new JScrollPane(resultTable),searchText.getText());\r
164         resultsPane.setSelectedIndex(resultsPane.getTabCount()-1);\r
165         */\r
166         \r
167         ResultTableModel resultModel=new ResultTableModel(searchResult,donkeyCore);\r
168         TableSorter sorter=new TableSorter(resultModel);\r
169         JTable tableView=new JTable(sorter);\r
170         tableView.setColumnSelectionAllowed(false);\r
171         tableView.setRowSelectionAllowed(false);\r
172         resultTables.add(tableView);\r
173         sorter.addMouseListenerToHeaderInTable(tableView);\r
174         resultsPane.add(new JScrollPane(tableView),searchText.getText());\r
175         resultsPane.setSelectedIndex(resultsPane.getTabCount()-1);\r
176 \r
177       }\r
178     });\r
179     extendButton.addActionListener(new ActionListener() {\r
180       public void actionPerformed(ActionEvent event)\r
181       {\r
182                     //System.out.println("extendButton");\r
183                     donkeyCore.extend();\r
184       }\r
185     });\r
186     /*\r
187     downloadButton.addActionListener(new ActionListener() {\r
188       public void actionPerformed(ActionEvent event)\r
189       {\r
190                     System.out.println("downloadButton");\r
191                     JTable resultTable=(JTable)resultTables.get(resultsPane.getSelectedIndex());\r
192                     for (int i=0;i<resultTable.getSelectedRowCount();i++)\r
193                     {\r
194                         ResultTableModel r=(ResultTableModel)resultTable.getModel();\r
195                         Vector v=(Vector)r.searchResult.get(resultTable.getSelectedRows()[i]);\r
196                         donkeyCore.download((Long)v.get(0));\r
197                     }\r
198       }\r
199     });\r
200     */\r
201                 tabbedPane.add(searchPanel,"Search");\r
202 \r
203                 // Downloads panel\r
204                 //tabbedPane.add(new JScrollPane(new JTable(new DownloadTableModel(donkeyCore.fileInfos))),"Downloads");\r
205                 //DownloadTableModel \r
206                 dataModel=new DownloadTableModel(donkeyCore.fileInfos,donkeyCore);\r
207                 //TableSorter \r
208                 sorter=new TableSorter(dataModel);\r
209                 //JTable \r
210                 tableView=new JTable(sorter);\r
211                 tableView.setColumnSelectionAllowed(false);\r
212                 tableView.setRowSelectionAllowed(false);\r
213                 sorter.addMouseListenerToHeaderInTable(tableView);\r
214                 tabbedPane.add(new JScrollPane(tableView),"Downloads");\r
215 \r
216     // Console panel\r
217     tabbedPane.add(new JScrollPane(donkeyCore.console),"Console");\r
218 \r
219                 // Stats panel\r
220                 //tabbedPane.add(new JScrollPane(new JTable(new StatTableModel(donkeyCore.statInfos))),"Stats");\r
221                 dataModel=new StatTableModel(donkeyCore.statInfos);\r
222                 sorter=new TableSorter(dataModel);\r
223                 tableView=new JTable(sorter);\r
224     tableView.setColumnSelectionAllowed(false);\r
225     tableView.setRowSelectionAllowed(false);\r
226     sorter.addMouseListenerToHeaderInTable(tableView);\r
227                 tabbedPane.add(new JScrollPane(tableView),"Stats");\r
228 \r
229                 try\r
230                 {\r
231                         Thread.sleep(2000);\r
232                 }\r
233                 catch (Exception e)\r
234                 {}\r
235                 splash.setVisible(false);\r
236                 show();\r
237                 \r
238         }\r
239         \r
240 }\r