/*
* Copyright 2010-2015 Institut Pasteur.
*
* This file is part of Icy.
*
* Icy 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, either version 3 of the License, or
* (at your option) any later version.
*
* Icy 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 Icy. If not, see <http://www.gnu.org/licenses/>.
*/
package icy.gui.preferences;
import icy.gui.component.IcyTextField;
import icy.gui.main.MainFrame;
import icy.main.Icy;
import icy.preferences.ChatPreferences;
import java.awt.GridBagConstraints;
import java.awt.GridBagLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPasswordField;
public class ChatPreferencePanel extends PreferencePanel
{
/**
*
*/
private static final long serialVersionUID = 2856629717614258089L;
public static final String NODE_NAME = "Chat";
private IcyTextField realNameField;
private JPasswordField passwordField;
IcyTextField extraChannelsField;
private JCheckBox connectAtStartCheckBox;
private JCheckBox enableDesktopOverlayCheckBox;
IcyTextField desktopChannelsField;
private JCheckBox statusMessageCheckBox;
/**
* Create the panel.
*/
public ChatPreferencePanel(PreferenceFrame parent)
{
super(parent, NODE_NAME, PreferenceFrame.NODE_NAME);
initialize();
validate();
load();
}
void initialize()
{
GridBagLayout gridBagLayout = new GridBagLayout();
gridBagLayout.columnWidths = new int[] {46, 97, 0, 0, 18, 60, 0, 0};
gridBagLayout.rowHeights = new int[] {0, 0, 0, 0, 0, 0, 0};
gridBagLayout.columnWeights = new double[] {0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
gridBagLayout.rowWeights = new double[] {0.0, 0.0, 0.0, 0.0, 0.0, 0.0, Double.MIN_VALUE};
mainPanel.setLayout(gridBagLayout);
connectAtStartCheckBox = new JCheckBox("Connect at start up");
connectAtStartCheckBox.setToolTipText("Automatically connect when application starts");
GridBagConstraints gbc_connectAtStartCheckBox = new GridBagConstraints();
gbc_connectAtStartCheckBox.anchor = GridBagConstraints.WEST;
gbc_connectAtStartCheckBox.gridwidth = 4;
gbc_connectAtStartCheckBox.insets = new Insets(0, 0, 5, 5);
gbc_connectAtStartCheckBox.gridx = 0;
gbc_connectAtStartCheckBox.gridy = 0;
mainPanel.add(connectAtStartCheckBox, gbc_connectAtStartCheckBox);
statusMessageCheckBox = new JCheckBox("Show status messages");
statusMessageCheckBox.setToolTipText("Show chat status change messages");
GridBagConstraints gbc_statusMessageCheckBox = new GridBagConstraints();
gbc_statusMessageCheckBox.anchor = GridBagConstraints.WEST;
gbc_statusMessageCheckBox.gridwidth = 4;
gbc_statusMessageCheckBox.insets = new Insets(0, 0, 5, 5);
gbc_statusMessageCheckBox.gridx = 0;
gbc_statusMessageCheckBox.gridy = 1;
mainPanel.add(statusMessageCheckBox, gbc_statusMessageCheckBox);
enableDesktopOverlayCheckBox = new JCheckBox("Enable desktop chat");
enableDesktopOverlayCheckBox.setToolTipText("Display chat in the application desktop");
GridBagConstraints gbc_enableDesktopOverlayCheckBox = new GridBagConstraints();
gbc_enableDesktopOverlayCheckBox.anchor = GridBagConstraints.WEST;
gbc_enableDesktopOverlayCheckBox.gridwidth = 2;
gbc_enableDesktopOverlayCheckBox.insets = new Insets(0, 0, 5, 5);
gbc_enableDesktopOverlayCheckBox.gridx = 0;
gbc_enableDesktopOverlayCheckBox.gridy = 2;
mainPanel.add(enableDesktopOverlayCheckBox, gbc_enableDesktopOverlayCheckBox);
desktopChannelsField = new IcyTextField();
desktopChannelsField
.setToolTipText("Channel(s) to display on dekstop chat. You can enter severals channels (ex : \"icy;icy-support\")");
desktopChannelsField.setText("icy");
GridBagConstraints gbc_desktopChannelsField = new GridBagConstraints();
gbc_desktopChannelsField.gridwidth = 2;
gbc_desktopChannelsField.insets = new Insets(0, 0, 5, 5);
gbc_desktopChannelsField.fill = GridBagConstraints.HORIZONTAL;
gbc_desktopChannelsField.gridx = 2;
gbc_desktopChannelsField.gridy = 2;
mainPanel.add(desktopChannelsField, gbc_desktopChannelsField);
desktopChannelsField.setColumns(10);
JButton btnDefault_1 = new JButton("Default");
btnDefault_1.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
desktopChannelsField.setText(ChatPreferences.getDefaultDesktopChannels());
}
});
GridBagConstraints gbc_btnDefault_1 = new GridBagConstraints();
gbc_btnDefault_1.insets = new Insets(0, 0, 5, 5);
gbc_btnDefault_1.gridx = 5;
gbc_btnDefault_1.gridy = 2;
mainPanel.add(btnDefault_1, gbc_btnDefault_1);
JLabel lblNewLabel_2 = new JLabel("Real name");
lblNewLabel_2.setToolTipText("Real name (give more information about user)");
GridBagConstraints gbc_lblNewLabel_2 = new GridBagConstraints();
gbc_lblNewLabel_2.anchor = GridBagConstraints.EAST;
gbc_lblNewLabel_2.insets = new Insets(0, 0, 5, 5);
gbc_lblNewLabel_2.gridx = 0;
gbc_lblNewLabel_2.gridy = 3;
mainPanel.add(lblNewLabel_2, gbc_lblNewLabel_2);
realNameField = new IcyTextField();
realNameField.setToolTipText("Real name (give more information about user)");
GridBagConstraints gbc_realNameField = new GridBagConstraints();
gbc_realNameField.fill = GridBagConstraints.HORIZONTAL;
gbc_realNameField.gridwidth = 3;
gbc_realNameField.insets = new Insets(0, 0, 5, 5);
gbc_realNameField.gridx = 1;
gbc_realNameField.gridy = 3;
mainPanel.add(realNameField, gbc_realNameField);
realNameField.setColumns(10);
JLabel lblPassword = new JLabel("Password");
lblPassword.setToolTipText("Password for registered nickname only");
GridBagConstraints gbc_lblPassword = new GridBagConstraints();
gbc_lblPassword.anchor = GridBagConstraints.EAST;
gbc_lblPassword.insets = new Insets(0, 0, 5, 5);
gbc_lblPassword.gridx = 0;
gbc_lblPassword.gridy = 4;
mainPanel.add(lblPassword, gbc_lblPassword);
passwordField = new JPasswordField();
passwordField.setColumns(12);
passwordField.setToolTipText("Password for registered nickname only");
GridBagConstraints gbc_passwordField = new GridBagConstraints();
gbc_passwordField.gridwidth = 3;
gbc_passwordField.fill = GridBagConstraints.HORIZONTAL;
gbc_passwordField.insets = new Insets(0, 0, 5, 5);
gbc_passwordField.gridx = 1;
gbc_passwordField.gridy = 4;
mainPanel.add(passwordField, gbc_passwordField);
JLabel lblChannels = new JLabel("Extra channels");
lblChannels
.setToolTipText("Extra channels to join at start up. You can enter severals channels (ex : \"icy-news;icy-support;others\")");
GridBagConstraints gbc_lblChannels = new GridBagConstraints();
gbc_lblChannels.anchor = GridBagConstraints.EAST;
gbc_lblChannels.insets = new Insets(0, 0, 0, 5);
gbc_lblChannels.gridx = 0;
gbc_lblChannels.gridy = 5;
mainPanel.add(lblChannels, gbc_lblChannels);
extraChannelsField = new IcyTextField();
extraChannelsField
.setToolTipText("Extra channel(s) to join at start up. You can enter severals channels (ex : \"icy-news;icy-support;...\")");
GridBagConstraints gbc_channelsField = new GridBagConstraints();
gbc_channelsField.gridwidth = 3;
gbc_channelsField.insets = new Insets(0, 0, 0, 5);
gbc_channelsField.fill = GridBagConstraints.HORIZONTAL;
gbc_channelsField.gridx = 1;
gbc_channelsField.gridy = 5;
mainPanel.add(extraChannelsField, gbc_channelsField);
extraChannelsField.setColumns(10);
JButton btnDefault = new JButton("Default");
btnDefault.addActionListener(new ActionListener()
{
@Override
public void actionPerformed(ActionEvent e)
{
extraChannelsField.setText(ChatPreferences.getDefaultExtraChannels());
}
});
GridBagConstraints gbc_btnDefault = new GridBagConstraints();
gbc_btnDefault.insets = new Insets(0, 0, 0, 5);
gbc_btnDefault.gridx = 5;
gbc_btnDefault.gridy = 5;
mainPanel.add(btnDefault, gbc_btnDefault);
}
@Override
protected void load()
{
realNameField.setText(ChatPreferences.getRealname());
passwordField.setText(ChatPreferences.getUserPassword());
extraChannelsField.setText(ChatPreferences.getExtraChannels());
connectAtStartCheckBox.setSelected(ChatPreferences.getAutoConnect());
statusMessageCheckBox.setSelected(ChatPreferences.getShowStatusMessages());
enableDesktopOverlayCheckBox.setSelected(ChatPreferences.getDesktopOverlay());
desktopChannelsField.setText(ChatPreferences.getDesktopChannels());
}
@Override
protected void save()
{
ChatPreferences.setRealname(realNameField.getText());
ChatPreferences.setUserPassword(new String(passwordField.getPassword()));
ChatPreferences.setExtraChannels(extraChannelsField.getText());
ChatPreferences.setAutoConnect(connectAtStartCheckBox.isSelected());
ChatPreferences.setShowStatusMessages(statusMessageCheckBox.isSelected());
ChatPreferences.setDesktopOverlay(enableDesktopOverlayCheckBox.isSelected());
ChatPreferences.setDesktopChannels(desktopChannelsField.getText());
final MainFrame mainFrame = Icy.getMainInterface().getMainFrame();
// repaint desktop pane for desktop overlay change
if (mainFrame != null)
mainFrame.getChat().refreshDesktopOverlayState();
}
}