ViewVC Help
View File | Revision Log | Show Annotations | Revision Graph | Root Listing
root/i-scream/projects/cms/source/conient/uk/org/iscream/cms/conient/ConfigurationDialog.java
Revision: 1.6
Committed: Thu Mar 1 02:00:02 2001 UTC (23 years, 3 months ago) by ajm
Branch: MAIN
Changes since 1.5: +48 -4 lines
Log Message:
Now all configuration support is in place.  Full 1.1 support and configuration for it.
Still a few configuration bugs to iron out, but all the major construction and implementation is done.
Added debug messages to ConnectionHandler.
Fixed bug in the datapanel.

File Contents

# User Rev Content
1 ajm 1.1 //---PACKAGE DECLARATION---
2     package uk.ac.ukc.iscream.conient;
3    
4     //---IMPORTS---
5 ajm 1.3 import java.awt.Frame;
6     import java.awt.Color;
7     import java.awt.GridLayout;
8     import java.awt.event.*;
9     import javax.swing.*;
10     import javax.swing.border.*;
11 ajm 1.1 import java.util.Properties;
12 ajm 1.5 import java.util.StringTokenizer;
13 ajm 1.1
14     /**
15     * This provides a modal dialog from which the user
16     * can reconfigure the conient client.
17     *
18     * It then writes back the configuration to the file.
19     *
20     * Server configured options are displayed, but are
21     * for information purposes only, and cannot be changed.
22     *
23     * @author $Author: ajm4 $
24 ajm 1.6 * @version $Id: ConfigurationDialog.java,v 1.5 2001/02/27 23:31:32 ajm4 Exp $
25 ajm 1.1 */
26     public class ConfigurationDialog extends JDialog {
27    
28     //---FINAL ATTRIBUTES---
29    
30     /**
31     * The current CVS revision of this class
32     */
33 ajm 1.6 public static final String REVISION = "$Revision: 1.5 $";
34 ajm 1.1
35     //---STATIC METHODS---
36    
37     //---CONSTRUCTORS---
38    
39     /**
40     * Constructs and shows the dialog for the user
41     */
42 ajm 1.2 public ConfigurationDialog() {
43 ajm 1.3 super(Conient.getFrame(), "Configuration Options", true);
44 ajm 1.2
45 ajm 1.3 // setup the buttoms
46     JPanel buttonPanel = new JPanel();
47     buttonPanel.setLayout(new BoxLayout(buttonPanel, BoxLayout.X_AXIS));
48     JButton ok = new JButton("OK");
49 ajm 1.4 ok.addActionListener(new ActionListener() {
50     public void actionPerformed(ActionEvent e) {
51     setNewSettingsAndClose();
52     }
53     });
54    
55     JButton cancel = new JButton("Cancel");
56 ajm 1.3 cancel.addActionListener(new ActionListener() {
57     public void actionPerformed(ActionEvent e) {
58     dispose();
59     }
60     });
61     buttonPanel.add(Box.createHorizontalGlue());
62     buttonPanel.add(ok);
63     buttonPanel.add(cancel);
64    
65    
66     // setup the options panes
67 ajm 1.5 JTabbedPane center = new JTabbedPane();
68     //center.setLayout(new BoxLayout(center, BoxLayout.Y_AXIS));
69 ajm 1.3
70     // client options
71 ajm 1.5 center.addTab("Client Options", createClientOptions());
72 ajm 1.3
73 ajm 1.4 // server options
74 ajm 1.5 center.addTab("Server Options", createServerOptions());
75 ajm 1.4
76     // firewall options
77 ajm 1.5 center.addTab("Firewall Options", createFirewallOptions());
78 ajm 1.4
79     // data options
80 ajm 1.5 center.addTab("Data Options", createDataOptions());
81 ajm 1.4
82     // display the current settings
83     getCurrentSettings();
84    
85     // set the window up
86     getContentPane().add(buttonPanel, "South");
87     getContentPane().add(center, "Center");
88     pack();
89     setLocationRelativeTo(Conient.getFrame());
90     setResizable(false);
91     setVisible(true);
92     }
93    
94     //---PUBLIC METHODS---
95    
96     //---PRIVATE METHODS---
97 ajm 1.5
98 ajm 1.4 private JPanel createClientOptions() {
99     JPanel clientPanel = new JPanel();
100     clientPanel.setLayout(new BoxLayout(clientPanel, BoxLayout.Y_AXIS));
101 ajm 1.3 JLabel nameLabel = new JLabel("Client name:");
102 ajm 1.4 nameLabel.setHorizontalAlignment(JLabel.RIGHT);
103     name = new JTextField(20);
104 ajm 1.3 JPanel nameBox = new JPanel();
105 ajm 1.4 nameBox.setLayout(new GridLayout(1,2));
106     nameBox.add(nameLabel);
107     nameBox.add(name);
108     clientPanel.add(nameBox);
109 ajm 1.5
110     JPanel lists = new JPanel();
111     lists.setLayout(new BoxLayout(lists, BoxLayout.X_AXIS));
112    
113     JPanel knownHostsPanel = new JPanel();
114     knownHostsPanel.setLayout(new BoxLayout(knownHostsPanel, BoxLayout.Y_AXIS));
115     hostDiscoveryMode = new JCheckBox("Discover new hosts from the server");
116     knownHostsPanel.add(hostDiscoveryMode);
117     knownHostsPanel.setBorder(new TitledBorder(new LineBorder(new Color(0, 0, 102)), " Known Hosts "));
118     knownHosts = new JList();
119     knownHosts.setVisibleRowCount(10);
120     JScrollPane knownHostsScrollPane = new JScrollPane(knownHosts);
121     knownHostsPanel.add(knownHostsScrollPane);
122     JLabel newHostLabel = new JLabel("New host:");
123     newHostLabel.setHorizontalAlignment(JLabel.RIGHT);
124     newHost = new JTextField(20);
125     JButton newHostButton = new JButton("Add to known hosts");
126 ajm 1.6 newHostButton.addActionListener(new ActionListener() {
127     public void actionPerformed(ActionEvent e) {
128     knownHostsModel.addElement(newHost.getText());
129     newHost.setText("");
130     }
131     });
132 ajm 1.5 JPanel newHostBox = new JPanel();
133     newHostBox.setLayout(new GridLayout(1,3));
134     newHostBox.add(newHostLabel);
135     newHostBox.add(newHost);
136    
137     knownHostsPanel.add(newHostBox);
138     knownHostsPanel.add(newHostButton);
139     lists.add(knownHostsPanel);
140    
141    
142     JPanel addRemoveBox = new JPanel();
143     addRemoveBox.setLayout(new BoxLayout(addRemoveBox, BoxLayout.Y_AXIS));
144     addRemoveBox.add(Box.createGlue());
145     JButton add = new JButton(">>>");
146 ajm 1.6 add.addActionListener(new ActionListener() {
147     public void actionPerformed(ActionEvent e) {
148     Object[] selected = knownHosts.getSelectedValues();
149     for(int x = 0; x < selected.length; x++) {
150     knownHostsModel.removeElement(selected[x]);
151     hostListModel.addElement(selected[x]);
152     }
153     }
154     });
155    
156 ajm 1.5 addRemoveBox.add(add);
157     addRemoveBox.add(Box.createGlue());
158     JButton remove = new JButton("<<<");
159 ajm 1.6 remove.addActionListener(new ActionListener() {
160     public void actionPerformed(ActionEvent e) {
161     Object[] selected = hostList.getSelectedValues();
162     for(int x = 0; x < selected.length; x++) {
163     hostListModel.removeElement(selected[x]);
164     knownHostsModel.addElement(selected[x]);
165     }
166     }
167     });
168 ajm 1.5 addRemoveBox.add(remove);
169     addRemoveBox.add(Box.createGlue());
170     lists.add(addRemoveBox);
171    
172     JPanel hostListPanel = new JPanel();
173     hostListPanel.setLayout(new BoxLayout(hostListPanel, BoxLayout.Y_AXIS));
174     useHostList = new JCheckBox("Only monitor hosts in this list");
175     hostListPanel.add(useHostList);
176     hostListPanel.setBorder(new TitledBorder(new LineBorder(new Color(0, 0, 102)), " Hosts To Monitor "));
177     hostList = new JList();
178     hostList.setVisibleRowCount(10);
179     JScrollPane hostListScrollPane = new JScrollPane(hostList);
180     hostListPanel.add(hostListScrollPane);
181     lists.add(hostListPanel);
182    
183     clientPanel.add(lists);
184 ajm 1.4 return clientPanel;
185     }
186 ajm 1.3
187 ajm 1.4 private JPanel createServerOptions() {
188 ajm 1.3 JPanel serverPanel = new JPanel();
189     serverPanel.setLayout(new BoxLayout(serverPanel, BoxLayout.Y_AXIS));
190     JLabel serverLabel = new JLabel("i-scream Server:");
191 ajm 1.4 serverLabel.setHorizontalAlignment(JLabel.RIGHT);
192     server = new JTextField(20);
193     JPanel serverBox = new JPanel();
194     serverBox.setLayout(new GridLayout(1,2));
195 ajm 1.3 serverBox.add(serverLabel);
196     serverBox.add(server);
197     serverPanel.add(serverBox);
198    
199     JLabel portLabel = new JLabel("Client interface port:");
200 ajm 1.4 portLabel.setHorizontalAlignment(JLabel.RIGHT);
201     port = new JTextField(4);
202     JPanel portBox = new JPanel();
203     portBox.setLayout(new GridLayout(1,2));
204 ajm 1.3 portBox.add(portLabel);
205     portBox.add(port);
206     serverPanel.add(portBox);
207    
208 ajm 1.4 connectControl = new JCheckBox("Automatically connect the control channel");
209 ajm 1.3 serverPanel.add(connectControl);
210 ajm 1.4 connectData = new JCheckBox("Automatically connect the data channel");
211 ajm 1.3 serverPanel.add(connectData);
212 ajm 1.4 return serverPanel;
213     }
214 ajm 1.3
215 ajm 1.4 private JPanel createFirewallOptions() {
216 ajm 1.3 JPanel firewallPanel = new JPanel();
217     firewallPanel.setLayout(new BoxLayout(firewallPanel, BoxLayout.Y_AXIS));
218 ajm 1.4
219     useFirewall = new JCheckBox("Use firewall command to connect through to server");
220     firewallPanel.add(useFirewall);
221 ajm 1.3
222     JLabel commandLabel = new JLabel("Firewall command:");
223 ajm 1.4 commandLabel.setHorizontalAlignment(JLabel.RIGHT);
224     firewallCommand = new JTextField(20);
225     JPanel commandBox = new JPanel();
226     commandBox.setLayout(new GridLayout(1,2));
227 ajm 1.3 commandBox.add(commandLabel);
228 ajm 1.4 commandBox.add(firewallCommand);
229 ajm 1.5
230 ajm 1.3 firewallPanel.add(commandBox);
231    
232     JLabel waitLabel = new JLabel("Firewall wait time:");
233 ajm 1.4 waitLabel.setHorizontalAlignment(JLabel.RIGHT);
234     firewallWait = new JTextField(2);
235     JPanel waitBox = new JPanel();
236     waitBox.setLayout(new GridLayout(1,2));
237 ajm 1.3 waitBox.add(waitLabel);
238 ajm 1.4 waitBox.add(firewallWait);
239 ajm 1.5
240 ajm 1.3 firewallPanel.add(waitBox);
241    
242     JLabel fserverLabel = new JLabel("Firewall server:");
243 ajm 1.4 fserverLabel.setHorizontalAlignment(JLabel.RIGHT);
244     firewallServer = new JTextField(20);
245     JPanel fserverBox = new JPanel();
246     fserverBox.setLayout(new GridLayout(1,2));
247 ajm 1.3 fserverBox.add(fserverLabel);
248 ajm 1.4 fserverBox.add(firewallServer);
249 ajm 1.5
250 ajm 1.3 firewallPanel.add(fserverBox);
251 ajm 1.5 firewallPanel.add(Box.createGlue());
252 ajm 1.4 return firewallPanel;
253     }
254    
255     private JPanel createDataOptions() {
256     JPanel dataPanel = new JPanel();
257 ajm 1.5 dataPanel.setLayout(new BoxLayout(dataPanel, BoxLayout.Y_AXIS));
258    
259 ajm 1.4 displayQueue = new JCheckBox("Display server queue information");
260 ajm 1.5 dataPanel.add(displayQueue);
261 ajm 1.4 displayExtra = new JCheckBox("Display extra data found in packets");
262 ajm 1.5 dataPanel.add(displayExtra);
263 ajm 1.4 packetDump = new JCheckBox("Dump raw packet data to the console");
264 ajm 1.5 dataPanel.add(packetDump);
265 ajm 1.4
266 ajm 1.5 dataPanel.add(Box.createGlue());
267 ajm 1.4 return dataPanel;
268     }
269    
270     private void getCurrentSettings() {
271     name.setText(config.getProperty("clientname"));
272     server.setText(config.getProperty("control.server"));
273     port.setText(config.getProperty("control.port"));
274     connectControl.setSelected(config.getProperty("control.onstartconnect").equals("1"));
275     connectData.setSelected(config.getProperty("data.onstartconnect").equals("1"));
276     firewallCommand.setText(config.getProperty("firewall.command"));
277     firewallCommand.moveCaretPosition(0);
278     firewallWait.setText(config.getProperty("firewall.commandwait"));
279     firewallServer.setText(config.getProperty("firewall.server"));
280     displayQueue.setSelected(config.getProperty("displayQueueInformation").equals("1"));
281     displayExtra.setSelected(config.getProperty("displayExtraData").equals("1"));
282     packetDump.setSelected(config.getProperty("packetDump").equals("1"));
283     useFirewall.setSelected(config.getProperty("useFirewall").equals("1"));
284 ajm 1.5 hostDiscoveryMode.setSelected(config.getProperty("hostDiscoveryMode").equals("1"));
285     useHostList.setSelected(config.getProperty("useHostList").equals("1"));
286     prepareLists();
287     }
288    
289    
290     private void prepareLists() {
291     knownHostsModel = new DefaultListModel();
292     hostListModel = new DefaultListModel();
293     String configKnownHostsList = config.getProperty("knownHostsList");
294     String configHostList = config.getProperty("hostList");
295     StringTokenizer st;
296     st = new StringTokenizer(configKnownHostsList, ";");
297     while(st.hasMoreTokens()) {
298 ajm 1.6 // check its not in the other list...as we only want one entry in the two
299     String knownHost = st.nextToken();
300     if(configHostList.indexOf(knownHost) == -1) knownHostsModel.addElement(knownHost);
301 ajm 1.5 }
302     st = new StringTokenizer(configHostList, ";");
303     while(st.hasMoreTokens()) {
304     hostListModel.addElement(st.nextToken());
305     }
306     knownHosts.setModel(knownHostsModel);
307     hostList.setModel(hostListModel);
308 ajm 1.4 }
309    
310     private void setNewSettingsAndClose() {
311 ajm 1.5
312 ajm 1.4 config.setProperty("clientname", name.getText().trim());
313     config.setProperty("control.server", server.getText().trim());
314     config.setProperty("control.port", port.getText().trim());
315     config.setProperty("firewall.command", firewallCommand.getText().trim());
316     config.setProperty("firewall.commandwait", firewallWait.getText().trim());
317     config.setProperty("firewall.server", firewallServer.getText().trim());
318     if (useFirewall.isSelected()) {
319     config.setProperty("useFirewall", "1");
320     } else {
321     config.setProperty("useFirewall", "0");
322     }
323     if (connectControl.isSelected()) {
324     config.setProperty("control.onstartconnect", "1");
325     } else {
326     config.setProperty("control.onstartconnect", "0");
327     }
328     if (connectData.isSelected()) {
329     config.setProperty("data.onstartconnect", "1");
330     } else {
331     config.setProperty("data.onstartconnect", "0");
332     }
333     if (packetDump.isSelected()) {
334     config.setProperty("packetDump", "1");
335     } else {
336     config.setProperty("packetDump", "0");
337     }
338     if (displayExtra.isSelected()) {
339     config.setProperty("displayExtraData", "1");
340     } else {
341     config.setProperty("displayExtraData", "0");
342     }
343     if (displayQueue.isSelected()) {
344     config.setProperty("displayQueueInformation", "1");
345     } else {
346     config.setProperty("displayQueueInformation", "0");
347     }
348 ajm 1.5 if (useHostList.isSelected()) {
349     config.setProperty("useHostList", "1");
350     } else {
351     config.setProperty("useHostList", "0");
352     }
353     if (hostDiscoveryMode.isSelected()) {
354     config.setProperty("hostDiscoveryMode", "1");
355     } else {
356     config.setProperty("hostDiscoveryMode", "0");
357     }
358 ajm 1.6
359     // sort out the hosts lists
360    
361     // known hosts are both the known hosts list AND the host list
362     // first the hostlist...
363     Object[] hostListSaveArray = hostListModel.toArray();
364     String hostListSave = "";
365     for(int x = 0; x < hostListSaveArray.length; x++) {
366     hostListSave += (String) hostListSaveArray[x] + ";";
367     }
368     Object[] knownHostsListSaveArray = knownHostsModel.toArray();
369     String knownHostsListSave = "";
370     for(int x = 0; x < knownHostsListSaveArray.length; x++) {
371     knownHostsListSave += (String) knownHostsListSaveArray[x] + ";";
372     }
373     knownHostsListSave += hostListSave;
374     config.setProperty("hostList", hostListSave);
375     config.setProperty("knownHostsList", knownHostsListSave);
376 ajm 1.4 dispose();
377 ajm 1.1 }
378    
379 ajm 1.4 //---ACCESSOR/MUTATOR METHODS---
380 ajm 1.1
381 ajm 1.4 //---ATTRIBUTES---
382 ajm 1.1
383 ajm 1.5 Configuration config = Configuration.getInstance();
384    
385     private JTextField newHost;
386    
387     private JList knownHosts;
388     private JList hostList;
389     private JCheckBox hostDiscoveryMode;
390     private JCheckBox useHostList;
391 ajm 1.4 private JTextField name;
392     private JTextField port;
393     private JTextField server;
394     private JCheckBox connectControl;
395     private JCheckBox connectData;
396     private JCheckBox useFirewall;
397     private JTextField firewallCommand;
398     private JTextField firewallWait;
399     private JTextField firewallServer;
400     private JCheckBox displayQueue;
401     private JCheckBox displayExtra;
402     private JCheckBox packetDump;
403 ajm 1.1
404 ajm 1.5 private DefaultListModel knownHostsModel;
405     private DefaultListModel hostListModel;
406 ajm 1.1
407     //---STATIC ATTRIBUTES---
408    
409     }