新しいコマンド・クラスを実装する拡張機能は、これを含めるアクションを定義します。アクションは、メニュー項目、またはその他のユーザー・インタフェース・コントロールと、そのメニュー項目が選択された際に実行されるコマンドとのリンクの役割を果たします。アクションは、IdeActionのインスタンスです。
既存のUI要素に特化された動作を定義する拡張機能は、カスタム・アクションを定義するのではなく、その要素にすでに提供されているアクションを使用します。Ideクラスで定義されているフィールドでは、標準コマンドのクラス名およびIDを指定します。たとえば、保存操作を提供するエディタでは、事前定義のIde.SAVE_CMDおよびIde.CUT_SAVE_IDの値、およびそれらに関連付けられたアクションを使用します。
アクションは通常、関連付けられたメニュー項目またはツールバー・アイコンをインストールするAddinクラスのフィールドとして定義されます。アクションを拡張機能の初期化の一部として作成および構成します。
次のトピックでは、アクションの定義について説明しています。
アクションはコマンドIDによってキャッシュされます。必要なコマンドにアクションがすでに存在する場合、通常は新しいものを作成するかわりに、それを使用します。
アクションを作成するために、IdeActionコンストラクタを使用しないでください。かわりに、次のstaticメソッドを使用し、キャッシュされたアクションを取得するか、新しいアクションを作成します。
1つのアクションには、外観を決めるものなど様々なプロパティがあり、これにはputValueメソッドおよびgetValueメソッドにより、文字列キーを介してアクセスします。プロパティの一部は、createメソッドまたはstaticなゲッター・メソッドによりアクションが作成される際に設定されます。IDEで認識されるキーは、ToggleActionスーパークラスで定義されます。
開くなど、ビューに無関係なアクションは、アクションを更新し、そのイベントを処理するコントローラを指定する必要があります。ビューのコンテキストで起動されるアクションには、アクション・コントローラは不要です。
コマンドの動作は、そのコマンドを使用するすべてのIDE機能に対し、コマンドのアクションのコントローラを置換するか、コントローラがないアクションの場合は、これを指定することにより、拡張してカスタム操作を実行できます。しかし、デフォルトの動作に干渉しないよう注意する必要があります。
既存のコントローラを置換するには、次のようにします。
コントローラのないアクションにコントローラを追加するには、次のようにします。
getControllerメソッドおよびsetControllerメソッドを使用し、アクションのコントローラにアクセスします。
getCommandメソッドは、アクションのコマンド・クラスの名前を返します。setCommandメソッドを使用してそれを置換することができます。ただし、コマンドは一括置換され、そのアクションを処理するIDEのすべての機能に影響を与えます。必要以上の影響を及ぼさないように、元のコマンド・クラスはそれを拡張するクラスによってのみ置換します。
コマンドの開発
ユーザー・インタフェース・イベントについて
コマンドの実装
コントローラの実装
oracle.ide.Ide
oracle.ide.IdeAction
oracle.ide.addin.Addin