/*
* Jitsi, the OpenSource Java VoIP and Instant Messaging client.
*
* Copyright @ 2015 Atlassian Pty Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package net.java.sip.communicator.plugin.generalconfig;
import java.awt.*;
import java.awt.event.*;
import java.util.*;
import java.util.List;
import javax.swing.*;
import net.java.sip.communicator.plugin.desktoputil.*;
import net.java.sip.communicator.service.gui.*;
import net.java.sip.communicator.util.*;
/**
* Implementation of the configuration form.
*
* @author Damian Minkov
*/
public class SIPConfigForm
extends TransparentPanel
implements ActionListener
{
/**
* Serial version UID.
*/
private static final long serialVersionUID = 0L;
private Box pnlSslProtocols;
/**
* Creates the form.
*/
public SIPConfigForm()
{
super(new BorderLayout());
Box box = Box.createVerticalBox();
add(box, BorderLayout.NORTH);
TransparentPanel sipClientPortConfigPanel = new TransparentPanel();
sipClientPortConfigPanel.setLayout(new BorderLayout(10, 10));
sipClientPortConfigPanel.setPreferredSize(new Dimension(250, 50));
box.add(sipClientPortConfigPanel);
TransparentPanel labelPanel
= new TransparentPanel(new GridLayout(0, 1, 2, 2));
TransparentPanel valuePanel
= new TransparentPanel(new GridLayout(0, 1, 2, 2));
sipClientPortConfigPanel.add(labelPanel,
BorderLayout.WEST);
sipClientPortConfigPanel.add(valuePanel,
BorderLayout.CENTER);
labelPanel.add(new JLabel(
Resources.getString(
"plugin.generalconfig.SIP_CLIENT_PORT")));
labelPanel.add(new JLabel(
Resources.getString(
"plugin.generalconfig.SIP_CLIENT_SECURE_PORT")));
final JTextField clientPortField = new JTextField(6);
clientPortField.setText(
String.valueOf(ConfigurationUtils.getClientPort()));
valuePanel.add(clientPortField);
clientPortField.addFocusListener(new FocusListener()
{
private String oldValue = null;
public void focusLost(FocusEvent e)
{
try
{
int port =
Integer.valueOf(clientPortField.getText());
if(port <= 0 || port > 65535)
throw new NumberFormatException(
"Not a port number");
ConfigurationUtils.setClientPort(port);
}
catch (NumberFormatException ex)
{
// not a number for port
String error =
Resources.getString(
"plugin.generalconfig.ERROR_PORT_NUMBER");
GeneralConfigPluginActivator.getUIService().
getPopupDialog().showMessagePopupDialog(
error,
error,
PopupDialog.ERROR_MESSAGE);
clientPortField.setText(oldValue);
}
}
public void focusGained(FocusEvent e)
{
oldValue = clientPortField.getText();
}
});
final JTextField clientSecurePortField = new JTextField(6);
clientSecurePortField.setText(
String.valueOf(ConfigurationUtils.getClientSecurePort()));
valuePanel.add(clientSecurePortField);
clientSecurePortField.addFocusListener(new FocusListener()
{
private String oldValue = null;
public void focusLost(FocusEvent e)
{
try
{
int port
= Integer.valueOf(clientSecurePortField.getText());
if(port <= 0 || port > 65535)
throw new NumberFormatException(
"Not a port number");
ConfigurationUtils.setClientSecurePort(port);
}
catch (NumberFormatException ex)
{
// not a number for port
String error =
Resources.getString(
"plugin.generalconfig.ERROR_PORT_NUMBER");
GeneralConfigPluginActivator.getUIService().
getPopupDialog().showMessagePopupDialog(
error,
error,
PopupDialog.ERROR_MESSAGE);
clientSecurePortField.setText(oldValue);
}
}
public void focusGained(FocusEvent e)
{
oldValue = clientSecurePortField.getText();
}
});
String configuredProtocols = Arrays.toString(
ConfigurationUtils.getEnabledSslProtocols());
pnlSslProtocols = Box.createVerticalBox();
pnlSslProtocols.setBorder(BorderFactory.createTitledBorder(Resources
.getString("plugin.generalconfig.SIP_SSL_PROTOCOLS")));
pnlSslProtocols.setAlignmentX(Component.LEFT_ALIGNMENT);
for(String protocol : ConfigurationUtils.getAvailableSslProtocols())
{
JCheckBox chkProtocol = new SIPCommCheckBox(protocol);
chkProtocol.addActionListener(this);
chkProtocol.setSelected(configuredProtocols.contains(protocol));
pnlSslProtocols.add(chkProtocol);
}
pnlSslProtocols.add(new JLabel(
Resources.getString(
"plugin.generalconfig.DEFAULT_LANGUAGE_RESTART_WARN")));
JPanel sslWrapper = new TransparentPanel(new BorderLayout());
sslWrapper.add(pnlSslProtocols, BorderLayout.CENTER);
box.add(sslWrapper);
}
public void actionPerformed(ActionEvent e)
{
List<String> enabledSslProtocols = new ArrayList<String>(
pnlSslProtocols.getComponentCount());
for(Component child : pnlSslProtocols.getComponents())
{
if(child instanceof JCheckBox)
if(((JCheckBox) child).isSelected())
enabledSslProtocols.add(((JCheckBox) child).getText());
}
ConfigurationUtils.setEnabledSslProtocols(
enabledSslProtocols.toArray(new String[]{}));
}
}