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