org.eclipse.ui.newWizards

您可以使用 org.eclipse.ui.newWizards 延伸點,新增一個精靈到工作台中的檔案 > 新建 >功能表選項。 Readme 工具範例使用這個延伸點定義來新增「README 檔」精靈:

<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>
    ...

這個種類將出現在檔案 > 新建功能表中。

內含「範例」種類的「新建」功能表

 

readme 工具的種類 name 定義用於在母項種類之下進行下一層分組的標籤。  這些種類顯示在新建範例精靈的左側。 當您按一下種類, 精靈的名稱圖示會顯示在精靈的右側。 當在右側清單中選取說明時, 精靈的說明會顯示在精靈的頂端,如下所示:

內含 readme 項目的新建範例精靈

因為 plugin.xml 檔中的標記,所以僅出現精靈的相關資訊。  直到使用者選擇了下一步按鈕之後,才會執行外掛程式碼。 一旦發生這種情況, 工作台會建立在標記中指定的精靈類別的實例,並傳遞一個預期的選項類別給它。

在這個延伸 (ReadmeCreationWizard) 中識別的類別必須實作 INewWizard 介面。大部份精靈透過延伸平台 Wizard 類別來實作該介面,不過這是實作機制,延伸點並不需要它。

精靈本身不做什麼,但會在內部建立頁面。 首先我們來了解一下頁面的實作,然後再回到精靈。

頁面

工作台提供基礎精靈頁面類別,這些類別支援為每一個精靈延伸點執行的處理類型。 您可以使用這些頁面或延伸它們以新增其他處理。

ReadmeCreationWizard 的目標是建立新檔案,新增必要的內容到檔案,還有 對檔案開啟編輯器(這是一個選項)。 頁面需要定義控制項,好讓使用者指定檔案的內容以及是否要啟動編輯 器。

我們延伸 WizardNewFileCreationPage 來建立精靈頁面 ReadmeCreationPage。 以類似檢視畫面或編輯器的控制項定義的方法定義精靈頁面的控制項。 頁面實作 createControl 方法,建立必要的 SWT Widget 作為已提供的 Composite 的子項。 因為超類別已新增那些支援新檔案處理的 Widget,所以只需要在精靈頁面延伸 createControl 方法新增其他勾選框來控制區段的產生以及編輯 器的開啟。

public void createControl(Composite parent) {      // 繼承預設的儲存器和名稱規格 Widget
      super.createControl(parent);
      Composite composite = (Composite)getControl();
      ...
      // 範例區段產生群組
      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));
      ...
      // 範例區段產生之勾選框
      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);
      ...
      // 開啟檔案來編輯之勾選框
      openFileCheckbox = new Button(composite,SWT.CHECK);
      openFileCheckbox.setText(MessageUtil.getString("Open_file_for_editing_when_done"));
      openFileCheckbox.setSelection(true);
      ...
   }

如果您瞭解標準 Widget 工具箱中的 概念,您應該看得懂這個程式碼。

實作頁面的基礎型樣包括:

ReadmeCreationPage 類別從 WizardNewFileCreationPage 繼承許多這種行為。瀏覽這些類別的實作以取得進一步資訊。

現在我們瞭解頁面的用途之後,再看一次精靈。

精靈

精靈負責建立頁面並提供「完成」邏輯。

實作精靈的基礎型樣包括:

完成的精靈外觀如下:

Readme 檔案建立精靈頁面

    

Copyright IBM Corporation and others 2000, 2003.