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

Quick Search    Search Deep

Source code: org/relayirc/swingui/SetServerPanel.java


1   
2   /* 
3    * FILE: SetServerPanel.java 
4    * 
5    * The contents of this file are subject to the Mozilla Public License
6    * Version 1.0 (the "License"); you may not use this file except in
7    * compliance with the License. You may obtain a copy of the License at
8    * http://www.mozilla.org/MPL/
9    * 
10   * Software distributed under the License is distributed on an "AS IS"
11   * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
12   * License for the specific language governing rights and limitations
13   * under the License.
14   * 
15   * The Original Code is Relay IRC chat client.
16   * 
17   * The Initial Developer of the Original Code is David M. Johnson.
18   * Portions created by David M. Johnson are Copyright (C) 1998. 
19   * All Rights Reserved.
20   *
21   * Contributor(s): No contributors to this file.
22   */
23  package org.relayirc.swingui;
24  import org.relayirc.chatengine.*;
25  import org.relayirc.swingutil.*;
26  import org.relayirc.util.*;
27  
28  import java.util.*;
29  
30  // These imports are only needed for debugging
31  import java.io.*;
32  import java.awt.*;
33  import java.awt.event.*;
34  import javax.swing.*;
35  
36  /**
37   * Allows user to choose one server from the server list using 
38   * three combo boxes: one for selecting the network, one for selecting
39   * the server and one for selecting the port.
40   *
41   * @author David M. Johnson
42   */
43  public class SetServerPanel extends javax.swing.JPanel {
44  
45     private ServerList  _servers = new ServerList();  // empty server list
46     private ChatOptions _options = new ChatOptions(); // empty options object
47  
48     // Variables declaration - do not modify//GEN-BEGIN:variables
49     private javax.swing.JComboBox _groupCombo;
50     private javax.swing.JComboBox _serverCombo;
51     private javax.swing.JComboBox _portCombo;
52     private javax.swing.JLabel    _groupLabel;
53     private javax.swing.JLabel    _serverLabel;
54     private javax.swing.JLabel    _portLabel;
55     // End of variables declaration//GEN-END:variables
56  
57  
58     //-----------------------------------------------------------------
59     /** Initializes the Form */
60     public SetServerPanel() {
61        initComponents ();
62     }
63     //-----------------------------------------------------------------
64     public void loadServerList(ServerList servers, ChatOptions options) {
65        _servers = servers;
66        _options = options;
67  
68        // Load the group combo with group names
69        if (_groupCombo.getItemCount() > 0) { 
70           _groupCombo.removeAllItems();
71        }
72        Hashtable groupHash = new Hashtable();
73        for (int i=0; i<servers.getServerCount(); i++) {
74           groupHash.put(servers.getServerAt(i).getGroup().trim(),"dummy");
75        }
76        Vector groups = new Vector();
77        for (Enumeration e = groupHash.keys() ; e.hasMoreElements() ;) {
78           groups.addElement(new ComparableString((String)e.nextElement()));
79        }
80        QuickSort.quicksort(groups,true);
81        for (Enumeration e = groups.elements() ; e.hasMoreElements() ;) {
82           String gname = ((ComparableString)e.nextElement()).getString();
83           _groupCombo.addItem(gname);
84        }
85  
86        if (_options.getServer() != null) {
87           _groupCombo.setSelectedItem(_options.getServer().getGroup().trim());
88           _serverCombo.setSelectedItem(
89              new GuiObject(_options.getServer().getName(),_options.getServer()));
90           _portCombo.setSelectedItem(new Integer(_options.getServer().getPort()));
91        }
92     }
93     //-----------------------------------------------------------------
94     /**
95      * Returns server object currently specified by fields on panel.
96      * Will create new server object if necessary and possible.
97      * @return Server object specified by fields on panel or null on error.
98      */
99     public Server getServerObject() {
100 
101     if (_serverCombo.getSelectedItem() == null) {
102        return null;
103     }
104     if (_serverCombo.getSelectedItem() instanceof GuiObject) {
105        return (Server)((GuiObject)_serverCombo.getSelectedItem()).getObject();
106     }
107     else if (_serverCombo.getSelectedItem() instanceof String) {
108 
109        // Create new server based on combos
110        String server = ((String)_serverCombo.getSelectedItem()).trim();
111        if (server.length() != 0) {
112           String group = getGroup().trim();
113           group = group!=null ? group : new String();
114           int port = getPort();
115           port = port!=-1 ? port : 6667; // use 6667 if port is not valid int
116           
117           Server newServer = new Server(server,port,group);
118           _servers.addServer(newServer);
119           return newServer;
120        }
121      }
122      return null;
123    }
124    //-----------------------------------------------------------------
125    private void groupChanged() {
126       if (_serverCombo.getItemCount() > 0) { 
127          _serverCombo.removeAllItems();
128       }
129       if (_portCombo.getItemCount() > 0) { 
130          _portCombo.removeAllItems();
131       }
132       if (_groupCombo.getSelectedItem() != null) {
133 
134          // Load the server combo with server objects
135          if (_groupCombo.getSelectedItem() instanceof String) {
136 
137             String groupName = (String)_groupCombo.getSelectedItem();
138             for (int i=0; i<_servers.getServerCount(); i++) {
139                
140                Server server = _servers.getServerAt(i);
141                
142                if (server.getGroup().equals(groupName)) {
143                   GuiObject gobj = new GuiObject(server.getName(),server);
144                   gobj.setStringLength(30);
145                   _serverCombo.addItem(gobj);
146                }
147             }
148          }
149 
150       }
151    }
152    //-----------------------------------------------------------------
153    private void serverChanged() {
154 
155       if (_serverCombo.getSelectedItem() != null) {
156 
157          // Load the port combo based on the server selection
158          if (_serverCombo.getSelectedItem() instanceof GuiObject) {
159             if (_portCombo.getItemCount() > 0) {
160                _portCombo.removeAllItems(); 
161             }
162             Server server = (Server)((GuiObject)_serverCombo.getSelectedItem()).getObject();
163             for (int i=0; i<server.getPorts().length; i++) {
164                _portCombo.addItem(new Integer(server.getPorts()[i]));
165             }
166          }
167       }
168    }
169    //-----------------------------------------------------------------
170    /** Returns server host name as a string. */
171    public String getServerString() {
172       String serverString = null;
173       if (_serverCombo.getSelectedItem() != null) {
174          if (_serverCombo.getSelectedItem() instanceof String) {
175             serverString = (String)_serverCombo.getSelectedItem();
176          }
177          else if (_serverCombo.getSelectedItem() instanceof GuiObject) {
178             Server svr = (Server)((GuiObject)_serverCombo.getSelectedItem()).getObject();
179             serverString = svr.getName();
180          }
181       }
182       return serverString;
183    }
184    //-----------------------------------------------------------------
185    /** Returns selected group. */
186    public String getGroup() {
187       if (_groupCombo.getSelectedItem() != null) {
188          if (_groupCombo.getSelectedItem() instanceof String) {
189             return (String)_groupCombo.getSelectedItem();
190          }
191       }
192       return null;
193    }
194    //-----------------------------------------------------------------
195    /** Return selected port number or -1 on error */
196    public int getPort() {
197       if (_portCombo.getSelectedItem() != null) {
198          if (_portCombo.getSelectedItem() instanceof String) {
199             String portString = (String)_portCombo.getSelectedItem();
200             try {
201                return Integer.parseInt(portString);
202             }
203             catch (NumberFormatException ex) {
204                return -1;
205             }
206          }
207          else if (_portCombo.getSelectedItem() instanceof Integer) {
208             Integer i = (Integer)_portCombo.getSelectedItem();
209             return i.intValue();
210          }
211       }
212       return -1;
213    }
214    //-----------------------------------------------------------------
215 
216   /** This method is called from within the constructor to
217    * initialize the form.
218    * WARNING: Do NOT modify this code. The content of this method is
219    * always regenerated by the FormEditor.
220    */
221   private void initComponents () {//GEN-BEGIN:initComponents
222 
223     setLayout (new java.awt.GridBagLayout ());
224     java.awt.GridBagConstraints gridBagConstraints1;
225 
226     _groupCombo = new javax.swing.JComboBox ();
227     _groupCombo.setEditable (true);
228     _groupCombo.addItemListener (new java.awt.event.ItemListener () {
229         public void itemStateChanged (java.awt.event.ItemEvent evt) {
230           _groupComboItemStateChanged (evt);
231         }
232       }
233     );
234     gridBagConstraints1 = new java.awt.GridBagConstraints ();
235     gridBagConstraints1.gridx = 0;
236     gridBagConstraints1.gridy = 1;
237     add (_groupCombo, gridBagConstraints1);
238 
239     _serverCombo = new javax.swing.JComboBox ();
240     _serverCombo.setEditable (true);
241     _serverCombo.addItemListener (new java.awt.event.ItemListener () {
242         public void itemStateChanged (java.awt.event.ItemEvent evt) {
243           _serverComboItemStateChanged (evt);
244         }
245       }
246     );
247     gridBagConstraints1 = new java.awt.GridBagConstraints ();
248     gridBagConstraints1.gridy = 1;
249     add (_serverCombo, gridBagConstraints1);
250 
251     _portCombo = new javax.swing.JComboBox ();
252     _portCombo.setEditable (true);
253     gridBagConstraints1 = new java.awt.GridBagConstraints ();
254     gridBagConstraints1.gridx = 2;
255     gridBagConstraints1.gridy = 1;
256     add (_portCombo, gridBagConstraints1);
257 
258     _groupLabel = new javax.swing.JLabel ();
259     _groupLabel.setText ("Group");
260     gridBagConstraints1 = new java.awt.GridBagConstraints ();
261     add (_groupLabel, gridBagConstraints1);
262 
263     _serverLabel = new javax.swing.JLabel ();
264     _serverLabel.setText ("Server");
265     gridBagConstraints1 = new java.awt.GridBagConstraints ();
266     add (_serverLabel, gridBagConstraints1);
267 
268     _portLabel = new javax.swing.JLabel ();
269     _portLabel.setText ("Port");
270     gridBagConstraints1 = new java.awt.GridBagConstraints ();
271     add (_portLabel, gridBagConstraints1);
272 
273   }//GEN-END:initComponents
274 
275 
276   //-----------------------------------------------------------------
277   private void _serverComboItemStateChanged (java.awt.event.ItemEvent evt) {//GEN-FIRST:event__serverComboItemStateChanged
278     // Add your handling code here:
279     serverChanged();
280   }//GEN-LAST:event__serverComboItemStateChanged
281 
282   //-----------------------------------------------------------------
283   private void _groupComboItemStateChanged (java.awt.event.ItemEvent evt) {//GEN-FIRST:event__groupComboItemStateChanged
284     // Add your handling code here:
285     groupChanged();
286   }//GEN-LAST:event__groupComboItemStateChanged
287 
288 
289    //-----------------------------------------------------------------
290    public static void main(String args[]) {
291 
292       try {
293 
294          ChatOptions options = new ChatOptions();
295 
296          ServerList list = new ServerList();
297          list.importMircFile(new File("servers.ini"));
298 
299          final SetServerPanel panel = new SetServerPanel();
300          panel.loadServerList(list,options);
301 
302          JFrame frame = new JFrame();
303          frame.getContentPane().setLayout(new BorderLayout());
304          frame.setSize(500,100);
305          frame.setVisible(true);
306 
307          frame.getContentPane().add(panel,BorderLayout.CENTER);
308 
309          JButton btn = new JButton("OK");
310          btn.addActionListener(new ActionListener() {
311             public void actionPerformed(ActionEvent ev) {
312                Server svr = panel.getServerObject();
313                try {
314                   System.out.println("Server: "+panel.getServerObject());
315                }
316                catch (NullPointerException ex) {
317                   System.out.println("Server: null");
318                }
319                finally {
320                   System.exit(0);
321                }
322             }
323          });
324          frame.getContentPane().add(btn,BorderLayout.SOUTH);
325 
326          frame.pack();
327 
328       }
329       catch (Exception e) {
330          e.printStackTrace();
331       }
332    }
333 
334 }