org.eclipse.jdt.ui.wizards 包提供用于创建和配置 Java 元素的向导页。提供了若干个预制的页面供您使用。
JavaCapabilityConfigurationPage 支持编辑 Java 构建设置(源文件夹设置、引用的项目以及引用和导出的库)。
如果需要提供向导来为插件配置项目并且还将其配置为具有 Java 性质和其它 Java 项目功能,则应使用此页(而不是创建 NewJavaProjectWizardPage 的子类)。
向导页的层次结构支持创建新的 Java 元素。
NewElementWizardPage 是用于定义向导的基本操作的抽象类。在层次结构中提供了其它的抽象类来使定制具有具体向导提供的功能。
可以直接使用具体创建向导,通常不应创建它们的子类。
接口 IClasspathContainerPage 定义了用于添加向导页的结构,该向导页允许用户定义新的类路径容器条目或编辑现有的类路径容器条目。如果插件已使用 JDT 核心 org.eclipse.jdt.core.classpathContainerInitializer 扩展点定义了它自已的类路径容器类型,则您将可能想定义相应的向导页来编辑和创建此类型的类路径容器。
插件的标记应提供扩展 org.eclipse.jdt.ui.classpathContainerPage。在扩展标记中,提供了实现 IClasspathContainerPage 的类的名称。如果要在选择了类路径时在向导页中提供关于类路径的上下文的其它信息,则可以实现 IClasspathContainerPageExtension 以初始化任何依赖于当前类路径中的所选条目的状态。
除了使用预制的页以外,还可以创建向导页的子类以添加自已的输入字段或影响代码生成。应使用 NewElementWizardPage 层次结构中的抽象类来定制向导,而不是创建具体类的子类。
以下是新类型向导页面的样本,定制这些页面以创建 JUnit 测试用例类。该页面初始化带有“junit.framework.TestCase”的超类字段,并添加一个复选框来控制是否要创建 setUp() 和 tearDown() 方法的方法存根。
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 setUp() {}"
newType.createMethod(tearDownMathod, null, false, null);
}
}
}