blob: c1d667d4d82d63c0724f9c7954498140643a12a7 [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en" xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<meta name="copyright" content=
"Copyright (c) IBM Corporation and others 2000, 2011. This page is made available under license. For full details see the LEGAL in the documentation book that contains this page." />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<link rel="STYLESHEET" href="../book.css" charset="ISO-8859-1" type="text/css" />
<title>Java wizard pages</title>
<link rel="stylesheet" type="text/css" href="../book.css" />
</head>
<body>
<h2>Java wizard pages</h2>
<p>The <a href=
"../reference/api/org/eclipse/jdt/ui/wizards/package-summary.html"><b>org.eclipse.jdt.ui.wizards</b></a>
package provides wizard pages for creating and configuring Java elements.&nbsp; Several
prefabricated pages are provided for your use.</p>
<h3 class="c1">Creating new Java elements</h3>
<p>A hierarchy of wizard pages support the creation of new Java elements.&nbsp;&nbsp;</p>
<p><a href=
"../reference/api/org/eclipse/jdt/ui/wizards/NewElementWizardPage.html"><b>NewElementWizardPage</b></a>
is the abstract class that defines the basic operation of the wizard.&nbsp; Additional abstract
classes are provided in the hierarchy for making customizations to the functionality provided by
the concrete wizards.</p>
<p>The concrete creation wizards can be used directly and generally are not intended to be
subclassed.&nbsp;</p>
<ul>
<li><a href=
"../reference/api/org/eclipse/jdt/ui/wizards/NewClassWizardPage.html"><b>NewClassWizardPage</b></a>
allows users to define a new Java class. Clients can instantiate and configure the wizard page. To
implement your own type wizard subclass <a href=
"../reference/api/org/eclipse/jdt/ui/wizards/NewTypeWizardPage.html"><b>NewTypeWizardPage</b></a>.
To simply open the original 'New Java Class wizard' use the <a href=
"../reference/api/org/eclipse/jdt/ui/actions/OpenNewClassWizardAction.html"><b>OpenNewClassWizardAction</b></a>.</li>
<li><a href=
"../reference/api/org/eclipse/jdt/ui/wizards/NewInterfaceWizardPage.html"><b>NewInterfaceWizardPage</b></a>
allows users to define a new Java interface. Clients can instantiate and configure the wizard page.
To implement your own type wizard subclass <a href=
"../reference/api/org/eclipse/jdt/ui/wizards/NewTypeWizardPage.html"><b>NewTypeWizardPage</b></a>.
To simply open the original 'New Java Interface wizard' use the <a href=
"../reference/api/org/eclipse/jdt/ui/actions/OpenNewInterfaceWizardAction.html"><b>OpenNewInterfaceWizardAction</b></a>.</li>
<li><a href=
"../reference/api/org/eclipse/jdt/ui/wizards/NewEnumWizardPage.html"><b>NewEnumWizardPage</b></a>
allows users to define a new Java enumeration. Clients can instantiate and configure the wizard
page. To implement your own type wizard subclass <a href=
"../reference/api/org/eclipse/jdt/ui/wizards/NewTypeWizardPage.html"><b>NewTypeWizardPage</b></a>.
To simply open the original 'New Java Enum wizard' use the <a href=
"../reference/api/org/eclipse/jdt/ui/actions/OpenNewEnumWizardAction.html"><b>OpenNewEnumWizardAction</b></a>.</li>
<li><a href=
"../reference/api/org/eclipse/jdt/ui/wizards/NewAnnotationWizardPage.html"><b>NewAnnotationWizardPage</b></a>
allows users to define a new Java annotations. Clients can instantiate and configure the wizard
page. To implement your own type wizard subclass <a href=
"../reference/api/org/eclipse/jdt/ui/wizards/NewTypeWizardPage.html"><b>NewTypeWizardPage</b></a>.
To simply open the original 'New Java Annotation wizard' use the <a href=
"../reference/api/org/eclipse/jdt/ui/actions/OpenNewAnnotationWizardAction.html"><b>OpenNewAnnotationWizardAction</b></a>.</li>
<li><a href=
"../reference/api/org/eclipse/jdt/ui/wizards/NewPackageWizardPage.html"><b>NewPackageWizardPage</b></a>
allows users to create a new Java package. Clients can instantiate and configure the wizard page.
To simply open the original 'New Java Package wizard' use the <a href=
"../reference/api/org/eclipse/jdt/ui/actions/OpenNewPackageWizardAction.html"><b>OpenNewPackageWizardAction</b></a>.</li>
<li><a href=
"../reference/api/org/eclipse/jdt/ui/wizards/NewJavaProjectWizardPageOne.html"><b>NewJavaProjectWizardPageOne</b></a>
and <a href=
"../reference/api/org/eclipse/jdt/ui/wizards/NewJavaProjectWizardPageTwo.html"><b>NewJavaProjectWizardPageTwo</b></a>
allow users to create a new Java project wizard. Clients can use and configure these pages in their
own project wizard. To simply open the original 'New Java Project wizard' use the <a href=
"../reference/api/org/eclipse/jdt/ui/actions/OpenNewJavaProjectWizardAction.html"><b>OpenNewJavaProjectWizardAction</b></a></li>
</ul>
<h3>Contributing a classpath container wizard page</h3>
<p>The interface <a href=
"../reference/api/org/eclipse/jdt/ui/wizards/IClasspathContainerPage.html"><b>IClasspathContainerPage</b></a>
defines a structure for contributing a wizard page that allows a user to define a new classpath
container entry or edit an existing one.&nbsp; If your plug-in has defined its own type of
classpath container using the JDT Core <b><a href=
"../reference/extension-points/org_eclipse_jdt_core_classpathContainerInitializer.html">org.eclipse.jdt.core.classpathContainerInitializer</a></b>
extension point, then you will probably want to define a corresponding wizard page for editing and
creating classpath containers of this type.</p>
<p>Your plug-in's markup should provide an extension <b><a href=
"../reference/extension-points/org_eclipse_jdt_ui_classpathContainerPage.html">org.eclipse.jdt.ui.classpathContainerPage</a>.&nbsp;</b>
In the extension markup, you provide the name of your class that implements <a href=
"../reference/api/org/eclipse/jdt/ui/wizards/IClasspathContainerPage.html"><b>IClasspathContainerPage</b></a>.&nbsp;
If you need additional information in your wizard page about the classpath's context when it is
selected, you can implement <a href=
"../reference/api/org/eclipse/jdt/ui/wizards/IClasspathContainerPageExtension.html"><b>IClasspathContainerPageExtension</b></a>.
If your configuration page wants to returns more than one entry when being added, implement
<a href="../reference/api/org/eclipse/jdt/ui/wizards/IClasspathContainerPageExtension.html"><b>IClasspathContainerPageExtension2</b></a>.</p>
<h3>Customizing a wizard page</h3>
<p>Besides using prefabricated pages, you can subclass the wizard pages to add your own input
fields or to influence the code generation.&nbsp; You should use the abstract classes in the
<a href=
"../reference/api/org/eclipse/jdt/ui/wizards/NewElementWizardPage.html"><b>NewElementWizardPage</b></a>
hierarchy to customize a wizard rather than subclassing the concrete classes.</p>
<p>Below is a sample of a new type wizard page that is customized to create JUnit test case
classes. The page initializes the super class field with "junit.framework.TestCase" and adds a
checkbox that controls whether method stubs for the <code>setUp()</code> and
<code>tearDown()</code> method are to be created.</p>
<pre class="color1">
public class TestCaseWizardPage extends NewTypeWizardPage {
private Button fCreateStubs;
public TestCaseWizardPage() {
super(true, "TestCaseWizardPage");
}
/**
* The wizard managing this wizard page must call this method
* during initialization with a corresponding selection.
*/
public void init(IStructuredSelection selection) {
IJavaElement jelem= getInitialJavaElement(selection);
initContainerPage(jelem);
initTypePage(jelem);
doStatusUpdate();
}
private void doStatusUpdate() {
// define the components for which a status is desired
IStatus[] status= new IStatus[] {
fContainerStatus,
isEnclosingTypeSelected() ? fEnclosingTypeStatus : fPackageStatus,
fTypeNameStatus,
};
updateStatus(status);
}
protected void handleFieldChanged(String fieldName) {
super.handleFieldChanged(fieldName);
doStatusUpdate();
}
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);
// Create the standard input fields
createContainerControls(composite, nColumns);
createPackageControls(composite, nColumns);
createSeparator(composite, nColumns);
createTypeNameControls(composite, nColumns);
createSuperClassControls(composite, nColumns);
// Create the checkbox controlling whether we want stubs
fCreateStubs= new Button(composite, SWT.CHECK);
fCreateStubs.setText("Add 'setUp()' and 'tearDown()' to new class");
GridData gd= new GridData();
gd.horizontalSpan= nColumns;
fCreateStubs.setLayoutData(gd);
setControl(composite);
// Initialize the super type field and mark it as read-only
setSuperClass("junit.framework.TestCase", false);
}
protected void createTypeMembers(IType newType, ImportsManager imports, IProgressMonitor monitor) throws CoreException {
if (fCreateStubs.getSelection()) {
String setUpMathod= "public void setUp() {}";
newType.createMethod(setUpMathod, null, false, null);
String tearDownMathod= "public void tearDown() {}";
newType.createMethod(tearDownMathod, null, false, null);
}
}
}
</pre>
</body>
</html>