View Javadoc

1   /*
2    *  XNap - A P2P framework and client.
3    *
4    *  See the file AUTHORS for copyright information.
5    *
6    *  This program is free software; you can redistribute it and/or modify
7    *  it under the terms of the GNU General Public License as published by
8    *  the Free Software Foundation.
9    *
10   *  This program is distributed in the hope that it will be useful,
11   *  but WITHOUT ANY WARRANTY; without even the implied warranty of
12   *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13   *  GNU General Public License for more details.
14   *
15   *  You should have received a copy of the GNU General Public License
16   *  along with this program; if not, write to the Free Software
17   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
18   */
19  
20  package org.xnap.plugin.pircbot;
21  
22  import java.awt.GridBagLayout;
23  
24  import javax.swing.DefaultComboBoxModel;
25  import javax.swing.JCheckBox;
26  import javax.swing.JComboBox;
27  import javax.swing.JPanel;
28  import javax.swing.JTextField;
29  
30  import org.xnap.XNap;
31  import org.xnap.gui.component.DefaultDialog;
32  import org.xnap.gui.component.ValidatedTextField;
33  import org.xnap.gui.util.GridBagHelper;
34  import org.xnap.util.prefs.PortRangeValidator;
35  
36  public class PircBotServerDialog extends DefaultDialog {
37      
38      //--- Data field(s) ---
39  
40      private PircBotServer server;
41  
42      private JTextField jtName;
43      private JTextField jtHost;
44      private ValidatedTextField jtPort;
45      private JComboBox jcbNetwork;
46      private JTextField jtNetwork;
47      private JTextField jtPassword;
48      private JTextField jtNick;
49      private JTextField jtAutoJoin;
50      private JCheckBox jcbAutoConnect;
51  
52  	private JTextField jtConnectCommand;
53  
54      //--- Constructor(s) ---
55  
56      public PircBotServerDialog(PircBotServer server)
57      {
58  		this.server = server;
59  		initialize();
60      }
61  
62      // --- Methods ---
63  
64      private void initialize()
65      {
66          setTitle(XNap.tr("Server"));
67  
68  		JPanel jp = getMainPanel();
69  		jp.setLayout(new GridBagLayout());
70  
71  		// name
72  		GridBagHelper.addLabel(jp, XNap.tr("Name"));
73  		jtName = new JTextField(server.getName(), 20);
74  		GridBagHelper.add(jp, jtName);
75  
76  		// network
77  		GridBagHelper.addLabel(jp, XNap.tr("Network"));
78  		jcbNetwork = new JComboBox();
79  		jcbNetwork.setEditable(true);
80  		jtNetwork = (JTextField)jcbNetwork.getEditor().getEditorComponent();
81  		jtNetwork.setText(server.getNetwork());
82  		GridBagHelper.add(jp, jcbNetwork);
83  
84  		// host
85  		GridBagHelper.addLabel(jp, XNap.tr("Host"));
86  		jtHost = new JTextField(server.getHost(), 20);
87  		GridBagHelper.add(jp, jtHost);
88  
89  		// port
90  		GridBagHelper.addLabel(jp, XNap.tr("Port"));
91  		jtPort = new ValidatedTextField
92  			(server.getPort() + "", 5, ValidatedTextField.NUMBERS_INT);
93  		GridBagHelper.add(jp, jtPort, false);
94  
95  		// password
96  		GridBagHelper.addLabel(jp, XNap.tr("Password"));
97  		jtPassword = new JTextField(server.getPassword(), 20);
98  		GridBagHelper.add(jp, jtPassword);
99  
100 		// nick
101 		GridBagHelper.addLabel(jp, XNap.tr("Nick"));
102 		jtNick = new JTextField(server.getNick(), 20);
103 		GridBagHelper.add(jp, jtNick);
104 
105 		// auto join
106 		GridBagHelper.addLabel(jp, XNap.tr("Connect Command"));
107 		jtConnectCommand = new JTextField(server.getConnectCommand(), 20);
108 		GridBagHelper.add(jp, jtConnectCommand);
109 
110 		// auto join
111 		GridBagHelper.addLabel(jp, XNap.tr("Auto Join"));
112 		jtAutoJoin = new JTextField(server.getAutoJoinChannels(), 20);
113 		GridBagHelper.add(jp, jtAutoJoin);
114 	
115 		// auto connect
116 		jcbAutoConnect = new JCheckBox(XNap.tr("Auto Connect"));
117 		jcbAutoConnect.setSelected(server.getAutoConnect());
118 		GridBagHelper.add(jp, jcbAutoConnect);
119 
120 		pack();
121     }
122 
123     public boolean apply()
124     {
125 		String name = jtName.getText().trim();
126 		if (name.length() == 0) {
127 			throw new IllegalArgumentException("Please provide a name.");
128 		}
129 
130 		String host = jtHost.getText().trim();
131 		if (host.length() == 0) {
132 			throw new IllegalArgumentException("Please provide a host.");
133 		}
134 	
135 		int port = jtPort.getIntValue();
136 		(new PortRangeValidator()).validate(port + "");
137 
138 		server.setName(name);
139 		server.setNetwork(jtNetwork.getText());
140 		server.setHost(host);
141 		server.setPort(port);
142 		server.setPassword(jtPassword.getText());
143 		server.setNick(jtNick.getText());
144 		server.setAutoJoinChannels(jtAutoJoin.getText());
145 		server.setConnectCommand(jtConnectCommand.getText());
146 		server.setAutoConnect(jcbAutoConnect.isSelected());
147 
148 		return true;
149     }
150 
151     public PircBotServer getServer()
152     {
153 		return server;
154     }
155 
156     public void setNetworks(String[] networks)
157     {
158 		// save current input
159 		String network = jtNetwork.getText();
160 
161 		DefaultComboBoxModel dcbm = new DefaultComboBoxModel(networks);
162 		jcbNetwork.setModel(dcbm);
163 
164 		// restore
165 		jtNetwork.setText(network);
166     }
167 
168 }
169