/*
* SIP Communicator, the OpenSource Java VoIP and Instant Messaging client.
*
* Distributable under LGPL license. See terms of license at gnu.org.
*/
package net.java.sip.communicator.plugin.sipaccregwizz;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import net.java.sip.communicator.util.swing.*;
/**
* The panel containing information about the connection.
*
* @author Yana Stamcheva
*/
public class ConnectionPanel
extends TransparentPanel
implements ItemListener
{
private final JCheckBox enableDefaultEncryption;
private final JCheckBox enableSipZrtpAttribute;
private final JTextField serverField = new JTextField();
private final JTextField proxyField = new JTextField();
private final JTextField authNameField = new JTextField();
private final JTextField serverPortField = new JTextField();
private final JTextField proxyPortField = new JTextField();
private JComboBox transportCombo = new JComboBox(new Object[]
{ "UDP", "TCP", "TLS" });
private JComboBox keepAliveMethodBox
= new JComboBox(new Object []
{
"NONE",
"REGISTER",
"OPTIONS"
});
private JTextField keepAliveIntervalValue = new JTextField();
private boolean isServerOverridden = false;
private SIPAccountRegistrationForm regform;
/**
* Creates an instance of the ConnectionPanel.
* @param regform the parent registration form
*/
public ConnectionPanel(SIPAccountRegistrationForm regform)
{
super(new BorderLayout());
this.regform = regform;
enableDefaultEncryption = new SIPCommCheckBox(Resources
.getString("plugin.sipaccregwizz.ENABLE_DEFAULT_ENCRYPTION"),
regform.getRegistration().isDefaultEncryption());
enableSipZrtpAttribute = new SIPCommCheckBox(Resources
.getString("plugin.sipaccregwizz.ENABLE_SIPZRTP_ATTRIBUTE"),
regform.getRegistration().isSipZrtpAttribute());
this.transportCombo.addItemListener(this);
transportCombo.setSelectedItem(
regform.getRegistration().getDefaultTransport());
JPanel mainPanel = new TransparentPanel(new BorderLayout(10, 10));
JPanel labelsPanel
= new TransparentPanel(new GridLayout(0, 1, 10, 10));
JPanel valuesPanel
= new TransparentPanel(new GridLayout(0, 1, 10, 10));
JLabel serverLabel
= new JLabel(Resources.getString("plugin.sipaccregwizz.REGISTRAR"));
JLabel proxyLabel
= new JLabel(Resources.getString("plugin.sipaccregwizz.PROXY"));
JLabel authNameLabel
= new JLabel(Resources.getString(
"plugin.sipaccregwizz.AUTH_NAME"));
JLabel serverPortLabel
= new JLabel(Resources.getString(
"plugin.sipaccregwizz.SERVER_PORT"));
JLabel proxyPortLabel
= new JLabel(Resources.getString(
"plugin.sipaccregwizz.PROXY_PORT"));
JLabel transportLabel
= new JLabel(Resources.getString(
"plugin.sipaccregwizz.PREFERRED_TRANSPORT"));
labelsPanel.add(serverLabel);
labelsPanel.add(authNameLabel);
labelsPanel.add(serverPortLabel);
labelsPanel.add(proxyLabel);
labelsPanel.add(proxyPortLabel);
labelsPanel.add(transportLabel);
valuesPanel.add(serverField);
valuesPanel.add(authNameField);
valuesPanel.add(serverPortField);
valuesPanel.add(proxyField);
valuesPanel.add(proxyPortField);
valuesPanel.add(transportCombo);
mainPanel.add(labelsPanel, BorderLayout.WEST);
mainPanel.add(valuesPanel, BorderLayout.CENTER);
JPanel encryptionPanel
= new TransparentPanel(new GridLayout(1, 2, 2, 2));
encryptionPanel.add(enableDefaultEncryption, BorderLayout.WEST);
encryptionPanel.add(enableSipZrtpAttribute, BorderLayout.EAST);
enableDefaultEncryption.addActionListener(new ActionListener()
{
public void actionPerformed(ActionEvent evt)
{
// Perform action
JCheckBox cb = (JCheckBox) evt.getSource();
enableSipZrtpAttribute.setEnabled(cb.isSelected());
}
});
mainPanel.add(encryptionPanel, BorderLayout.SOUTH);
mainPanel.setBorder(BorderFactory.createTitledBorder(Resources
.getString("plugin.sipaccregwizz.ADVANCED_OPTIONS")));
this.add(mainPanel, BorderLayout.NORTH);
this.add(createKeepAlivePanel(), BorderLayout.SOUTH);
}
/**
* Parse the server part from the sip id and set it to server as default
* value. If Advanced option is enabled Do nothing.
* @param serverAddress the address of the server
*/
public void setServerFieldAccordingToUIN(String serverAddress)
{
if (!regform.isModification() || !isServerOverridden)
{
serverField.setText(serverAddress);
//proxyField.setText(serverAddress);
}
}
/**
* Indicates that the state of the item has changed.
* @param e the ItemEvent that notified us
*/
public void itemStateChanged(ItemEvent e)
{
// do not set default values cause they are counted
// as overrrided ones
// if (e.getStateChange() == ItemEvent.SELECTED
// && e.getItem().equals("TLS"))
// {
// serverPortField.setText(SIPAccountRegistration.DEFAULT_TLS_PORT);
// proxyPortField.setText(SIPAccountRegistration.DEFAULT_TLS_PORT);
// }
// else
// {
// serverPortField.setText(SIPAccountRegistration.DEFAULT_PORT);
// proxyPortField.setText(SIPAccountRegistration.DEFAULT_PORT);
// }
}
/**
* Creates the keep alive panel.
* @return the created keep alive panel
*/
private Component createKeepAlivePanel()
{
JPanel emptyLabelPanel = new TransparentPanel();
emptyLabelPanel.setMaximumSize(new Dimension(40, 35));
JPanel keepAlivePanel
= new TransparentPanel(new BorderLayout(10, 10));
JPanel keepAliveLabels
= new TransparentPanel(new GridLayout(0, 1, 5, 5));
JPanel keepAliveValues
= new TransparentPanel(new GridLayout(0, 1, 5, 5));
JLabel keepAliveMethodLabel = new JLabel(
Resources.getString("plugin.sipaccregwizz.KEEP_ALIVE_METHOD"));
JLabel keepAliveIntervalLabel = new JLabel(
Resources.getString("plugin.sipaccregwizz.KEEP_ALIVE_INTERVAL"));
JLabel keepAliveIntervalExampleLabel = new JLabel(
Resources.getString("plugin.sipaccregwizz.KEEP_ALIVE_INTERVAL_INFO"));
keepAliveLabels.add(keepAliveMethodLabel);
keepAliveLabels.add(keepAliveIntervalLabel);
keepAliveLabels.add(emptyLabelPanel);
keepAliveIntervalExampleLabel.setForeground(Color.GRAY);
keepAliveIntervalExampleLabel
.setFont(keepAliveIntervalExampleLabel.getFont().deriveFont(8));
keepAliveIntervalExampleLabel
.setMaximumSize(new Dimension(40, 35));
keepAliveIntervalExampleLabel
.setBorder(BorderFactory.createEmptyBorder(0, 0, 8, 0));
keepAliveIntervalValue
.setText(SIPAccountRegistration.DEFAULT_KEEP_ALIVE_INTERVAL);
keepAliveMethodBox.setSelectedItem(
regform.getRegistration().getDefaultKeepAliveMethod());
keepAliveValues.add(keepAliveMethodBox);
keepAliveValues.add(keepAliveIntervalValue);
keepAliveValues.add(keepAliveIntervalExampleLabel);
keepAlivePanel.add(keepAliveLabels, BorderLayout.WEST);
keepAlivePanel.add(keepAliveValues, BorderLayout.CENTER);
keepAlivePanel.setBorder(BorderFactory.createTitledBorder(
Resources.getString("plugin.sipaccregwizz.KEEP_ALIVE")));
return keepAlivePanel;
}
/**
* Returns the server address.
* @return the server address
*/
String getServerAddress()
{
return serverField.getText();
}
/**
* Sets the server address.
* @param serverAddress the server address
*/
void setServerAddress(String serverAddress)
{
serverField.setText(serverAddress);
}
/**
* Enables/disables the server text field.
* @param isEnabled true to enable the server text field,
* false - otherwise
*/
void setServerEnabled(boolean isEnabled)
{
serverField.setEnabled(isEnabled);
}
/**
* Returns the authentication name.
* @return the authentication name
*/
String getAuthenticationName()
{
return authNameField.getText();
}
/**
* Sets the authentication name.
* @param authName the authentication name
*/
void setAuthenticationName(String authName)
{
authNameField.setText(authName);
}
/**
* Returns the server port.
* @return the server port
*/
String getServerPort()
{
return serverPortField.getText();
}
/**
* Sets the server port.
* @param serverPort the server port
*/
void setServerPort(String serverPort)
{
serverPortField.setText(serverPort);
}
/**
* Returns the proxy.
* @return the proxy
*/
String getProxy()
{
return proxyField.getText();
}
/**
* Sets the proxy address.
* @param proxyAddress the proxy address
*/
void setProxy(String proxyAddress)
{
proxyField.setText(proxyAddress);
}
/**
* Return the proxy port.
* @return the proxy port
*/
String getProxyPort()
{
return proxyPortField.getText();
}
/**
* Sets the proxy port.
* @param proxyPort the proxy port
*/
void setProxyPort(String proxyPort)
{
proxyPortField.setText(proxyPort);
}
/**
* Returns the selected transport.
* @return the selected transport
*/
String getSelectedTransport()
{
//Emil: it appears that sometimes the selected item may be null even
//though the combo box does not allow a null selection.
Object selectedItem = transportCombo.getSelectedItem();
if(selectedItem == null)
selectedItem = transportCombo.getItemAt(0);
return selectedItem.toString();
}
/**
* Sets the selected transport.
* @param preferredTransport the transport to select
*/
void setSelectedTransport(String preferredTransport)
{
transportCombo.setSelectedItem(preferredTransport);
}
/**
* Indicates if the default encryption is enabled.
* @return true if the default encryption is enabled,
* false - otherwise
*/
boolean isDefaultEncryptionEnabled()
{
return enableDefaultEncryption.isSelected();
}
/**
* Enables/disables the default encryption.
* @param isEnable true to enable the default encryption,
* false - otherwise
*/
void enablesDefaultEncryption(boolean isEnable)
{
enableDefaultEncryption.setSelected(isEnable);
}
/**
* Indicates if the ZRTP encryption is enabled.
* @return true if ZRTP is enabled, false -
* otherwise
*/
boolean isSipZrtpEnabled()
{
return enableSipZrtpAttribute.isSelected();
}
/**
* Enables/disables and selects/deselects the sip zrtp checkbox.
* @param isSipZrtpEnabled indicates if the sip zrtp is enabled
* @param isDefaultEncryptionEnabled indicates if the default encryption is
* enabled
*/
void setSipZrtpEnabled( boolean isSipZrtpEnabled,
boolean isDefaultEncryptionEnabled)
{
enableSipZrtpAttribute.setSelected(isSipZrtpEnabled);
enableSipZrtpAttribute.setEnabled(isDefaultEncryptionEnabled);
}
/**
* Returns the keep alive method.
* @return the keep alive method
*/
String getKeepAliveMethod()
{
Object selItem = keepAliveMethodBox.getSelectedItem();
if(selItem != null)
return selItem.toString();
else
return null;
}
/**
* Sets the keep alive method.
* @param keepAliveMethod the keep alive method
*/
void setKeepAliveMethod(String keepAliveMethod)
{
keepAliveMethodBox.setSelectedItem(keepAliveMethod);
}
/**
* Returns the keep alive interval
* @return the keep alive interval
*/
String getKeepAliveInterval()
{
return keepAliveIntervalValue.getText();
}
/**
* Sets the keep alive interval
* @param keepAliveInterval the keep alive interval
*/
void setKeepAliveInterval(String keepAliveInterval)
{
keepAliveIntervalValue.setText(keepAliveInterval);
}
/**
* Sets the serverOverridden property.
* @param isServerOverridden true to indicate that the server is
* overridden, false - otherwise
*/
void setServerOverridden(boolean isServerOverridden)
{
this.isServerOverridden = isServerOverridden;
}
}