Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何创建多页工作集向导_Java_Eclipse Plugin_Working Set - Fatal编程技术网

Java 如何创建多页工作集向导

Java 如何创建多页工作集向导,java,eclipse-plugin,working-set,Java,Eclipse Plugin,Working Set,我正在开发一个使用自定义工作集的Eclipse插件。现在,用户可以通过文件>新建>其他…>自定义工作集 默认情况下,还可以通过Project Explorer>Select working set…>刚出现的这些工作集向导,例如Java工作集、资源工作集。。。全部由一页组成。从技术上讲,有一个“下一步”按钮,但在选择工作集类型后,该按钮将被禁用 是否有任何方法可以覆盖该行为以启用多页向导?我相信我必须使用WorkingSetNewWizard类或IWorkingSetNewWizard接口,但是

我正在开发一个使用自定义工作集的Eclipse插件。现在,用户可以通过文件>新建>其他…>自定义工作集

默认情况下,还可以通过Project Explorer>Select working set…>刚出现的这些工作集向导,例如Java工作集、资源工作集。。。全部由一页组成。从技术上讲,有一个“下一步”按钮,但在选择工作集类型后,该按钮将被禁用

是否有任何方法可以覆盖该行为以启用多页向导?我相信我必须使用WorkingSetNewWizard类或IWorkingSetNewWizard接口,但是我不知道如何定义。

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

page类必须实现org.eclipse.ui.dialogs.IWorkingSetPage

Eclipse帮助中的示例如下:


注意:WorkingSetNewWizard是一个内部类,所以您不能在代码中引用它。

所以我设法让它工作

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

处理工作集创建的类是WorkingSetNewWizard。默认情况下,它会创建一个由两个页面组成的向导—工作集类型选择和定义的工作集页面,与用户的选择相对应,这就是为什么GUI中有一个“下一步”按钮

要添加另一个页面,您必须重写WizardPage.getNextPage,再次感谢此页面类中的greg-449。传递所需的页面不是现成的,因为您必须将创建向导添加到新的IWizardPage:


通过这种方式,第二个页面不必实现IWorkingSetPage,因为按下finish按钮将触发第一个页面的finish功能。

我已经设法定义了pageClass,但是否可以通过某种方式添加更多页面而不仅仅是一个页面?工作集的定义可以在第一页完成,但我还有其他设置页要添加到向导中。我已经用org.eclipse.ui.newWizards扩展点实现了INewWizard,但现在我想向工作集对话框添加类似的页面。您可以尝试覆盖页面上的WizardPage.getNextPage,但我不知道它是否有效。是的,我刚刚尝试了,它启用了“下一步”按钮,但是现在我必须弄清楚如何显示一个新页面,因为现在我在org.eclipse.jface.wizard.WizardDialog.setWizardDialog.java:1173获得了一个空指针,但再次感谢您的帮助!
@Override
public IWizardPage getNextPage() {
    IWizardPage page = new WizardPage2();
    page.setWizard(getWizard());
    return page;
}