#author("2021-12-14T01:57:39+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(おもしろかった[4],そうでもない[0]) #vote(おもしろかった[5],そうでもない[0]) #comment #topicpath SIZE(10){現在のアクセス:&counter;}