如何创建多页工作集向导
How to create multi-page working-set wizards
我正在开发一个使用自定义工作集的 Eclipse 插件。现在,用户可以通过 File > New > Other... > Custom Working Set
启动多页向导来创建这些工作集。
默认情况下,也可以通过 Project Explorer > Select Working Set... > New
的工作集选择对话框创建工作集。这些工作集 "wizards"(例如 Java
Working-Set
、Resource
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()
功能
我正在开发一个使用自定义工作集的 Eclipse 插件。现在,用户可以通过 File > New > Other... > Custom Working Set
启动多页向导来创建这些工作集。
默认情况下,也可以通过 Project Explorer > Select Working Set... > New
的工作集选择对话框创建工作集。这些工作集 "wizards"(例如 Java
Working-Set
、Resource
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()
功能