0

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

默认情况下,也可以通过工作集选择对话框创建工作集Project Explorer > Select Working Set... > New。那些工作集“向导”(例如Java Working-Set, Resource Working-Set, ...)都由一个页面组成。从技术上讲,有一个下一步按钮,但在工作集类型选择后它被禁用。

有没有办法覆盖该行为以启用多页向导?我相信我必须使用WorkingSetNewWizard类或IWorkingSetNewWizard接口,但我不确定如何。

4

2 回答 2

1

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

页面类必须实现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是一个内部类,所以你不能在你的代码中引用它。

于 2020-03-06T12:41:32.660 回答
0

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

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

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

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

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

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

于 2020-03-10T10:46:46.407 回答