我正在为Eclipse RCP应用程序编写一个向导。在对文件进行一些处理并进行一些用户输入之后,我不想让用户返回进行更改。此时,他们必须接受或拒绝他们将要对系统进行的更改。
我似乎找不到的是一种方法调用,它允许我覆盖显示的按钮或用户点击后退按钮的能力。我宁愿它不存在或者至少被禁用。
是否有人使用JFace Wizard和WizardPage找到了解决方法?
可用性方面,我是否违反了向导惯例?我应该考虑采用不同的方法解决问题吗?
答案 0 :(得分:11)
您可以在向导页面实现中从getPreviousPage()方法返回null。
答案 1 :(得分: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
答案 2 :(得分:3)
从UI的角度来看,这似乎相当糟糕。如果用户犯了错误并希望返回并纠正它而你不会让他们失望,那么他们会感到沮丧。我认为更改应用程序以允许返回而不是寻找防止它的方法会更好。
答案 3 :(得分:0)
使用标准JFace向导API无法执行此操作。我的团队通过编写自定义WizardDialog来完成此任务。我们在Eclipse RCP应用程序上执行此操作,而不是在eclipse插件上执行此操作。禁用后退按钮违反惯例,但我们的业务分析师确实想要这个功能。