Docjar: A Java Source and Docuemnt Enginecom.*    java.*    javax.*    org.*    all    new    plug-in

Quick Search    Search Deep

Source code: org/jabbee/Jabbee.java


1   /*
2    * Jabbee.java
3    *
4    * Created on October 23, 2002, 3:32 AM
5    *
6    *
7    * License:
8    *
9    * The contents of this file are subject to the Jabber Open Source
10   * License Version 1.0 (the "License"). You may not copy or use this
11   * file, in either source code or executable form, except in compliance
12   * with the License. You may obtain a copy of the License at
13   * http://www.jabber.com/license/ or at http://www.opensource.org/.
14   * Software distributed under the License is distributed on an "AS IS" 
15   * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See
16   * the License for the specific language governing rights and limitations
17   * under the License.
18   *
19   * Copyrights:
20   *
21   * Portions created by or assigned to Jabber.com, Inc. are Copyright
22   * (c) 1999-2000 Jabber.com, Inc. All Rights Reserved. Contact information
23   * for Jabber.com, Inc. is available at http://www.jabber.com/. Portions
24   * Copyright (c) 1998-1999 Jeremie Miller.
25   *
26   * Acknowledgements:
27   *
28   * Special thanks to the Jabber Open Source Contributors for their
29   * suggestions and support of Jabber.
30   *
31   */
32  
33  package org.jabbee;
34  
35  import java.io.File;
36  import java.io.IOException;
37  import javax.swing.JOptionPane;
38  import javax.xml.parsers.DocumentBuilder;
39  import javax.xml.parsers.DocumentBuilderFactory;
40  import javax.xml.parsers.FactoryConfigurationError;
41  import javax.xml.parsers.ParserConfigurationException;
42  import org.jabbee.resources.PreferencesHandler;
43  import org.jabbee.ui.dialogs.*;
44  import org.jabbee.ui.panels.*;
45  import org.jabbee.util.ConfigReader;
46  import org.jabbee.util.ConfigWriter;
47  import org.w3c.dom.Document;
48  import org.xml.sax.SAXException;
49  
50  /** Jabber v0.01 - Main Class of the configuration utility for jabberd.
51   *
52   * @author  Gregory Kaczmarczyk
53   *
54   * @version 0.02
55   */
56  public class Jabbee extends javax.swing.JFrame {
57      
58      /** Creates new form Jabbee
59       *
60       * @param handler Jabbee will start using the following PreferencesHandler
61       */
62      public Jabbee(PreferencesHandler handler) {
63  
64          prefsHandler = handler;
65  
66          initComponents();
67  
68          addCards();
69          initForm();
70          loadConfigFile();
71  
72          setSize(560,360);
73          centerWindow();
74      }
75      
76      /** Creates new form Jabbee
77       *
78       * @param file The jabberd configuration file to use. Jabbee will create a
79       *             new PreferencesHandler.
80       */
81      public Jabbee(String file) {
82          prefs = java.util.prefs.Preferences.userRoot();
83          prefsHandler = new PreferencesHandler(prefs);
84          prefsHandler.setConfigFile(file);
85  
86          initComponents();
87  
88          addCards();
89          initForm();
90          loadConfigFile();
91  
92          setSize(560,350);
93          centerWindow();
94      }
95  
96      /** This method is called from within the constructor to
97       * initialize the form.
98       * WARNING: Do NOT modify this code. The content of this method is
99       * always regenerated by the Form Editor.
100      */
101     private void initComponents() {//GEN-BEGIN:initComponents
102         mainConfigPanel = new javax.swing.JPanel();
103         configListScrollPane = new javax.swing.JScrollPane();
104         configList = new javax.swing.JList();
105         configCardPanel = new javax.swing.JPanel();
106         actionPanel = new javax.swing.JPanel();
107         saveButton = new javax.swing.JButton();
108         quitButton = new javax.swing.JButton();
109         menuBar = new javax.swing.JMenuBar();
110         fileMenu = new javax.swing.JMenu();
111         reloadFileMenu = new javax.swing.JMenuItem();
112         saveFileMenu = new javax.swing.JMenuItem();
113         fileMenuSeparator = new javax.swing.JSeparator();
114         quitFileMenu = new javax.swing.JMenuItem();
115         editMenu = new javax.swing.JMenu();
116         settingsEditMenu = new javax.swing.JMenuItem();
117         helpMenu = new javax.swing.JMenu();
118         toolTipsHelpMenu = new javax.swing.JCheckBoxMenuItem();
119         sep0HelpMenu = new javax.swing.JSeparator();
120         aboutHelpMenu = new javax.swing.JMenuItem();
121 
122         setDefaultCloseOperation(javax.swing.WindowConstants.DO_NOTHING_ON_CLOSE);
123         setTitle("Jabbee");
124         setIconImage(new javax.swing.ImageIcon(getClass().getResource("/org/jabbee/resources/images/logo-16.png")).getImage());
125         addWindowListener(new java.awt.event.WindowAdapter() {
126             public void windowClosing(java.awt.event.WindowEvent evt) {
127                 exitForm(evt);
128             }
129         });
130 
131         mainConfigPanel.setLayout(new java.awt.BorderLayout());
132 
133         mainConfigPanel.setBorder(new javax.swing.border.EtchedBorder());
134         configList.setModel(new javax.swing.AbstractListModel() {
135             String[] strings = { "General", "Filters", "Logging", "Filesystem", "Security", "Connections", "Input/Output", "Components", "Additional Services" };
136             public int getSize() { return strings.length; }
137             public Object getElementAt(int i) { return strings[i]; }
138         });
139         configList.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
140         configList.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
141             public void valueChanged(javax.swing.event.ListSelectionEvent evt) {
142                 configListValueChanged(evt);
143             }
144         });
145 
146         configListScrollPane.setViewportView(configList);
147 
148         mainConfigPanel.add(configListScrollPane, java.awt.BorderLayout.WEST);
149 
150         configCardPanel.setLayout(new java.awt.CardLayout());
151 
152         configCardPanel.setLayout(configCards);
153         mainConfigPanel.add(configCardPanel, java.awt.BorderLayout.CENTER);
154 
155         getContentPane().add(mainConfigPanel, java.awt.BorderLayout.CENTER);
156 
157         saveButton.setMnemonic(java.awt.event.KeyEvent.VK_S);
158         saveButton.setText("Save Configuration");
159         saveButton.addActionListener(new java.awt.event.ActionListener() {
160             public void actionPerformed(java.awt.event.ActionEvent evt) {
161                 saveButtonActionPerformed(evt);
162             }
163         });
164 
165         actionPanel.add(saveButton);
166 
167         quitButton.setMnemonic(java.awt.event.KeyEvent.VK_Q);
168         quitButton.setText("Quit");
169         quitButton.addActionListener(new java.awt.event.ActionListener() {
170             public void actionPerformed(java.awt.event.ActionEvent evt) {
171                 quitButtonActionPerformed(evt);
172             }
173         });
174 
175         actionPanel.add(quitButton);
176 
177         getContentPane().add(actionPanel, java.awt.BorderLayout.SOUTH);
178 
179         fileMenu.setMnemonic(java.awt.event.KeyEvent.VK_F);
180         fileMenu.setText("File");
181         reloadFileMenu.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_R, java.awt.event.InputEvent.CTRL_MASK));
182         reloadFileMenu.setMnemonic(java.awt.event.KeyEvent.VK_R);
183         reloadFileMenu.setText("Reload Config");
184         reloadFileMenu.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/jabbee/ui/images/Redo16.gif")));
185         reloadFileMenu.addActionListener(new java.awt.event.ActionListener() {
186             public void actionPerformed(java.awt.event.ActionEvent evt) {
187                 reloadFileMenuActionPerformed(evt);
188             }
189         });
190 
191         fileMenu.add(reloadFileMenu);
192         saveFileMenu.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_S, java.awt.event.InputEvent.CTRL_MASK));
193         saveFileMenu.setMnemonic(java.awt.event.KeyEvent.VK_S);
194         saveFileMenu.setText("Save Config");
195         saveFileMenu.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/jabbee/ui/images/Save16.gif")));
196         saveFileMenu.addActionListener(new java.awt.event.ActionListener() {
197             public void actionPerformed(java.awt.event.ActionEvent evt) {
198                 saveFileMenuActionPerformed(evt);
199             }
200         });
201 
202         fileMenu.add(saveFileMenu);
203         fileMenu.add(fileMenuSeparator);
204         quitFileMenu.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_Q, java.awt.event.InputEvent.CTRL_MASK));
205         quitFileMenu.setMnemonic(java.awt.event.KeyEvent.VK_Q);
206         quitFileMenu.setText("Quit");
207         quitFileMenu.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/jabbee/ui/images/Exit16.gif")));
208         quitFileMenu.addActionListener(new java.awt.event.ActionListener() {
209             public void actionPerformed(java.awt.event.ActionEvent evt) {
210                 quitFileMenuActionPerformed(evt);
211             }
212         });
213 
214         fileMenu.add(quitFileMenu);
215         menuBar.add(fileMenu);
216         editMenu.setMnemonic(java.awt.event.KeyEvent.VK_E);
217         editMenu.setText("Edit");
218         settingsEditMenu.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_SEMICOLON, java.awt.event.InputEvent.CTRL_MASK));
219         settingsEditMenu.setMnemonic(java.awt.event.KeyEvent.VK_S);
220         settingsEditMenu.setText("Server Settings...");
221         settingsEditMenu.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/jabbee/ui/images/Preferences16.gif")));
222         settingsEditMenu.addActionListener(new java.awt.event.ActionListener() {
223             public void actionPerformed(java.awt.event.ActionEvent evt) {
224                 settingsEditMenuActionPerformed(evt);
225             }
226         });
227 
228         editMenu.add(settingsEditMenu);
229         menuBar.add(editMenu);
230         helpMenu.setMnemonic(java.awt.event.KeyEvent.VK_H);
231         helpMenu.setText("Help");
232         toolTipsHelpMenu.setAccelerator(javax.swing.KeyStroke.getKeyStroke(java.awt.event.KeyEvent.VK_T, java.awt.event.InputEvent.CTRL_MASK));
233         toolTipsHelpMenu.setMnemonic(java.awt.event.KeyEvent.VK_T);
234         toolTipsHelpMenu.setText("Use Tooltips");
235         toolTipsHelpMenu.addItemListener(new java.awt.event.ItemListener() {
236             public void itemStateChanged(java.awt.event.ItemEvent evt) {
237                 toolTipsHelpMenuItemStateChanged(evt);
238             }
239         });
240 
241         helpMenu.add(toolTipsHelpMenu);
242         helpMenu.add(sep0HelpMenu);
243         aboutHelpMenu.setMnemonic(java.awt.event.KeyEvent.VK_A);
244         aboutHelpMenu.setText("About...");
245         aboutHelpMenu.setIcon(new javax.swing.ImageIcon(getClass().getResource("/org/jabbee/ui/images/About16.gif")));
246         aboutHelpMenu.addActionListener(new java.awt.event.ActionListener() {
247             public void actionPerformed(java.awt.event.ActionEvent evt) {
248                 aboutHelpMenuActionPerformed(evt);
249             }
250         });
251 
252         helpMenu.add(aboutHelpMenu);
253         menuBar.add(helpMenu);
254         setJMenuBar(menuBar);
255 
256         pack();
257     }//GEN-END:initComponents
258 
259     private void saveFileMenuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveFileMenuActionPerformed
260         saveConfigFile();
261     }//GEN-LAST:event_saveFileMenuActionPerformed
262 
263     private void reloadFileMenuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_reloadFileMenuActionPerformed
264         loadConfigFile();
265     }//GEN-LAST:event_reloadFileMenuActionPerformed
266 
267     private void toolTipsHelpMenuItemStateChanged(java.awt.event.ItemEvent evt) {//GEN-FIRST:event_toolTipsHelpMenuItemStateChanged
268         if (toolTipsHelpMenu.isSelected()) {
269             javax.swing.ToolTipManager.sharedInstance().setEnabled(true);
270             prefsHandler.setToolTips(true);
271         } else {
272             javax.swing.ToolTipManager.sharedInstance().setEnabled(false);
273             prefsHandler.setToolTips(false);
274         }
275     }//GEN-LAST:event_toolTipsHelpMenuItemStateChanged
276 
277     private void configListValueChanged(javax.swing.event.ListSelectionEvent evt) {//GEN-FIRST:event_configListValueChanged
278         int index = configList.getSelectedIndex();
279         configCards.show(configCardPanel, "Card" + index);
280         switch (index) {
281             case 0:
282                 general.resetTab();
283                 break;
284             case 5:
285                 connections.resetTab();
286                 break;
287             case 7:
288                 components.resetTab();
289                 break;
290         }
291     }//GEN-LAST:event_configListValueChanged
292 
293     private void quitButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_quitButtonActionPerformed
294         if (!unsavedChanges)
295             System.exit(0);
296         else {
297         }
298     }//GEN-LAST:event_quitButtonActionPerformed
299 
300     private void saveButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_saveButtonActionPerformed
301         saveConfigFile();
302     }//GEN-LAST:event_saveButtonActionPerformed
303 
304     private void aboutHelpMenuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_aboutHelpMenuActionPerformed
305         AboutWindow about = new AboutWindow(this, true);
306         about.show();
307     }//GEN-LAST:event_aboutHelpMenuActionPerformed
308 
309     private void settingsEditMenuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_settingsEditMenuActionPerformed
310         ServerSettings ss = new ServerSettings(this, true);
311         ss.setPrefs(prefsHandler);
312         ss.show();
313     }//GEN-LAST:event_settingsEditMenuActionPerformed
314 
315     private void quitFileMenuActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_quitFileMenuActionPerformed
316         if (!unsavedChanges)
317             System.exit(0);
318         else {
319         }
320     }//GEN-LAST:event_quitFileMenuActionPerformed
321     
322     /** Exit the Application */
323     private void exitForm(java.awt.event.WindowEvent evt) {//GEN-FIRST:event_exitForm
324         if (!unsavedChanges)
325             System.exit(0);
326         else {
327         }
328     }//GEN-LAST:event_exitForm
329 
330     private void centerWindow() {
331         java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
332         this.setLocation(screenSize.width/2 - (this.getPreferredSize().width/2), screenSize.height/2 - (this.getPreferredSize().height/2));
333     }
334 
335     private void addCards() {
336         general = new General(this);
337         configCardPanel.add(general, "Card0");
338         filters = new Filters();
339         configCardPanel.add(filters, "Card1");
340         logging = new Logging();
341         logging.setPrefsHandler(prefsHandler);
342         configCardPanel.add(logging, "Card2");
343         filesystem = new Filesystem();
344         filesystem.setPrefsHandler(prefsHandler);
345         configCardPanel.add(filesystem, "Card3");
346         security = new Security(this);
347         security.setPrefsHandler(prefsHandler);
348         configCardPanel.add(security, "Card4");
349         connections = new Connections(this);
350         configCardPanel.add(connections, "Card5");
351         inputOutput = new InputOutput();
352         configCardPanel.add(inputOutput, "Card6");
353         components = new Components(this);
354         configCardPanel.add(components, "Card7");
355         services = new AdditionalServices();
356         configCardPanel.add(services, "Card8");
357     }
358 
359     private void initForm() {
360         if (prefsHandler.areToolTipsEnabled()) {
361             toolTipsHelpMenu.setSelected(true);
362             javax.swing.ToolTipManager.sharedInstance().setEnabled(true);
363         } else {
364             javax.swing.ToolTipManager.sharedInstance().setEnabled(false);
365         }
366         configList.setSelectedIndex(0);
367     }
368 
369     private void loadConfigFile() {
370         try {
371             File file = new File(prefsHandler.getConfigFile());
372             DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
373             factory.setIgnoringElementContentWhitespace(true);
374             DocumentBuilder builder = factory.newDocumentBuilder();
375             configDoc = builder.parse(file);
376             ConfigReader cr = new ConfigReader(configDoc);
377 
378             if (cr.validateRoot("jabber")) {
379                 cr.setGeneralPanel(general);
380                 cr.setFiltersPanel(filters);
381                 cr.setLoggingPanel(logging);
382                 cr.setFilesystemPanel(filesystem);
383                 cr.setSecurityPanel(security);
384                 cr.setConnectionsPanel(connections);
385                 cr.setInputOutputPanel(inputOutput);
386                 cr.setComponentsPanel(components);
387                 cr.setServicePanel(services);
388 
389                 cr.start();
390             } else
391                 JOptionPane.showMessageDialog(this, "This does not appear to be a valid jabber configuration file.", "Invalid Jabber Config File", JOptionPane.ERROR_MESSAGE);
392         } catch (IOException e) {
393             JOptionPane.showMessageDialog(this, "IOException", "IOException: " + e.toString(), JOptionPane.ERROR_MESSAGE);
394         } catch (FactoryConfigurationError e) {
395             JOptionPane.showMessageDialog(this, "FactoryConfigurationError", "FactoryConfigurationError: " + e.toString(), JOptionPane.ERROR_MESSAGE);
396         } catch (ParserConfigurationException e) {
397             JOptionPane.showMessageDialog(this, "ParserConfigurationException", "ParserConfigurationException: " + e.toString(), JOptionPane.ERROR_MESSAGE);
398         } catch (SAXException e) {
399             JOptionPane.showMessageDialog(this, "SAXException", "SAXException: " + e.toString(), JOptionPane.ERROR_MESSAGE);
400         }
401     }
402 
403     private void saveConfigFile() {
404         File file = new File(prefsHandler.getConfigFile());
405         ConfigWriter cw = new ConfigWriter(configDoc, file);
406         cw.setParent(this);
407 
408         cw.setGeneralPanel(general);
409         cw.setFiltersPanel(filters);
410         cw.setLoggingPanel(logging);
411         cw.setFilesystemPanel(filesystem);
412         cw.setSecurityPanel(security);
413         cw.setConnectionsPanel(connections);
414         cw.setInputOutputPanel(inputOutput);
415         cw.setComponentsPanel(components);
416         cw.setServicePanel(services);
417 
418         cw.start();
419     }
420 
421     /**
422      * @param args the command line arguments
423      */
424     public static void main(String args[]) {
425         String file = "";
426         java.util.prefs.Preferences p = java.util.prefs.Preferences.userRoot();
427         PreferencesHandler handler = new PreferencesHandler(p);
428         Jabbee j;
429 
430         for (int i = 0; i < args.length; i++) {
431             if (args[i].endsWith("-h") || args[i].endsWith("?")) {
432                 System.out.println("Jabbee v0.01 - Jabber Daemon Configuration Tool");
433                 System.out.println("");
434                 System.out.println("Usage: java -jar Jabbee.jar [options] [jabberconfig]");
435                 System.out.println("");
436                 System.out.println("Options:");
437                 System.out.println("         -h   Display this help");
438                 System.out.println("");
439                 System.out.println("Jabberconfig:");
440                 System.out.println("         Full path to jabberd configuration file");
441                 System.out.println("");
442                 System.exit(0);
443             } else if (i == (args.length - 1)) {
444                 if (new java.io.File(args[i]).exists())
445                     file = args[i];
446                 else
447                     System.out.println("File \"" + args[i] + "\" appears invalid. Using default...");
448             }
449         }
450 
451         if ((file.length() == 0) && (handler.getConfigFile().length() == 0)) {
452             getConfigPath();
453         } else if (file.length() != 0) {
454             if (new File(file).exists()) {
455                 j = new Jabbee(file);
456                 j.show();
457             } else
458                 getConfigPath();
459         } else {
460             if (new File(handler.getConfigFile()).exists()) {
461                 j = new Jabbee(handler);
462                 j.show();
463             } else
464                 getConfigPath();
465         }
466 
467     }
468 
469     private static void getConfigPath() {
470         GetConfigPath cp = new GetConfigPath();
471         cp.show();
472     }
473 
474     // Variables declaration - do not modify//GEN-BEGIN:variables
475     private javax.swing.JMenu fileMenu;
476     private javax.swing.JScrollPane configListScrollPane;
477     private javax.swing.JMenuItem reloadFileMenu;
478     private javax.swing.JMenuBar menuBar;
479     private javax.swing.JPanel configCardPanel;
480     private javax.swing.JSeparator sep0HelpMenu;
481     private javax.swing.JPanel actionPanel;
482     private javax.swing.JMenuItem aboutHelpMenu;
483     private javax.swing.JMenuItem quitFileMenu;
484     private javax.swing.JSeparator fileMenuSeparator;
485     private javax.swing.JPanel mainConfigPanel;
486     private javax.swing.JButton quitButton;
487     private javax.swing.JMenuItem saveFileMenu;
488     private javax.swing.JCheckBoxMenuItem toolTipsHelpMenu;
489     private javax.swing.JButton saveButton;
490     private javax.swing.JMenuItem settingsEditMenu;
491     private javax.swing.JMenu editMenu;
492     private javax.swing.JList configList;
493     private javax.swing.JMenu helpMenu;
494     // End of variables declaration//GEN-END:variables
495     private java.util.prefs.Preferences prefs;
496     private PreferencesHandler prefsHandler;
497 
498     private java.awt.CardLayout configCards = new java.awt.CardLayout();
499     /** Retains value of unsaved changes throughout configuration process */
500     public boolean unsavedChanges = false;
501     //public String configFile = "";
502     private Document configDoc;
503 
504     private General general;
505     private Filters filters;
506     private Logging logging;
507     private Filesystem filesystem;
508     private Security security;
509     private Connections connections;
510     private InputOutput inputOutput;
511     private Components components;
512     private AdditionalServices services;
513 }