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