WizardNewFileCreationPage命令

时间:2016-07-11 10:57:54

标签: eclipse eclipse-plugin eclipse-rcp wizard

我正在创建一个导出向导,包括用户可以选择导出的格式,然后使用WizardNewFileCreationPage选择导出的位置。

为此,我创建了3个页面,一个扩展了wizardPage,其中包含一个收音机以设置要调用的下一页,还有另外两个页面正在等待格式并扩展了WizardNewFileCreationPage。

它的工作几乎完美,我唯一的问题是“完成”按钮,即使我覆盖了函数isPageComplete以将页面验证仅限制为函数validatePage,也需要点击即可满足所有导出格式。

看起来函数validatePage不仅对它自己的控件有效,而且还有向导中的类WizardNewFileCreationPage实现的所有控件。

我在某个地方出错并且有人知道解决方案吗?

此致 沃尔多

2 个答案:

答案 0 :(得分:0)

所以,我认为我的问题来自于我没有实现canFinish方法,它在其默认实现中要求完成向导中包含的所有页面。为了避免我的问题,我这样做了:

@Override
public boolean canFinish() {
    if (this.getContainer().getCurrentPage() == mainPage)
        return false;
    return this.getContainer().getCurrentPage().isPageComplete();
}

注意:我的"主页" attribute是定义导出格式的一个属性,然后是要使用的nextPage。

另外,我一直通过这种方式调用WizardNewFileCreationPage来验证我的页面是否完整:

@Override
public boolean isPageComplete() {
    return this.validatePage();
}

答案 1 :(得分:0)

WizardDialog显示对话框驱动按钮启用。在不同的点上,它称为updateButtons方法。这反过来调用Wizard canFinish方法来设置完成按钮状态。

canFinish的默认设置是为每个页面调用WizardPage isPageComplete方法,即使对于当前未有效的网页也是如此。

对于WizardNewFileCreationPageisPageComplete方法会查询validatePage方法的结果。

因此,您可以覆盖Wizard canFinish方法,仅测试您关注的网页。或者,您可以覆盖单个页面isPageComplete方法以返回所需的结果。