2008-09-05 53 views
6

我正在为Eclipse RCP应用程序编写一个向导。在对文件进行一些处理并接受一些用户输入之后,我不想让用户回头修改。此时,他们必须接受或拒绝他们即将对系统做出的更改。您可以禁用JFace向导中的后退按钮吗?

我似乎无法找到的是一种方法调用,可以让我覆盖显示的按钮或用户按下后退按钮的能力。我宁愿它不在那里或至少被禁用。

有没有人找到一种方法来使用JFace WizardWizardPage

可用性明智,我违反向导约定?我应该考虑采取不同的方法解决问题吗?

回答

11

您可以在向导页面实现中从getPreviousPage()方法返回null。

3

从UI的角度来看,这似乎相当糟糕。如果您的用户犯了一个错误,想要回头修改并且不允许他们,您的用户将会感到沮丧。我认为将应用程序更改为允许返回而不是寻找方法来阻止它会好得多。

0

使用标准JFace向导API无法执行此操作。我的团队通过编写一个自定义的WizardDialog来完成此任务。我们在Eclipse RCP应用程序上执行了此操作,而不是在Eclipse插件上执行此操作。禁用后退按钮违反惯例,但我们的业务分析师确实希望获得该功能。

6

扩展在jodonell的回答是:

禁用后退按钮是难度比它应该是,由于WizardPage.getPreviousPage的默认实现非直观的行为()。您可以调用setPreviousPage(null),getPreviousPage()仍然返回上一页。你需要重写getPreviousPage()的执行情况,以便禁用后退按钮:

public abstract class MyWizardPage extends WizardPage { 
    private boolean backButtonEnabled = true; 

    public void setBackButtonEnabled(boolean enabled) { 
     backButtonEnabled = enabled; 
     getContainer().updateButtons(); 
    } 

    @Override 
    public IWizardPage getPreviousPage() { 
     if (!backButtonEnabled) { 
      return null; 
     } 
     return super.getPreviousPage(); 
    } 
} 

请参见我的博客文章的几个JFace的向导提示和技巧:

http://nsawadsky.blogspot.com/2011/07/jface-wizard-tips-and-tricks.html