Java ウィザード・ページ

org.eclipse.jdt.ui.wizards パッケージは、Java エレメントを作成および構成するためのウィザード・ページを提供します。 いくつかの事前作成ページが使用できるよう提供されています。

Java ビルド設定の構成

JavaCapabilityConfigurationPage は、 Java ビルド設定 (ソース・フォルダー・セットアップ、参照されるプロジェクト、参照およびエクスポートされるライブラリー) の編集をサポートします。   

プラグインのプロジェクトを構成するウィザードを提供する必要があり、 Java ネーチャーとその他の Java プロジェクト機能でそのウィザードの構成も行う場合、 (NewJavaProjectWizardPage をサブクラス化するのではなく) このページを使用してください。

新規 Java エレメントの作成

ウィザード・ページの階層は、新規 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); 
        }
   }
}

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