- 追加された行はこの色です。
- 削除された行はこの色です。
#author("2019-08-06T14:00:16+00:00","","")
#author("2021-12-14T02:38:54+00:00","","")
// 下階層用テンプレート
#topicpath
----
//ここにコンテンツを記述します。
Eclipseには便利なウィザード機能がありますが、あのウィザードも拡張ポイントで実装されています。これを試してみます。
ウィザードは、ウィザード全体を管理するIWizardインタフェースと、各ページを表すIWizardPageインタフェースで構成されます。
#ref(wiz_arch.jpg)
***構造 [#i1a32258]
ウィザード機能は以下のクラスで構成されています。
:IWizardインタフェース|一つのウィザードに対応するインタフェースです。拡張ポイントとして定義されます。通常はデフォルト実装のクラスWizardを使用します。Wizardクラスの主なメソッドは以下の通り:
-public void init(IWorkbench workbench, IStructuredSelection selection)
--ウィザードを起動したときに呼ばれる初期化メソッドです。ウィザードを起動したときに選択されているオブジェクト(アクティブなビューで選択されているオブジェクト)がselectionとしてわたってきます。
-public void addPages();
--ウィザードにページを追加するメソッドです。このメソッドをWizardクラスのサブクラスでOverrideします。通常、追加したいページを直接newして作成し、
public void addPage(IWizardPage page)
メソッドを使って追加していきます。ちなみにウィザードの各ページクラス(IWizardPageの実装クラス)はWizardクラスのサブクラスのフィールドに保持しておくことが多いみたいです。
-public boolean canFinish()
--ウィザードの終了ボタンのenable/disableを制御するメソッドです。このメソッドがtrueを返すとき、ウィザードの終了ボタンが有効となります。このメソッドはページが送られたり、フォーカスが移動したときに発生する模様。Wizardクラスのデフォルトの実装は、全てのページのisPageCompleteがtrueかどうかをチェックしているみたいです。
-public boolean performFinish()
--終了ボタンを押したときに呼ばれるメソッドです。各ページで入力した情報を収集して、ウィザードのビジネスメソッドを実装します。
:IWizardPageインタフェース|ウィザードの1ページとなるインタフェースです。主なメソッドは以下の通り:
書き途中!!
***ウィザードで、あらかじめ選択されていた箇所を表示させたい [#q65190c5]
ウィザードクラス(WizardPageのサブクラス)のcreateControl内で以下のメソッドを呼んで初期化します。
private void initialize() {
// initで
if (selection != null && selection.isEmpty() == false
&& selection instanceof IStructuredSelection) {
IStructuredSelection ssel = (IStructuredSelection) selection;
if (ssel.size() > 1)
return;
Object obj = ssel.getFirstElement();
if (obj instanceof IResource) {
IContainer container;
if (obj instanceof IContainer)
container = (IContainer) obj;
else
container = ((IResource) obj).getParent();
containerText.setText(container.getFullPath().toString());
} ↑フォルダ名とかをあらかじめセットしたい場合。
}
}
こうすると例えばナビゲータでプロジェクトを選択していた場合、あらかじめそのディレクトリが表示され、親切ですね。
----
この記事は
#vote(おもしろかった[2],そうでもない[0])
#vote(おもしろかった[5],そうでもない[0])
#comment
#topicpath
SIZE(10){現在のアクセス:&counter;}