如何创建多页工作集向导

How to create multi-page working-set wizards

我正在开发一个使用自定义工作集的 Eclipse 插件。现在,用户可以通过 File > New > Other... > Custom Working Set 启动多页向导来创建这些工作集。

默认情况下,也可以通过 Project Explorer > Select Working Set... > New 的工作集选择对话框创建工作集。这些工作集 "wizards"(例如 Java Working-SetResource Working-Set、...)都包含一个页面。技术上有一个下一步按钮,但在选择工作集类型后它被禁用。

有什么方法可以覆盖该行为以启用多页向导吗?我相信我必须使用 WorkingSetNewWizard class 或 IWorkingSetNewWizard 界面,但我不确定如何操作。

用于定义新工作集类型的 org.eclipse.ui.workingSets 扩展点的 workingSet 元素有一个 pageClass 属性,用于指定 class 实现新工作集向导的第二页。

页面 class 必须实现 org.eclipse.ui.dialogs.IWorkingSetPage

Eclipse帮助中的例子:

<extension point="org.eclipse.ui.workingSets">
    <workingSet
        id="org.eclipse.ui.resourceWorkingSetPage"
        name="Resource"
        description="Contains basic resources (files, folders, and projects)"
        icon="icons/resworkset.png"
        pageClass="org.eclipse.ui.internal.dialogs.ResourceWorkingSetPage"
        updaterClass="org.eclipse.ui.internal.workingsets.ResourceWorkingSetUpdater"
        elementAdapterClass="org.eclipse.ui.internal.workingsets.ResourceWorkingSetElementAdapter">
    </workingSet>
 </extension>

注意:WorkingSetNewWizard 是一个内部 class,因此您不得在代码中引用它。

所以我设法让这个东西工作了!

正如 greg-449 指出的那样,添加自定义工作集可以通过在扩展点 org.eclipse.ui.workingSets 定义它并实现扩展 "WizardPage" 的页面 class 来完成实现 org.eclipse.ui.dialogs.IWorkingSetPage

处理工作集创建的 class 是 WorkingSetNewWizard。默认情况下,它会创建一个包含两个页面的向导 - 工作集类型选择和定义的工作集页面,对应于用户的选择(这就是该 GUI 中有一个 Next 按钮的原因) .

要添加另一个页面,您必须在此页面 class 中覆盖 WizardPage.getNextPage(再次感谢 greg-449)。传递所需的页面无法开箱即用,因为您必须将创建向导添加到新的 IWizardPage:

@Override
public IWizardPage getNextPage() {
    IWizardPage page = new WizardPage2();
    page.setWizard(getWizard());
    return page;
}

这样一来,第二页就不用实现IWorkingSetPage了,因为按下finish按钮会触发第一页的finish()功能