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.8
Committed: Fri Mar 16 19:47:53 2001 UTC (23 years, 2 months ago) by ajm
Branch: MAIN
Changes since 1.7: +84 -21 lines
Log Message:
Updated the display of the configuration options.

File Contents

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