package org.eclipse.emf.examples.jet.article2.ui; import org.eclipse.core.runtime.IStatus; import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jdt.ui.wizards.NewTypeWizardPage; import org.eclipse.jface.dialogs.Dialog; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.wizard.IWizardPage; 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.layout.GridLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Text; import org.eclipse.emf.examples.jet.article2.model.TypesafeEnum; /** * Wizard page where the user can specify the class name, package, source * folder, and other type-related information on the typesafe enumeration class * to create. * * @author Remko Popma * @version $Revision: 1.3 $ ($Date: 2008/04/22 13:35:56 $) */ public class NewTypesafeEnumCreationWizardPage extends NewTypeWizardPage { protected final static String PAGE_NAME = "NewTypesafeEnumCreationWizardPage"; //$NON-NLS-1$ protected TypesafeEnum mTypesafeEnumModel = new TypesafeEnum(); private Text mTextAuthor = null; private Text mTextVersion = null; /** */ public NewTypesafeEnumCreationWizardPage() { super(true, PAGE_NAME); setTitle(WizardMessages.getString("NewEnumWizPage.title")); //$NON-NLS-1$ setDescription(WizardMessages.getString("NewEnumWizPage.description")); //$NON-NLS-1$ } /** * The wizard owning this page is responsible for calling this method with the * current selection. The selection is used to initialize the fields of the * wizard page. * * @param selection * used to initialize the fields */ public void init(IStructuredSelection selection) { IJavaElement jelem = getInitialJavaElement(selection); initContainerPage(jelem); initTypePage(jelem); doStatusUpdate(); // boolean createMain= false; // boolean createConstructors= false; // boolean createUnimplemented= true; // IDialogSettings section= getDialogSettings().getSection(PAGE_NAME); // if (section != null) { // createMain= section.getBoolean(SETTINGS_CREATEMAIN); // createConstructors= section.getBoolean(SETTINGS_CREATECONSTR); // createUnimplemented= section.getBoolean(SETTINGS_CREATEUNIMPLEMENTED); // } // // setMethodStubSelection(createMain, createConstructors, // createUnimplemented, true); } // ------ validation -------- private void doStatusUpdate() { // status of all used components IStatus[] status = new IStatus []{ fContainerStatus, isEnclosingTypeSelected() ? fEnclosingTypeStatus : fPackageStatus, fTypeNameStatus, fModifierStatus, fSuperClassStatus, fSuperInterfacesStatus }; updateEnumType(); // the mode severe status will be displayed and the ok button // enabled/disabled. updateStatus(status); } /** * Updates the <code>TypesafeEnum</code> model from the user input. */ private void updateEnumType() { getTypesafeEnumModel().setClassName(getTypeName()); getTypesafeEnumModel().setPackageName(getPackageText()); } /** * @see IWizardPage#canFlipToNextPage */ @Override public boolean canFlipToNextPage() { boolean complete = isPageComplete(); boolean hasNext = (getNextPage() != null); return complete && hasNext; } /* * @see NewContainerWizardPage#handleFieldChanged */ @Override protected void handleFieldChanged(String fieldName) { super.handleFieldChanged(fieldName); doStatusUpdate(); } /* * (non-Javadoc) * * @see org.eclipse.jface.dialogs.IDialogPage#createControl(org.eclipse.swt.widgets.Composite) */ public void createControl(Composite parent) { initializeDialogUnits(parent); Composite composite = new Composite(parent, SWT.NONE); int nColumns = 4; GridLayout layout = new GridLayout(); layout.numColumns = nColumns; composite.setLayout(layout); // pick & choose the wanted UI components createContainerControls(composite, nColumns); createPackageControls(composite, nColumns); createSeparator(composite, nColumns); createTypeNameControls(composite, nColumns); createAuthorVersionControls(composite, nColumns); // createModifierControls(composite, nColumns); // createSuperClassControls(composite, nColumns); // createSuperInterfacesControls(composite, nColumns); setSuperClass("java.lang.Object", true); setControl(composite); //set default and focus // restoreWidgetValues(); Dialog.applyDialogFont(composite); // WorkbenchHelp.setHelp(composite, // IJUnitHelpContextIds.NEW_TESTCASE_WIZARD_PAGE); } /** * @param parent * @param nColumns */ private void createAuthorVersionControls(Composite parent, int nColumns) { Label author = new Label(parent, SWT.NONE); author.setText(WizardMessages.getString("NewEnumWizPage.author")); mTextAuthor = new Text(parent, SWT.SINGLE | SWT.BORDER); mTextAuthor.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); mTextAuthor.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { getTypesafeEnumModel().setAuthor(mTextAuthor.getText()); } }); mTextAuthor.setText(System.getProperty("user.name")); new Label(parent, SWT.NONE); new Label(parent, SWT.NONE); Label version = new Label(parent, SWT.NONE); version.setText(WizardMessages.getString("NewEnumWizPage.version")); mTextVersion = new Text(parent, SWT.SINGLE | SWT.BORDER); mTextVersion.setLayoutData(new GridData(GridData.FILL_HORIZONTAL)); mTextVersion.addModifyListener(new ModifyListener() { public void modifyText(ModifyEvent e) { getTypesafeEnumModel().setVersion(mTextVersion.getText()); } }); mTextVersion.setText("1.0"); new Label(parent, SWT.NONE); new Label(parent, SWT.NONE); } /** * Returns the <code>TypesafeEnum</code> instance manipulated by the wizard * pages. * * @return the <code>TypesafeEnum</code> instance */ public TypesafeEnum getTypesafeEnumModel() { return mTypesafeEnumModel; } }