package org.nightlabs.jfire.trade.admin.ui.overview;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.ModifyEvent;
import org.eclipse.swt.events.ModifyListener;
import org.eclipse.swt.events.SelectionAdapter;
import org.eclipse.swt.events.SelectionEvent;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Spinner;
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.wizard.WizardHopPage;
import org.nightlabs.i18n.unit.Unit;
import org.nightlabs.jfire.idgenerator.IDGenerator;
public class UnitCreateWizardPage
extends WizardHopPage
{
//GUI
private Button autogenerateIDCheckbox;
private Text unitIDText;
private I18nTextEditor unitSymbolTextEditor;
private I18nTextEditor unitNameTextEditor;
private Spinner decimalDigitSpinner;
public UnitCreateWizardPage() {
super(UnitCreateWizardPage.class.getName(), "Create new unit");
setDescription("Please enter the symbol & name of the new unit.");
}
@Override
public Control createPageContents(Composite parent) {
XComposite mainComposite = new XComposite(parent, SWT.NONE, LayoutMode.TOP_BOTTOM_WRAPPER, LayoutDataMode.GRID_DATA);
autogenerateIDCheckbox = new Button(mainComposite, SWT.CHECK);
autogenerateIDCheckbox.setText("Auto generate ID: ");
autogenerateIDCheckbox.setSelection(true);
autogenerateIDCheckbox.addSelectionListener(new SelectionAdapter()
{
@Override
public void widgetSelected(SelectionEvent e) {
unitIDText.setEnabled(!autogenerateIDCheckbox.getSelection());
}
});
new Label(mainComposite, SWT.NONE).setText("Unit ID: ");
unitIDText = new Text(mainComposite, SWT.BORDER);
unitIDText.setEnabled(false);
unitIDText.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
unitIDText.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
}
});
new Label(mainComposite, SWT.NONE).setText("Unit Symbol: ");
unitSymbolTextEditor = new I18nTextEditor(mainComposite);
unitSymbolTextEditor.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent arg0) {
getContainer().updateButtons();
}
});
new Label(mainComposite, SWT.NONE).setText("Unit Name: ");
unitNameTextEditor = new I18nTextEditor(mainComposite, unitSymbolTextEditor.getLanguageChooser());
unitNameTextEditor.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent arg0) {
getContainer().updateButtons();
}
});
new Label(mainComposite, SWT.NONE).setText("Decimal Digit Count: ");
decimalDigitSpinner = new Spinner(mainComposite, SWT.BORDER);
decimalDigitSpinner.setDigits(0);
decimalDigitSpinner.setMaximum(Integer.MAX_VALUE);
new Label(mainComposite, SWT.NONE).setText("Note: Once the decimal digit count has been stored. You won't be able to change it again.");
return mainComposite;
}
@Override
public void onShow() {
getShell().pack(true);
getShell().update();
unitSymbolTextEditor.setFocus();
}
@Override
public boolean canFlipToNextPage() {
return false;
}
@Override
public boolean isPageComplete() {
if (unitSymbolTextEditor == null || unitNameTextEditor == null)
return false; // If we didn't even create our UI yet, we're definitely not complete.
boolean result = true;
setErrorMessage(null);
if (unitSymbolTextEditor.getEditText().equals("") ||
unitSymbolTextEditor.getI18nText().getText() == null) { //$NON-NLS-1$
result = false;
}
if (unitNameTextEditor.getEditText().equals("") ||
unitNameTextEditor.getI18nText().getText() == null) { //$NON-NLS-1$
result = false;
}
return result;
}
public I18nTextEditor getUnitNameTextEditor() {
return unitNameTextEditor;
}
public I18nTextEditor getUnitSymbolTextEditor() {
return unitSymbolTextEditor;
}
public int getDecimalDigits() {
return decimalDigitSpinner.getDigits();
}
public String getUnitID() {
if (autogenerateIDCheckbox.getSelection()) {
return IDGenerator.nextIDString(Unit.class);
}
return unitIDText.getText();
}
}