如何通过JFace Eclipse Wizard页面执行自定义导航?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何通过JFace Eclipse Wizard页面执行自定义导航?相关的知识,希望对你有一定的参考价值。

我有六页的Eclipse JFace向导。在第一个,我有检查按钮来选择要显示的页面 - 如果你全部检查,你将通过整个向导,但你也可以只选择特定的页面,然后只显示那些页面。

到目前为止,我使用了迭代器和表示每个页面的枚举对象。我在getNextPage函数中调用了迭代器的下一个对象,并在if..else的情况下以正确的顺序返回某些页面。问题是,getNextPage不仅在按下Next按钮时被调用,而且在pageComplete事件触发时也被调用,因此迭代器在我想要的时候不会更新它的光标,并且它最终会变快。这是我的假设的片段:

else if(page == FirstPage )
{
    // iterator contains SelectedAction - enum objects representing pages
    this.pageIterator = page.getWizardPagesList().iterator();

    if(pageIterator.hasNext())
    {
        return selectedActionToPage(pageIterator.next());
    }
}
else
{
    if(pageIterator.hasNext())
    {
        SelectedAction action = pageIterator.next();
        if(!pageIterator.hasNext())
        {
         // we check if current page was last one
            setFinished(true);
            setLastPage(selectedActionToPage(action));
        }
        // selectedActionToPage converts enum object to WizardPage class
        return selectedActionToPage(action);
    }
    else if((pageIterator != null) && !pageIterator.hasNext())
    {
        return page;
    }
}
return page;

特别是,我想知道的事情是:

首先,有没有其他方法来捕获下一步按钮单击?我知道WizardDialog类中有NextPressed方法,但我不知道如何从我的Wizard类或WizardPage调用它的实例。第二,是否有其他方法可以自定义导航页面,转到指定页面?

答案

不,您不应该尝试拦截下一步按钮,单击该逻辑对于向导对话框是私有的,您不应该试图干扰它,

你可以覆盖WizardPage

public IWizardPage getNextPage()

方法或你可以覆盖Wizard

public IWizardPage getNextPage(IWizardPage page)

您可能还需要覆盖匹配的getPreviousPage方法。无论何时调用该方法,您都必须使代码工作。您将获得有关当前页面的信息,您的代码应使用该信息来确定下一页。

以上是关于如何通过JFace Eclipse Wizard页面执行自定义导航?的主要内容,如果未能解决你的问题,请参考以下文章

jface编程报错java.lang.NoSuchMethodError: org.eclipse.jface.util.Util.isMac()Z

在jface的tableviewer中,怎么通过双击事件得到点击的是哪个单元格?

eclipse如何设置默认字体

如何使用来自 Eclipse JFace 的 IDecorationContext api

导入org.eclipse.jface无法在Eclipse Luna中解析

火星org.eclipse.jface.text导出来没有代码怎么解决