X-Git-Url: http://git.phpeclipse.com diff --git a/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/ui/wizards/NewClassWizardPage.java b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/ui/wizards/NewClassWizardPage.java new file mode 100644 index 0000000..4203e32 --- /dev/null +++ b/net.sourceforge.phpeclipse.ui/src/net/sourceforge/phpdt/ui/wizards/NewClassWizardPage.java @@ -0,0 +1,275 @@ +/******************************************************************************* + * Copyright (c) 2000, 2003 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +package net.sourceforge.phpdt.ui.wizards; + +import net.sourceforge.phpdt.core.IJavaElement; +import net.sourceforge.phpdt.internal.ui.wizards.NewWizardMessages; +import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.DialogField; +import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.LayoutUtil; +import net.sourceforge.phpdt.internal.ui.wizards.dialogfields.SelectionButtonDialogFieldGroup; + +import org.eclipse.core.runtime.IStatus; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.dialogs.IDialogSettings; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.swt.SWT; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; + +/** + * Wizard page to create a new class. + *

+ * Note: This class is not intended to be subclassed. To implement a different + * kind of a new class wizard page, extend NewTypeWizardPage. + *

+ * + * @since 2.0 + */ +public class NewClassWizardPage extends NewTypeWizardPage { + + private final static String PAGE_NAME = "NewClassWizardPage"; //$NON-NLS-1$ + + private final static String SETTINGS_CREATEMAIN = "create_main"; //$NON-NLS-1$ + + private final static String SETTINGS_CREATECONSTR = "create_constructor"; //$NON-NLS-1$ + + private final static String SETTINGS_CREATEUNIMPLEMENTED = "create_unimplemented"; //$NON-NLS-1$ + + private SelectionButtonDialogFieldGroup fMethodStubsButtons; + + /** + * Creates a new NewClassWizardPage + */ + public NewClassWizardPage() { + super(true, PAGE_NAME); + + setTitle(NewWizardMessages.getString("NewClassWizardPage.title")); //$NON-NLS-1$ + setDescription(NewWizardMessages + .getString("NewClassWizardPage.description")); //$NON-NLS-1$ + + String[] buttonNames3 = new String[] { + NewWizardMessages.getString("NewClassWizardPage.methods.main"), NewWizardMessages.getString("NewClassWizardPage.methods.constructors"), //$NON-NLS-1$ //$NON-NLS-2$ + NewWizardMessages + .getString("NewClassWizardPage.methods.inherited") //$NON-NLS-1$ + }; + fMethodStubsButtons = new SelectionButtonDialogFieldGroup(SWT.CHECK, + buttonNames3, 1); + fMethodStubsButtons.setLabelText(NewWizardMessages + .getString("NewClassWizardPage.methods.label")); //$NON-NLS-1$ + } + + // -------- Initialization --------- + + /** + * 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 + }; + + // the mode severe status will be displayed and the ok button + // enabled/disabled. + updateStatus(status); + } + + /* + * @see NewContainerWizardPage#handleFieldChanged + */ + protected void handleFieldChanged(String fieldName) { + super.handleFieldChanged(fieldName); + + doStatusUpdate(); + } + + // ------ ui -------- + + /* + * @see WizardPage#createControl + */ + 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); + createEnclosingTypeControls(composite, nColumns); + + createSeparator(composite, nColumns); + + createTypeNameControls(composite, nColumns); + createModifierControls(composite, nColumns); + + createSuperClassControls(composite, nColumns); + createSuperInterfacesControls(composite, nColumns); + + createMethodStubSelectionControls(composite, nColumns); + + setControl(composite); + + Dialog.applyDialogFont(composite); + // WorkbenchHelp.setHelp(composite, + // IJavaHelpContextIds.NEW_CLASS_WIZARD_PAGE); + } + + /* + * @see WizardPage#becomesVisible + */ + public void setVisible(boolean visible) { + super.setVisible(visible); + if (visible) { + setFocus(); + } + } + + private void createMethodStubSelectionControls(Composite composite, + int nColumns) { + Control labelControl = fMethodStubsButtons.getLabelControl(composite); + LayoutUtil.setHorizontalSpan(labelControl, nColumns); + + DialogField.createEmptySpace(composite); + + Control buttonGroup = fMethodStubsButtons + .getSelectionButtonsGroup(composite); + LayoutUtil.setHorizontalSpan(buttonGroup, nColumns - 1); + } + + /** + * Returns the current selection state of the 'Create Main' checkbox. + * + * @return the selection state of the 'Create Main' checkbox + */ + public boolean isCreateMain() { + return fMethodStubsButtons.isSelected(0); + } + + /** + * Returns the current selection state of the 'Create Constructors' + * checkbox. + * + * @return the selection state of the 'Create Constructors' checkbox + */ + public boolean isCreateConstructors() { + return fMethodStubsButtons.isSelected(1); + } + + /** + * Returns the current selection state of the 'Create inherited abstract + * methods' checkbox. + * + * @return the selection state of the 'Create inherited abstract methods' + * checkbox + */ + public boolean isCreateInherited() { + return fMethodStubsButtons.isSelected(2); + } + + /** + * Sets the selection state of the method stub checkboxes. + * + * @param createMain + * initial selection state of the 'Create Main' checkbox. + * @param createConstructors + * initial selection state of the 'Create Constructors' checkbox. + * @param createInherited + * initial selection state of the 'Create inherited abstract + * methods' checkbox. + * @param canBeModified + * if true the method stub checkboxes can be + * changed by the user. If false the buttons are + * "read-only" + */ + public void setMethodStubSelection(boolean createMain, + boolean createConstructors, boolean createInherited, + boolean canBeModified) { + fMethodStubsButtons.setSelection(0, createMain); + fMethodStubsButtons.setSelection(1, createConstructors); + fMethodStubsButtons.setSelection(2, createInherited); + + fMethodStubsButtons.setEnabled(canBeModified); + } + + // ---- creation ---------------- + + /* + * @see NewTypeWizardPage#createTypeMembers + */ + // protected void createTypeMembers(IType type, ImportsManager imports, + // IProgressMonitor monitor) throws CoreException { + // boolean doMain= isCreateMain(); + // boolean doConstr= isCreateConstructors(); + // boolean doInherited= isCreateInherited(); + // createInheritedMethods(type, doConstr, doInherited, imports, new + // SubProgressMonitor(monitor, 1)); + // + // if (doMain) { + // StringBuffer buf= new StringBuffer(); + // buf.append("public static void main("); //$NON-NLS-1$ + // buf.append(imports.addImport("java.lang.String")); //$NON-NLS-1$ + // buf.append("[] args) {}"); //$NON-NLS-1$ + // type.createMethod(buf.toString(), null, false, null); + // } + // + // IDialogSettings section= getDialogSettings().getSection(PAGE_NAME); + // if (section == null) { + // section= getDialogSettings().addNewSection(PAGE_NAME); + // } + // section.put(SETTINGS_CREATEMAIN, doMain); + // section.put(SETTINGS_CREATECONSTR, doConstr); + // section.put(SETTINGS_CREATEUNIMPLEMENTED, doInherited); + // + // if (monitor != null) { + // monitor.done(); + // } + // } +}