如何建立自訂的「新 Java 元素」精靈頁面

org.eclipse.jdt.ui.wizards 套件可提供有關建立 Java 元素的精靈頁面。除了使用組合頁面外,用戶端也可以繼承精靈頁面, 以新增自己的輸入欄位,或影響程式碼的產生。以下是新類型精靈頁面的範例, 其是自訂成建立 JUnit Test Case 類別。 此頁面以 "junit.framework.TestCase" 來起始設定超類別欄位, 並新增一個用以控制是否要為 setUp() 與 tearDown() 方法建立方法 Stub 的勾選框。

public class TestCaseWizardPage extends NewTypeWizardPage {

private Button fCreateStubs; public TestCaseWizardPage() { super(true, "TestCaseWizardPage"); } /** * 在使用對應的選擇項起始設定期間, * 管理此精靈頁面的精靈必須呼叫此方法。 */ public void init(IStructuredSelection selection) { IJavaElement jelem= getInitialJavaElement(selection); initContainerPage(jelem); initTypePage(jelem); // define the components for which a status is desired IStatus[] status= new IStatus[] { fContainerStatus, isEnclosingTypeSelected() ? fEnclosingTypeStatus : fPackageStatus, fTypeNameStatus, }; updateStatus(status); } 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); } } }

Copyright IBM Corporation and others 2000, 2002. All Rights Reserved.