S-JIS[2013-04-06/2015-04-29] 変更履歴

Eclipseプラグイン ウィザード

Eclipseプラグイン開発のウィザードについて。


概要

ウィザードは、一連の設定を対話的に行う為のダイアログ。
ウィザードの中に複数のページを持ち、各種設定や確認を行いながら遷移していく。
最後にFinishボタンが押されたら確定処理を行う。

ウィザード用にはIWizardインターフェース(およびWizardクラス)があり、それを継承したインターフェースとしてインポートメニュー用のIImportWizardやエクスポート用のIExportWizard、新規作成用のINewWizard等がある。


ウィザードの実装方法の概要

ウィザードを作るには、まずウィザードページ(クラス)を用意する必要がある。

Wizard#addPage()によってWizardPageインスタンスを登録する。
デフォルトではaddPage()した順番でページが遷移していく。

各ページで入力チェックを行い、そのページの入力が完了したらWizardPage#setPageComplete()にtrueをセットする。
pageCompleteがtrueにならないと 次のページへ遷移することは出来ない。(Nextボタンが使用不可状態になる)
デフォルトでは、ウィザード内の全ページのpageCompleteがtrueにならないとFinishボタンは押せない。

Finishボタンが押されるとWizard#performFinish()が呼ばれるので、確定処理を行う。


WizardDialog

ウィザードを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をセットしておかないと、プログレスバーは表示されないかもしれない。


Eclipseプラグインへ戻る / Eclipseへ戻る / 技術メモへ戻る
メールの送信先:ひしだま