gt: 		if (isNew) {
context: /*
   * Project: xdccBee
   * Copyright (C) 2009 snert@snert-lab.de,
   *
   *  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, either version 3 of the License, or
   *  (at your option) any later version.
   *
   *  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, see <http://www.gnu.org/licenses/>.
   */
  package de.snertlab.xdccBee.ui.dialog;
  
  import org.apache.commons.lang.StringUtils;
  import org.eclipse.jface.viewers.IStructuredSelection;
  import org.eclipse.jface.viewers.TableViewer;
  import org.eclipse.swt.SWT;
  import org.eclipse.swt.events.SelectionAdapter;
  import org.eclipse.swt.events.SelectionEvent;
  import org.eclipse.swt.layout.GridData;
  import org.eclipse.swt.layout.GridLayout;
  import org.eclipse.swt.widgets.Button;
  import org.eclipse.swt.widgets.Composite;
  import org.eclipse.swt.widgets.Label;
  import org.eclipse.swt.widgets.Shell;
  import org.eclipse.swt.widgets.Table;
  import org.eclipse.swt.widgets.Text;
  
  import de.snertlab.xdccBee.irc.IrcChannel;
  import de.snertlab.xdccBee.irc.IrcServer;
  import de.snertlab.xdccBee.messages.XdccBeeMessages;
  import de.snertlab.xdccBee.tools.AbstractSaveDialog;
  import de.snertlab.xdccBee.ui.actions.ActionNewIrcChannel;
  import de.snertlab.xdccBee.ui.actions.ActionRemoveIrcChannel;
  import de.snertlab.xdccBee.ui.provider.ContentLabelProviderTableIrcChannels;
  
  /**
   * @author snert
   * 
   */
  public class EditNewIrcServerDialog extends AbstractSaveDialog {
  
  	private static final int DIALOG_WIDTH = 500;
  	private static final int DIALOG_HEIGHT = 350;
  
  	private boolean isNew;
  	private IrcServer ircServer;
  
  	private Text txtHostname;
  	private Text txtPort;
  	private Text txtNickname;
  	private TableViewer tblViewerChannels;
  	private Button btnDebugMode;
  	private Button btnAutoconnect;
  
  	public EditNewIrcServerDialog(Shell parentShell, IrcServer ircServer,
  			boolean isNew) {
  		super(parentShell, true);
  		this.ircServer = ircServer;
  		this.isNew = isNew;
  	}
  
  	@Override
  	protected String checkFields() {
  		String msg = ""; //$NON-NLS-1$
  		if (StringUtils.isEmpty(txtHostname.getText())) {
  			msg = msg
  					+ XdccBeeMessages
  							.getString("EditNewIrcServerDialog_CHECK_ERROR_HOSTNAME_EMPTY") + "\n"; //$NON-NLS-1$//$NON-NLS-2$
  		}
  		if (StringUtils.isEmpty(txtPort.getText())) {
  			msg = msg
  					+ XdccBeeMessages
  							.getString("EditNewIrcServerDialog_CHECK_ERROR_PORT_EMPTY") + "\n"; //$NON-NLS-1$//$NON-NLS-2$
  		} else if (!StringUtils.isNumeric(txtPort.getText())) {
  			msg = msg
  					+ XdccBeeMessages
  							.getString("EditNewIrcServerDialog_CHECK_ERROR_PORT_INTEGER") + "\n"; //$NON-NLS-1$//$NON-NLS-2$
  		}
  		return msg;
  
  	}
  
  	@Override
  	protected void initFields() {
  		txtHostname.setText(StringUtils.defaultString(ircServer.getHostname()));
  		txtPort.setText(StringUtils.defaultString(ircServer.getPort()));
  		txtNickname.setText(StringUtils.defaultString(ircServer.getNickname()));
  		btnDebugMode.setSelection(ircServer.isDebug());
  		if (isNew) {
  			btnDebugMode.setSelection(true);
  		}
  		btnAutoconnect.setSelection(ircServer.isAutoconnect());
  		fillTblChannels();
  	}
  
  	private void fillTblChannels() {
  		tblViewerChannels.setInput(ircServer.getListChannels());
  	}
  
  	@Override
  	protected void makeComponents(Composite parent) {
  		Composite comp = new Composite(parent, SWT.NONE);
  		comp.setLayout(new GridLayout());
  		GridData gridDataComp = new GridData(SWT.FILL, SWT.FILL, true, true);
  		gridDataComp.widthHint = DIALOG_WIDTH;
  		gridDataComp.heightHint = DIALOG_HEIGHT;
  		comp.setLayoutData(gridDataComp);
  
  		makeCompositeServerPreferences(comp);
  		makeCompositeChannels(comp);
  	}
  
  	private void makeCompositeServerPreferences(Composite parent) {
  		int numCols = 4;
  		Composite comp = new Composite(parent, SWT.NONE);
  		comp.setLayout(new GridLayout(numCols, false));
  		comp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, false));
  
  		Label lblHostname = new Label(comp, SWT.NONE);
  		lblHostname.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false,
  				false));
  		lblHostname.setText(XdccBeeMessages
  				.getString("EditNewIrcServerDialog_LABEL_NAME_HOSTNAME")); //$NON-NLS-1$
  
  		txtHostname = new Text(comp, SWT.BORDER);
  		txtHostname.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true,
  				false));
  
  		Label lblPort = new Label(comp, SWT.NONE);
  		lblPort.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false, false));
  		lblPort.setText(XdccBeeMessages
  				.getString("EditNewIrcServerDialog_LABEL_NAME_PORT")); //$NON-NLS-1$
  
  		txtPort = new Text(comp, SWT.BORDER);
  		GridData gridDataPort = new GridData(SWT.FILL, SWT.CENTER, false, false);
  		gridDataPort.widthHint = 50;
  		txtPort.setLayoutData(gridDataPort);
  
  		Label lblNickname = new Label(comp, SWT.NONE);
  		lblNickname.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false,
  				false));
  		lblNickname.setText(XdccBeeMessages
  				.getString("EditNewIrcServerDialog_LABEL_NAME_NICKNAME")); //$NON-NLS-1$
  
  		txtNickname = new Text(comp, SWT.BORDER);
  		txtNickname.setLayoutData(new GridData(SWT.FILL, SWT.CENTER, true,
  				false, numCols - 1, 0));
  
  		Label lblAutoconnect = new Label(comp, SWT.NONE);
  		lblAutoconnect.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false,
  				false));
  		lblAutoconnect.setText(XdccBeeMessages
  				.getString("EditNewIrcServerDialog_LABEL_NAME_AUTOCONNECT")); //$NON-NLS-1$
  
  		btnAutoconnect = new Button(comp, SWT.CHECK);
  		btnAutoconnect.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false,
  				false, numCols - 1, 0));
  		btnAutoconnect.setText(""); //$NON-NLS-1$
  
  		Label lblDebugMode = new Label(comp, SWT.NONE);
  		lblDebugMode.setLayoutData(new GridData(SWT.RIGHT, SWT.CENTER, false,
  				false));
  		lblDebugMode.setText(XdccBeeMessages
  				.getString("EditNewIrcServerDialog_LABEL_NAME_DEBUG_MODE")); //$NON-NLS-1$
  
  		btnDebugMode = new Button(comp, SWT.CHECK);
  		btnDebugMode.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false,
  				false, numCols - 1, 0));
  		btnDebugMode
  				.setText(XdccBeeMessages
  						.getString("EditNewIrcServerDialog_LABEL_NAME_DEBUG_MODE_DESC")); //$NON-NLS-1$
  
  	}
  
  	private void makeCompositeChannels(Composite parent) {
  		int numCols = 2;
  		Composite comp = new Composite(parent, SWT.NONE);
  		comp.setLayout(new GridLayout(numCols, false));
  		comp.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true));
  
  		Label lblTblChannels = new Label(comp, SWT.NONE);
  		lblTblChannels.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, false,
  				false, numCols, 0));
  		lblTblChannels.setText(XdccBeeMessages
  				.getString("EditNewIrcServerDialog_LABEL_NAME_IRC_CHANNELS")); //$NON-NLS-1$
  
  		Composite compTblChannel = new Composite(comp, SWT.NONE);
  		compTblChannel.setLayout(new GridLayout());
  		compTblChannel.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true,
  				true));
  
  		tblViewerChannels = new TableViewer(compTblChannel, SWT.BORDER);
  		Table tblChannels = tblViewerChannels.getTable();
  		ContentLabelProviderTableIrcChannels contentLabelProviderTableIrcChannels = new ContentLabelProviderTableIrcChannels(
  				tblChannels);
  		tblViewerChannels
  				.setContentProvider(contentLabelProviderTableIrcChannels);
  		tblViewerChannels
  				.setLabelProvider(contentLabelProviderTableIrcChannels);
  		tblChannels.setHeaderVisible(true);
  		tblChannels.setLinesVisible(true);
  		GridData gridDataTblChannels = new GridData(SWT.FILL, SWT.FILL, true,
  				true);
  		tblChannels.setLayoutData(gridDataTblChannels);
  		contentLabelProviderTableIrcChannels.makeColumns();
  
  		Composite compChannelButtons = new Composite(comp, SWT.NONE);
  		compChannelButtons.setLayout(new GridLayout());
  		compChannelButtons.setLayoutData(new GridData(SWT.LEFT, SWT.FILL,
  				false, true));
  
  		Button btnNewChannel = new Button(compChannelButtons, SWT.NONE);
  		btnNewChannel
  				.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true, false));
  		btnNewChannel.setText(XdccBeeMessages
  				.getString("EditNewIrcServerDialog_BUTTON_NAME_NEW")); //$NON-NLS-1$
  		btnNewChannel.addSelectionListener(new SelectionAdapter() {
  			@Override
  			public void widgetSelected(SelectionEvent e) {
  				callActionNewIrcChannel();
  			}
  		});
  
  		Button btnRemoveChannel = new Button(compChannelButtons, SWT.NONE);
  		btnRemoveChannel.setLayoutData(new GridData(SWT.FILL, SWT.TOP, true,
  				false));
  		btnRemoveChannel.setText(XdccBeeMessages
  				.getString("EditNewIrcServerDialog_BUTTON_NAME_REMOVE")); //$NON-NLS-1$
  		btnRemoveChannel.addSelectionListener(new SelectionAdapter() {
  			@Override
  			public void widgetSelected(SelectionEvent e) {
  				callActionRemoveIrcChannel();
  			}
  		});
  	}
  
  	@Override
  	protected void myConfigureShell(Shell newShell) {
  