OpenNapServerEditorDialog.java
| Index Score | ||
|---|---|---|
![]() |
![]() |
org.xnap.plugin.opennap.gui |
![]() |
![]() |
XNap 3 |
View: Reasons, Metrics, Source Code
These are the metrics that contribute to the Enerjy Score for this file, ranked by impact. So the metrics listed at the top influence the score to a greater extent that the metrics listed at the bottom.
/*
* XNap - A P2P framework and client.
*
* See the file AUTHORS for copyright information.
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
package org.xnap.plugin.opennap.gui;
import java.awt.Component;
import java.awt.GridBagLayout;
import javax.swing.ButtonGroup;
import javax.swing.DefaultComboBoxModel;
import javax.swing.JCheckBox;
import javax.swing.JComboBox;
import javax.swing.JPanel;
import javax.swing.JRadioButton;
import javax.swing.JTextField;
import org.xnap.XNap;
import org.xnap.gui.action.EnableAction;
import org.xnap.gui.component.DefaultDialog;
import org.xnap.gui.component.ValidatedTextField;
import org.xnap.gui.component.XNapCheckBox;
import org.xnap.gui.util.GUIHelper;
import org.xnap.gui.util.GridBagHelper;
import org.xnap.plugin.opennap.OpenNapPlugin;
import org.xnap.plugin.opennap.net.OpenNapServer;
import org.xnap.util.*;
import org.xnap.util.prefs.PortRangeValidator;
/**
* Provides a dialog for editing properties of a {@link OpenNapServer} object.
*/
public class OpenNapServerEditorDialog extends DefaultDialog {
//--- Data field(s) ---
private OpenNapServer server;
private JTextField jtHost;
private ValidatedTextField jtPort;
private JComboBox jcbNetwork;
private JTextField jtNetwork;
private JCheckBox jcbCustomizeUser;
private JTextField jtNick;
private JTextField jtPassword;
private JTextField jtEmail;
private JCheckBox jcbOpenNapigator;
private JCheckBox jcbAutoConnect;
private JRadioButton jrbTypeDefault;
private JRadioButton jrbTypeRedirector;
private JTextField jtAutoJoin;
/**
* If set to true <code>server</code> will be added to
* {@link OpenNapServerManager} if okay is pressed.
*/
private boolean addToConnector;
//--- Constructor(s) ---
/**
*
* @param addToConnector <code>server</code> will be added to
* {@link OpenNapServerManager} if okay is pressed
*/
public OpenNapServerEditorDialog(OpenNapServer server, boolean addToConnector)
{
this.server = server;
this.addToConnector = addToConnector;
initialize();
}
public OpenNapServerEditorDialog(OpenNapServer server)
{
this(server, false);
}
/**
* Creates a dialog with a new {@link OpenNapServer} object that is added
* to {@link OpenNapServerManager} if okay is pressed.
*
* @see #OpenNapServerEditorDialog(OpenNapServer, boolean)
*/
public OpenNapServerEditorDialog()
{
this(new OpenNapServer(), true);
}
// --- Methods ---
private void initialize()
{
setTitle(XNap.tr("Server"));
JPanel jp = getMainPanel();
jp.setLayout(new GridBagLayout());
// host
GridBagHelper.addLabel(jp, XNap.tr("Host"));
jtHost = new JTextField(server.getHost(), 20);
GridBagHelper.add(jp, jtHost);
// port
GridBagHelper.addLabel(jp, XNap.tr("Port"));
jtPort = new ValidatedTextField
(server.getPort() + "", 5, ValidatedTextField.NUMBERS_INT);
GridBagHelper.add(jp, jtPort, false);
jtPort.setMinimumSize(jtPort.getPreferredSize());
// network
GridBagHelper.addLabel(jp, XNap.tr("Network"));
jcbNetwork = new JComboBox();
jcbNetwork.setEditable(true);
jtNetwork = (JTextField)jcbNetwork.getEditor().getEditorComponent();
jtNetwork.setText(server.getNetworkName());
GridBagHelper.add(jp, jcbNetwork);
// type
JPanel jpType = new JPanel(new GridBagLayout());
jpType.setBorder(GUIHelper.createDefaultBorder(XNap.tr("Type")));
GridBagHelper.add(jp, jpType);
ButtonGroup bgType = new ButtonGroup();
jrbTypeDefault
= new JRadioButton(XNap.tr("Default"), !server.isRedirector());
bgType.add(jrbTypeDefault);
GridBagHelper.addComponent(jpType, jrbTypeDefault);
jrbTypeRedirector
= new JRadioButton(XNap.tr("Redirector"), server.isRedirector());
bgType.add(jrbTypeRedirector);
GridBagHelper.add(jpType, jrbTypeRedirector);
// user
JPanel jpUser = new JPanel(new GridBagLayout());
jpUser.setBorder(GUIHelper.createDefaultBorder(XNap.tr("Login")));
boolean custom = server.isLoginCustomized();
jtNick = new JTextField(server.getNick(), 20);
jtPassword = new JTextField(server.getPassword(), 20);
jtEmail = new JTextField(server.getEmail(), 20);
Component[] c = new Component[] { jtNick, jtPassword, jtEmail };
EnableAction ac
= new EnableAction(XNap.tr("Customize", 1, 1), c, custom);
jcbCustomizeUser = new XNapCheckBox(ac);
GridBagHelper.add(jpUser, jcbCustomizeUser);
GridBagHelper.addLabel(jpUser, XNap.tr("Nickname"));
GridBagHelper.add(jpUser, jtNick);
GridBagHelper.addLabel(jpUser, XNap.tr("Password"));
GridBagHelper.add(jpUser, jtPassword);
GridBagHelper.addLabel(jpUser, XNap.tr("Email"));
GridBagHelper.add(jpUser, jtEmail);
GridBagHelper.add(jp, jpUser);
// auto join
GridBagHelper.addLabel(jp, XNap.tr("Auto Join"));
jtAutoJoin = new JTextField(server.getAutoJoinChannels(), 20);
GridBagHelper.add(jp, jtAutoJoin);
// napigator
jcbOpenNapigator = new JCheckBox(XNap.tr("Napigator Server"));
jcbOpenNapigator.setSelected(server.isTemporary());
GridBagHelper.add(jp, jcbOpenNapigator);
jcbAutoConnect = new JCheckBox(XNap.tr("Connect Automatically"));
jcbAutoConnect.setSelected(server.getAutoConnect());
GridBagHelper.add(jp, jcbAutoConnect);
pack();
}
public boolean apply()
{
// validate input
if (jtHost.getText().trim().length() == 0) {
throw new IllegalArgumentException("Please provide a hostname.");
}
int port = jtPort.getIntValue();
PortRangeValidator.DEFAULT.check(port);
// set properties
server.setHost(jtHost.getText());
server.setPort(port);
server.setRedirector(jrbTypeRedirector.isSelected());
boolean custom = jcbCustomizeUser.isSelected();
server.setNick(custom ? jtNick.getText() : null);
server.setPassword(custom ? jtPassword.getText() : null);
server.setEmail(custom ? jtEmail.getText() : null);
server.setTemporary(jcbOpenNapigator.isSelected());
boolean oldAutoConnectState = server.getAutoConnect();
server.setAutoConnect(jcbAutoConnect.isSelected());
server.setAutoJoinChannels(jtAutoJoin.getText());
if (addToConnector) {
server.setNetworkName(jtNetwork.getText());
OpenNapPlugin.getServerManager().add
(server, server.getAutoConnect());
addToConnector = false;
}
else {
OpenNapPlugin.getServerManager().changeNetwork
(server, jtNetwork.getText());
if (server.getAutoConnect() && !oldAutoConnectState) {
try {
server.connect();
}
catch (IllegalOperationException e) {
}
}
}
return true;
}
public void setNetworks(String[] networks)
{
// save current input
String network = jtNetwork.getText();
DefaultComboBoxModel dcbm = new DefaultComboBoxModel(networks);
jcbNetwork.setModel(dcbm);
// restore
jtNetwork.setText(network);
}
}
The table below shows all metrics for OpenNapServerEditorDialog.java.




