package org.nightlabs.jfire.asterisk.ui.asteriskserver;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Text;
import org.nightlabs.base.ui.composite.XComposite;
import org.nightlabs.base.ui.composite.XComposite.LayoutDataMode;
import org.nightlabs.base.ui.composite.XComposite.LayoutMode;
import org.nightlabs.base.ui.language.I18nTextEditor;
import org.nightlabs.base.ui.language.I18nTextEditor.EditMode;
import org.nightlabs.base.ui.wizard.WizardHop;
import org.nightlabs.base.ui.wizard.WizardHopPage;
import org.nightlabs.jfire.asterisk.AsteriskServer;
import org.nightlabs.jfire.asterisk.ui.resource.Messages;
/**
* @author Chairat Kongarayawetchakun - chairat[at]nightlabs[dot]de
*/
public class CreateAsteriskServerWizardPage
extends WizardHopPage
{
private AsteriskServer asteriskServer;
public CreateAsteriskServerWizardPage(AsteriskServer asteriskServer) {
super(CreateAsteriskServerWizardPage.class.getName(), Messages.getString("org.nightlabs.jfire.asterisk.ui.asteriskserver.CreateAsteriskServerWizardPage.pageTitle")); //$NON-NLS-1$
this.asteriskServer = asteriskServer;
setDescription(Messages.getString("org.nightlabs.jfire.asterisk.ui.asteriskserver.CreateAsteriskServerWizardPage.description")); //$NON-NLS-1$
}
private I18nTextEditor name;
private Text callFileDirectory;
private Text internationalCallPrefix;
@Override
public Control createPageContents(Composite parent) {
XComposite mainComposite = new XComposite(parent, SWT.NONE, LayoutMode.TOP_BOTTOM_WRAPPER, LayoutDataMode.GRID_DATA);
name = new I18nTextEditor(mainComposite, Messages.getString("org.nightlabs.jfire.asterisk.ui.asteriskserver.CreateAsteriskServerWizardPage.nameLabel.text")); //$NON-NLS-1$
name.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
name.setI18nText(asteriskServer.getName(), EditMode.DIRECT);
name.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent event) {
getContainer().updateButtons();
if (name.getEditText().equals("")) { //$NON-NLS-1$
setErrorMessage(Messages.getString("org.nightlabs.jfire.asterisk.ui.asteriskserver.CreateAsteriskServerWizardPage.errorMessage.emptyName")); //$NON-NLS-1$
}
}
});
Label callFileDirectoryLabel = new Label(mainComposite, SWT.NONE);
callFileDirectoryLabel.setText(Messages.getString("org.nightlabs.jfire.asterisk.ui.asteriskserver.CreateAsteriskServerWizardPage.callFileDirectoryLabel.text")); //$NON-NLS-1$
callFileDirectoryLabel.setToolTipText(Messages.getString("org.nightlabs.jfire.asterisk.ui.asteriskserver.CreateAsteriskServerWizardPage.callFileDirectoryLabel.toolTipText")); //$NON-NLS-1$
callFileDirectory = new Text(mainComposite, XComposite.getBorderStyle(mainComposite));
callFileDirectory.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
callFileDirectory.setToolTipText(callFileDirectoryLabel.getToolTipText());
callFileDirectory.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent arg0) {
asteriskServer.setCallFileDirectory(callFileDirectory.getText());
}
});
Label internationalCallPrefixLabel = new Label(mainComposite, SWT.NONE);
internationalCallPrefixLabel.setText(Messages.getString("org.nightlabs.jfire.asterisk.ui.asteriskserver.CreateAsteriskServerWizardPage.internationalCallPrefixLabel.text")); //$NON-NLS-1$
internationalCallPrefixLabel.setToolTipText(Messages.getString("org.nightlabs.jfire.asterisk.ui.asteriskserver.CreateAsteriskServerWizardPage.internationalCallPrefixLabel.toolTipText")); //$NON-NLS-1$
internationalCallPrefix = new Text(mainComposite, XComposite.getBorderStyle(mainComposite));
internationalCallPrefix.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
internationalCallPrefix.setToolTipText(internationalCallPrefixLabel.getToolTipText());
internationalCallPrefix.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent arg0) {
asteriskServer.setInternationalCallPrefix(internationalCallPrefix.getText());
}
});
return mainComposite;
}
@Override
public void onShow() {
name.forceFocus();
}
@Override
public boolean canFlipToNextPage() {
return isPageComplete();
}
private WizardHopPage optionalPage;
@Override
public boolean isPageComplete() {
boolean result = true;
setErrorMessage(null);
if (name.getEditText().equals("") || name.getI18nText().getText() == null) //$NON-NLS-1$
result = false;
if (result == true && optionalPage == null) {
new WizardHop(this);
optionalPage = new CreateAsteriskServerCallFilePropertyWizardPage(asteriskServer);
getWizardHop().addHopPage(optionalPage);
}
return result;
}
}