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