org.eclipse.ui.newWizards

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

<extension
    point = "org.eclipse.ui.newWizards">
    <category
        id = "org.eclipse.ui.examples.readmetool.new"
        name="Example Creation Wizards">
    </category>
    <wizard
        id = "org.eclipse.ui.examples.readmetool.wizards.new.file"
        name = "Readme File"
        class="org.eclipse.ui.examples.readmetool.ReadmeCreationWizard"
        category="org.eclipse.ui.examples.readmetool.new"
        icon="icons/basic/obj16/newreadme_wiz.gif">
        <description>An example of a wizard that creates sample Readme file
        </description>
        <selection class="org.eclipse.core.resources.IResource"/>
    </wizard>
</extension>

種類說明使用精靈選項對話框尋找和啟動精靈時將精靈分類的地方。 種類 name("範例建立精靈")定義在精靈中使用的標籤。   精靈才身會指定給此種類。    它的名稱圖示說明都顯示在下面的新精靈選項對話框。

所有這一切依據 plugin.xml 檔案中的標示而顯示。  要等到使用者選 取下一步按鈕之後才會執行外掛程式。  執行外掛程式之後,工作台會建立 在標示中指定的精靈類別的實例,並傳遞一個預期的選項類別給它。

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

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

頁面

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

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

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

public void createControl(Composite parent) {
    // 繼承預設的儲存器和名稱規格小組件
    super.createControl(parent);
    Composite composite = (Composite)getControl();
    ...
    // 範例區段產生群組
    Group group = new Group(composite,SWT.NONE);
    group.setLayout(new GridLayout());
    group.setText("Automatic sample section generation");
    group.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL |
        GridData.HORIZONTAL_ALIGN_FILL));
    ...
    // 範例區段產生勾選框
    sectionCheckbox = new Button(group,SWT.CHECK);
    sectionCheckbox.setText("Generate sample section titles");
    sectionCheckbox.setSelection(true);
    sectionCheckbox.addListener(SWT.Selection,this);

    subsectionCheckbox = new Button(group,SWT.CHECK);
    subsectionCheckbox.setText("Generate sample subsection titles");
    subsectionCheckbox.setSelection(true);
    subsectionCheckbox.addListener(SWT.Selection,this);
    ...
    // 開啟檔案來編輯之勾選框
    openFileCheckbox = new Button(composite,SWT.CHECK);
    openFileCheckbox.setText("Open file for editing when done");
    openFileCheckbox.setSelection(true);
    ...
}

如果您瞭解 Standard Widget Toolkit 中的 概念,您應該看得懂這個程式碼。

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

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

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

精靈

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

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

public void init(IWorkbench workbench,IStructuredSelection selection) {
    this.workbench = workbench;
    this.selection = selection;
    setWindowTitle("New Readme File");
    setDefaultPageImageDescriptor(ReadmeImages.README_WIZARD_BANNER);
}

public void addPages() {
    mainPage = new ReadmeCreationPage(workbench, selection);
    addPage(mainPage);
}

public boolean performFinish() {
    return mainPage.finish();
}

完成的精靈外觀如下: