ユーザー・インタフェースから起動され、モーダル・タスクを実行する拡張機能は、 Oracle.ide.Wizardインタフェースを実装します。このインタフェースは、拡張機能をインストールし、JDeveloperのユーザー・インタフェースと統合します。
Wizardインタフェースを実装するには、次のようにします。
ここに示したコード例は、HelloXサンプル・プロジェクトのものです。この例と他の拡張機能の例は、Oracle Technology Network(OTN)のWebサイト(http://otn.oracle.com/products/jdev/htdocs/partners/addins/exchange/docsamples/content.html)で入手できます。
ウィザードのコンストラクタは、ウィザードのロード時にのみ起動されます。コンストラクタは軽量で、オブジェクト参照の作成および保持は行いません。そのような操作は、initializeメソッドに委任します。
このメソッドは、ウィザードの機能を表します。ウィザードは一般に、ユーザーがパラメータを入力するダイアログを開き、それらのパラメータを使用して、ドキュメントまたはその他のデータ・オブジェクトを作成または変更します。
このメソッドは、ユーザーが、「新規」ギャラリまたは「ツール」メニューを介してウィザードのUI要素を選択するとコールされます。contextパラメータは、ウィザードが操作する可能性のある、現在選択されているオブジェクトを識別します。paramsパラメータは、ウィザードが「ツール」メニューからコールされた場合は空で、gallery.xmlファイルからコールされた場合はwizardParametersタグの値のセットが含まれます。
public boolean invoke(oracle.ide.addin.Context context, java.lang.String[] params) { if ( !this.isAvailable(context) ) return false; String greetee = null; JProject project = (JProject) context.getProject(); // Get the parameter from the user. greetee = JOptionPane.showInputDialog (new JDialog(), prompt, wizName, JOptionPane.OK_CANCEL_OPTION); if ( greetee == null ) return false; // Create the document and the node that represents it. if ( !createNode(project, greetee) ) return false; return true; }
このメソッドは、「ツール」メニューでウィザードの項目の外観を判断するために、それが表示される際にコールされます。ウィザードが「ツール」メニューにインストールされていない場合、このメソッドはnullを返します。
public MenuSpec getMenuSpecification() { if ( menuSpec == null) { Icon icon = getIcon(); menuSpec = new MenuSpec(wizName, new Integer((int)'X'), (KeyStroke)null, icon); } return menuSpec; }
このメソッドは、現行のコンテキストで、ウィザードの「新規」ギャラリ・アイコンまたは「ツール」メニュー項目が使用可能かどうかを判断するためにコールされます。たとえば、プロジェクト・ノードで機能するウィザードは、現行ノードがプロジェクト・ノードである場合にのみ使用可能になる必要があります。
public boolean isAvailable(oracle.ide.addin.Context context) { Project p = context.getProject(); if ( (p != null) && (p instanceof JProject) ) return true; return false; }
このメソッドは、ウィザードの「新規」ギャラリ・アイコンを取得するためにコールされます。ウィザードにアイコンが不要な場合、このメソッドはnullを返します。
public Icon getIcon() { if (image == null) { image = GraphicsUtils.createImageIcon( GraphicsUtils.loadFromResource(imageName, this.getClass())); } return image; }
このメソッドでは、ウィザードの名前を人間が読める形式で指定します。文字列の内容は、プログラマが自由に指定できます。
このメソッドでは、ウィザードの説明を人間が読める形式で指定します。文字列の内容はプログラマが自由に指定できますが、多くの場合getNameの値と同じです。
「新規」ギャラリのウィザードの開発
Baliウィザードの実装
ウィザード・マネージャについて