我有六页的Eclipse JFace向导。在第一个,我有检查按钮来选择要显示的页面 - 如果你全部检查,你将通过整个向导,但你也可以只选择特定页面,然后只显示那些页面。
到目前为止,我使用了迭代器和表示每个页面的枚举对象。我在getNextPage
函数中调用了迭代器的下一个对象,并在if..else的情况下以正确的顺序返回某些页面。问题是,getNextPage
不仅在按下下一步按钮时调用,而且在调用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调用它的实例。
第二,还有其他方法可以自定义导航页面,转到指定的页面吗?
答案 0 :(得分:0)
不,您不应该尝试拦截下一个按钮,单击该逻辑对于向导对话框是私有的,您不应该试图干扰它,
您可以覆盖WizardPage
:
public IWizardPage getNextPage()
方法或您可以覆盖Wizard
public IWizardPage getNextPage(IWizardPage page)
您可能还需要覆盖匹配的getPreviousPage
方法。无论何时调用该方法,您都必须使代码工作。您将获得有关当前页面的信息,您的代码应使用该信息来确定下一页。