org.eclipse.ui.newWizards

org.eclipse.ui.newWizards 拡張ポイントを使用すると、ウィザードをワークベンチの 「ファイル」>「新規」> メニュー・オプションに追加することができます。 readme ツールの例では、この拡張ポイント定義を使用して、次のように Readme File ウィザードを追加します。

<extension
      point = "org.eclipse.ui.newWizards">
	<category
         id = "org.eclipse.ui.examples.readmetool.new"
	   parentCategory="org.eclipse.ui.Examples"
	   name="%NewWizard.category">
	</category>
 	<wizard
	   id = "org.eclipse.ui.examples.readmetool.wizards.new.file"
      	   name = "%NewWizard.name"
	   class="org.eclipse.ui.examples.readmetool.ReadmeCreationWizard"
	   category="org.eclipse.ui.Examples/org.eclipse.ui.examples.readmetool.new"
	   icon="icons/obj16/newreadme_wiz.gif">
    	   <description>%NewWizard.desc</description>
	   <selection class="org.eclipse.core.resources.IResource"/>
	</wizard>
</extension>

category は、ウィザードのグループを記述します。 オプションの parentCategory は、既存のカテゴリーの子として新しいカテゴリーを確立します。    

トップレベルのカテゴリーは、「ファイル」>「新規」メニューに表示されます。 この例では、parentCategory が "Examples" カテゴリーに設定されています。  親パッケージはどこから生成されるのでしょうか?  org.eclipse.ui プラグインが、そのマークアップで標準サンプル・カテゴリーを定義しています。 

<extension
        point="org.eclipse.ui.newWizards">
    <category
          name="%NewWizards.Category.Examples"
          id="org.eclipse.ui.Examples">
    </category>
    ...

このカテゴリーは「ファイル」>「新規」メニューに表示されます。

Examples カテゴリーのある「新規」メニュー

 

readme ツールのカテゴリー name は、親カテゴリーの下にあるグループの次の層に使用されるラベルを定義します。 これらのカテゴリーは、「新規サンプル」ウィザードの左側に表示されています。  ウィザードの name および icon は、カテゴリーをクリックしたときにウィザードの右側に表示されます。  ウィザードの description は、下に示されているように、右側のリストから選択したときにウィザードの上部に表示されます。 

readme エントリーのある「新規サンプル」ウィザード

このウィザードに関する情報は、plugin.xml ファイルのマークアップのために、単独で表示されます。 ユーザーが「次へ」ボタンをクリックするまで、実行されるプラグイン・コードはありません。  このボタンが押されると、ワークベンチは、マークアップで指定されているウィザードの wizard の class のインスタンスを生成し、 それを期待される selection の class に渡します。 

この拡張で識別されるクラス (ReadmeCreationWizard) は、 INewWizard インターフェースを インプリメントしなければなりません。  ほとんどのウィザードは、プラットフォームの Wizard クラスを拡張することによって これをインプリメントしています。ただし、これはインプリメンテーションのメカニズムであって、 拡張ポイントがこれを要求しているわけではありません。

ウィザード自体は、内部にページを作成すること以外ほとんど何も行いません。 最初に、ページのインプリメンテーションについて説明します。次に、このウィザードに戻ります。

ページ

ワークベンチは、ウィザード拡張ポイントごとに実行される処理のタイプをサポートする、 基本ウィザード・ページ・クラスを提供しています。 これらのページを使用するか、拡張して、処理を追加することができます。

ReadmeCreationWizard の目標は、新規のファイルを作成し、必要な内容をファイルに追加し、 オプションとして、そのファイルに対してエディターを開くことです。 このページでは、ファイルに追加する内容と、 エディターを起動する必要があるのかどうかをユーザーに指定させるコントロールを定義する必要があります。

ここでは、WizardNewFileCreationPage を拡張することにより、ウィザード・ページ ReadmeCreationPage を作成します。 ウィザード・ページのコントロールは、ビューまたはエディターのコントロールの定義に似た方法で定義されます。 このページは createControl メソッドをインプリメントし、 提供されている Composite の子として、 必要な SWT ウィジェットを作成します。 スーパークラスは、新規ファイルの処理をサポートするウィジェットをすでに追加しているので、 必要なことは、このウィザード・ページの createControl メソッドを拡張し、 セクションの生成とエディターのオープンを制御するチェック・ボックスを追加することだけです。

    public void createControl(Composite parent) {
      // inherit default container and name specification widgets
      super.createControl(parent);
      Composite composite = (Composite)getControl();
      ...
      // sample section generation group
      Group group = new Group(composite,SWT.NONE);
      group.setLayout(new GridLayout());
      group.setText(MessageUtil.getString("Automatic_sample_section_generation"));
      group.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL |
         GridData.HORIZONTAL_ALIGN_FILL));
      ...
      // sample section generation checkboxes
      sectionCheckbox = new Button(group,SWT.CHECK);
      sectionCheckbox.setText(MessageUtil.getString("Generate_sample_section_titles"));
      sectionCheckbox.setSelection(true);
      sectionCheckbox.addListener(SWT.Selection,this);

      subsectionCheckbox = new Button(group,SWT.CHECK);
      subsectionCheckbox.setText(MessageUtil.getString("Generate_sample_subsection_titles"));
      subsectionCheckbox.setSelection(true);
      subsectionCheckbox.addListener(SWT.Selection,this);
      ...
      // open file for editing checkbox
      openFileCheckbox = new Button(composite,SWT.CHECK);
      openFileCheckbox.setText(MessageUtil.getString("Open_file_for_editing_when_done"));
      openFileCheckbox.setSelection(true);
      ...
   }

標準ウィジェット・ツールキット」の概念を理解していると、 このコードをたどることができます。

ページのインプリメントのための基本パターンには、以下のものがあります。

ReadmeCreationPage クラスは、この振る舞いの多くを WizardNewFileCreationPage から 継承しています。  これらのクラスのインプリメンテーションをブラウズし、さらに情報がないか調べてください。

ページの実行内容を理解したところで、もう一度ウィザードを見てみましょう。

ウィザード

ウィザードは、ページを作成し、「終了」のロジックを提供します。

ウィザードのインプリメントのための基本パターンには、以下のものがあります。

完成したウィザードは、次のようになります。

「readme ファイル作成」ウィザード・ページ

    

Copyright IBM Corporation and others 2000, 2003.