/******************************************************************************* * 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
.
*
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();
// }
// }
}