|
|
ウィザードは、一連の設定を対話的に行う為のダイアログ。
ウィザードの中に複数のページを持ち、各種設定や確認を行いながら遷移していく。
最後にFinishボタンが押されたら確定処理を行う。
ウィザード用にはIWizardインターフェース(およびWizardクラス)があり、それを継承したインターフェースとしてインポートメニュー用のIImportWizardやエクスポート用のIExportWizard、新規作成用のINewWizard等がある。
ウィザードを作るには、まずウィザードページ(クラス)を用意する必要がある。
Wizard#addPage()によってWizardPageインスタンスを登録する。
デフォルトではaddPage()した順番でページが遷移していく。
各ページで入力チェックを行い、そのページの入力が完了したらWizardPage#setPageComplete()にtrueをセットする。
pageCompleteがtrueにならないと 次のページへ遷移することは出来ない。(Nextボタンが使用不可状態になる)
デフォルトでは、ウィザード内の全ページのpageCompleteがtrueにならないとFinishボタンは押せない。
Finishボタンが押されるとWizard#performFinish()が呼ばれるので、確定処理を行う。
ウィザードをplugin.xmlに定義すると、他の通常のウィザードと同様に開くことが出来る。
(例えばorg.eclipse.ui.newWizardsに登録すれば、メニューの「新規」ウィザードで選ぶことが出来るようになる)
それとは別にウィザード専用のダイアログで表示することも出来る。
import org.eclipse.jface.wizard.WizardDialog;
IWizard wizard = 〜; WizardDialog dialog = new WizardDialog(null, wizard); dialog.open();
Wizardのダイアログでもプログレスバーを表示することが出来る。[2013-05-07]
@Override public boolean performFinish() { setNeedsProgressMonitor(true); // プログレスバーを表示 IRunnableWithProgress task = new IRunnableWithProgress() { @Override public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { 〜 } }; try { getContainer().run(true, true, task); } catch (InvocationTargetException e) { // エラー } catch (InterruptedException e) { // キャンセルされた } }
setNeedsProgressMonitor()でtrueをセットしておかないと、プログレスバーは表示されないかもしれない。