JFace ウィザードの「戻る」ボタンを無効にすることはできますか?
質問
Eclipse RCP アプリケーションのウィザードを作成しています。ファイルに対して何らかの処理を実行し、ユーザー入力を取得した後、ユーザーが戻って変更を加えられるようにしたくありません。この時点で、システムに加えようとしている変更を受け入れるか拒否する必要があります。
見つからないのは、表示されるボタンやユーザーが戻るボタンを押す能力をオーバーライドできるメソッド呼び出しです。それが存在しないか、少なくとも無効になっている方が良いと思います。
を使用してこれを行う方法を見つけた人はいますか JFace ウィザード そして ウィザードページ?
使いやすさの点で、私はウィザードの慣例に違反しているでしょうか?この問題に対する別のアプローチを検討する必要がありますか?
解決
ウィザード ページ実装の 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://nswadsky.blogspot.com/2011/07/jface-wizard-tips-and-tricks.html
UI の観点から見ると、これはかなり悪いように思えます。ユーザーが間違いを犯して、戻って修正したいと思っているのにそれを許可しないと、ユーザーはイライラするでしょう。それを防ぐ方法を探すよりも、元に戻せるようにアプリケーションを変更する方がはるかに良いと思います。
標準の JFace ウィザード API を使用してこれを行う方法はありません。私のチームは、カスタムの WizardDialog を作成することでこれを実現しました。これは、Eclipse プラグインではなく、Eclipse RCP アプリケーションで実行しました。「戻る」ボタンを無効にするのは慣習を破るものですが、当社のビジネス アナリストはこの機能を本当に望んでいたのです。