/**
* (c) 2000-2011 Carlos G�mez Rodr�guez, todos los derechos reservados / all rights reserved.
* Licencia en license.txt / License in license.txt
* File created: 06/11/2011 16:50:13
*/
package eu.irreality.age.server;
import java.awt.BorderLayout;
import java.awt.GridLayout;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Arrays;
import java.util.Vector;
import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.DefaultListModel;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JDialog;
import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextField;
import javax.swing.event.ListSelectionEvent;
import javax.swing.event.ListSelectionListener;
import eu.irreality.age.i18n.UIMessages;
class AddIrcNetworkWindow extends JDialog
{
public JTextField serverTextField = new JTextField("libres.irc-hispano.org");
public JTextField portTextField = new JTextField("6667");
public JTextField nickTextField = new JTextField("AGEserver");
public JCheckBox cbQuery = new JCheckBox( UIMessages.getInstance().getMessage("server.irc.label.query") );
public JCheckBox cbChannel = new JCheckBox( UIMessages.getInstance().getMessage("server.irc.label.channel") );
public JCheckBox cbDCC = new JCheckBox("DCC");
public DefaultListModel channelVector = new DefaultListModel();
public JList channelList = new JList(channelVector);
private JButton botonAceptar = new JButton( UIMessages.getInstance().getMessage("button.ok") );
private JButton botonCancelar = new JButton( UIMessages.getInstance().getMessage("button.can") );
private final ServerConfigurationWindow madre;
private boolean editMode = false; //false:add, true:edit
//private final IrcServerEntry aEditar;
//refactoring of common code, 2012-04-18
public void initComponents()
{
getContentPane().setLayout ( new BoxLayout ( getContentPane() , BoxLayout.PAGE_AXIS ) );
JPanel connectionDataPanel = new JPanel();
connectionDataPanel.setBorder(BorderFactory.createTitledBorder(UIMessages.getInstance().getMessage("server.irc.conndata")));
connectionDataPanel.setLayout ( new BoxLayout ( connectionDataPanel , BoxLayout.PAGE_AXIS ) );
JPanel subPan11 = new JPanel();
subPan11.add ( new JLabel( UIMessages.getInstance().getMessage("server.irc.label.server") ) );
subPan11.add ( serverTextField );
JPanel subPan12 = new JPanel();
subPan12.add ( new JLabel( UIMessages.getInstance().getMessage("server.irc.label.port") ) );
subPan12.add ( portTextField );
JPanel subPan13 = new JPanel();
subPan13.add ( new JLabel( UIMessages.getInstance().getMessage("server.irc.label.nick") ) );
subPan13.add ( nickTextField );
connectionDataPanel.add ( subPan11 );
connectionDataPanel.add ( subPan12 );
connectionDataPanel.add ( subPan13 );
JPanel channelListPanel = new JPanel();
channelListPanel.setBorder(BorderFactory.createTitledBorder(UIMessages.getInstance().getMessage("server.irc.channels")));
channelListPanel.setLayout ( new BoxLayout ( channelListPanel , BoxLayout.PAGE_AXIS ) );
JScrollPane jsp = new JScrollPane(channelList);
jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
channelListPanel.add(jsp);
JPanel channelButtonPanel = new JPanel();
channelButtonPanel.setLayout ( new BoxLayout ( channelButtonPanel , BoxLayout.LINE_AXIS) );
final JTextField editChanTextField = new JTextField(8);
JButton addChanButton = new JButton(UIMessages.getInstance().getMessage("server.irc.chan.add"));
JButton deleteChanButton = new JButton(UIMessages.getInstance().getMessage("server.irc.chan.del"));
JButton editChanButton = new JButton(UIMessages.getInstance().getMessage("server.irc.chan.edit"));
channelButtonPanel.add(editChanTextField);
channelButtonPanel.add(addChanButton);
channelButtonPanel.add(deleteChanButton);
channelButtonPanel.add(editChanButton);
channelListPanel.add(channelButtonPanel);
JPanel buttonsPanel = new JPanel();
buttonsPanel.setLayout( new BoxLayout ( buttonsPanel , BoxLayout.LINE_AXIS ) );
buttonsPanel.add(Box.createHorizontalGlue());
buttonsPanel.add ( botonAceptar );
buttonsPanel.add ( botonCancelar );
getContentPane().add(connectionDataPanel);
getContentPane().add(Box.createVerticalStrut(10));
getContentPane().add(channelListPanel);
getContentPane().add(Box.createVerticalStrut(10));
getContentPane().add(buttonsPanel);
addChanButton.addActionListener( new ActionListener()
{
public void actionPerformed ( ActionEvent evt )
{
String toAdd = editChanTextField.getText();
if ( toAdd != null && toAdd.length() > 0 && !channelVector.contains(toAdd) )
{
channelVector.addElement(toAdd);
editChanTextField.setText("");
}
}
}
);
deleteChanButton.addActionListener( new ActionListener()
{
public void actionPerformed ( ActionEvent evt )
{
int selInd = channelList.getSelectedIndex();
if ( selInd >= 0 )
channelVector.removeElementAt(channelList.getSelectedIndex());
if ( channelVector.size() > selInd )
channelList.setSelectedIndex(selInd);
}
}
);
editChanButton.addActionListener( new ActionListener()
{
public void actionPerformed ( ActionEvent evt )
{
int selInd = channelList.getSelectedIndex();
String newText = editChanTextField.getText();
if ( selInd >= 0 && newText != null && newText.length() > 0 )
channelVector.setElementAt(newText, selInd);
}
}
);
channelList.addListSelectionListener( new ListSelectionListener()
{
public void valueChanged(ListSelectionEvent arg0)
{
if ( channelList.getSelectedIndex() >= 0 )
editChanTextField.setText((String)channelVector.elementAt(channelList.getSelectedIndex()));
}
}
);
/*
getContentPane().setLayout ( new BorderLayout() );
JPanel panelPrincipal = new JPanel ( new GridLayout ( 2 , 1 ) );
JPanel subPan1 = new JPanel();
JPanel subPan11 = new JPanel();
subPan11.add ( new JLabel( UIMessages.getInstance().getMessage("server.irc.label.server") ) );
subPan11.add ( serverTextField );
JPanel subPan12 = new JPanel();
subPan12.add ( new JLabel( UIMessages.getInstance().getMessage("server.irc.label.port") ) );
subPan12.add ( portTextField );
JPanel subPan13 = new JPanel();
subPan13.add ( new JLabel( UIMessages.getInstance().getMessage("server.irc.label.nick") ) );
subPan13.add ( nickTextField );
subPan1.add ( subPan11 );
subPan1.add ( subPan12 );
subPan1.add ( subPan13 );
JPanel subPan2 = new JPanel();
subPan2.setLayout ( new GridLayout ( 1 , 2 ) );
JPanel subPan21 = new JPanel();
subPan21.add ( cbQuery );
subPan21.add ( cbChannel );
subPan21.add ( cbDCC );
JPanel subPan22 = new JPanel();
channelList.setVisibleRowCount(4);
JScrollPane jsp = new JScrollPane(channelList);
jsp.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_ALWAYS);
subPan22.add ( jsp );
subPan2.add ( subPan21 );
subPan2.add ( subPan22 );
panelPrincipal.add(subPan1);
panelPrincipal.add(subPan2);
JPanel panelBotones = new JPanel ( new GridLayout ( 1 , 4 ) );
panelBotones.add ( new JPanel() );
panelBotones.add ( new JPanel() );
panelBotones.add ( botonAceptar );
panelBotones.add ( botonCancelar );
panelPrincipal.setBorder ( BorderFactory.createEtchedBorder() );
getContentPane().add(panelPrincipal , BorderLayout.CENTER );
getContentPane().add(panelBotones , BorderLayout.SOUTH );
*/
}
public AddIrcNetworkWindow ( final ServerConfigurationWindow madre )
{
super ( madre , true );
this.madre = madre;
setTitle("Servidor IRC");
fillComponents(null); //set component values to the defaults
initComponents();
pack();
this.setLocationRelativeTo(madre);
botonCancelar.addActionListener
(
new ActionListener()
{
public void actionPerformed ( ActionEvent evt )
{
dispose();
}
}
);
botonAceptar.addActionListener
(
new ActionListener()
{
public void actionPerformed ( ActionEvent evt )
{
IrcServerEntry ise = getEntrada();
madre.addIrcServerEntry ( ise );
dispose();
}
}
);
}
/**
* Fills the components with the values associated with an IRC server entry.
* If aEditar is null, then it fills them with default values.
*/
public void fillComponents ( IrcServerEntry aEditar )
{
if ( aEditar == null )
{
cbQuery.setSelected(true);
cbChannel.setSelected(true);
cbDCC.setSelected(true);
channelVector.addElement( "#aetheria" );
}
else
{
cbQuery.setSelected(aEditar.respondeAPrivados());
cbChannel.setSelected(aEditar.respondeACanales());
cbDCC.setSelected(aEditar.respondeADCC());
for ( int i = 0 ; i < aEditar.getChannels().size() ; i++ )
channelVector.addElement(aEditar.getChannels().get(i));
serverTextField.setText(aEditar.getServer());
portTextField.setText(String.valueOf(aEditar.getPort()));
nickTextField.setText(String.valueOf(aEditar.getNick()));
}
}
public AddIrcNetworkWindow ( final ServerConfigurationWindow madre , final IrcServerEntry aEditar )
{
super ( madre , true );
this.madre = madre;
//this.aEditar = aEditar;
setTitle( UIMessages.getInstance().getMessage("server.irc.title") );
editMode = true;
fillComponents(aEditar);
initComponents();
pack();
this.setLocationRelativeTo(madre);
botonCancelar.addActionListener
(
new ActionListener()
{
public void actionPerformed ( ActionEvent evt )
{
if ( editMode = true )
madre.addIrcServerEntry ( aEditar ); //pues se quita al abrir la ventana de editar
dispose();
}
}
);
botonAceptar.addActionListener
(
new ActionListener()
{
public void actionPerformed ( ActionEvent evt )
{
IrcServerEntry ise = getEntrada();
madre.addIrcServerEntry ( ise );
dispose();
}
}
);
}
public IrcServerEntry getEntrada()
{
try
{
return new IrcServerEntry ( serverTextField.getText() , portTextField.getText() , nickTextField.getText() , cbQuery.isSelected() , cbChannel.isSelected() , cbDCC.isSelected() , Arrays.asList(channelVector.toArray()) );
}
catch ( NumberFormatException nfe )
{
//defaultear el puerto a 6667
return new IrcServerEntry ( serverTextField.getText() , 6667 , nickTextField.getText() , cbQuery.isSelected() , cbChannel.isSelected() , cbDCC.isSelected() , Arrays.asList(channelVector.toArray()) );
}
}
}