コマンドの実装

拡張機能によりメニュー項目またはツールバー・アイコンが追加される場合、その機能をコマンドとして実装する必要があります。

コマンドはAbstractCommandを拡張することにより実装でき、その場合、doitを除くすべてのメソッドおよびコンストラクタでは、指定されたデフォルトが使用されます。それ以外の場合は、Commandインタフェースを実装します。

既存のコントロールに特化した動作を定義する拡張機能では、カスタム・アクションの定義や、カスタム・コマンド・クラスの実装を行うのではなく、すでに提供されているアクションおよびコマンド・クラスを使用します。Ideクラスで定義されているフィールドでは、IDEの標準コマンドのクラス名およびIDを指定します。

拡張機能のCommandクラスを実装するには、次のようにします。

ここに示したコード例は、ContextInfoサンプル・プロジェクトのものです。この例と他の拡張機能の例は、Oracle Technology Network(OTN)のWebサイト(http://otn.oracle.com/products/jdev/htdocs/partners/addins/exchange/docsamples/content.html)で入手できます。

コンストラクタの定義

コンストラクタは、コマンド・プロセッサにより起動されます。



public ContextInfoCommand() { super(ContextInfoController.CONTEXT_INFO_CMD_ID, AbstractCommand.NO_CHANGE); }

コンストラクタは、そのスーパータイプであるAbstractCommandに定義されているコンストラクタの1つをコールすることができます。

AbstractCommand(int cmdId)
AbstractCommand(int cmdid, int type)
AbstractCommand(int cmdid, int type, String name)      

cmdIdはコマンドIDで、拡張機能のコントローラ・クラスで定義する必要があります。

typeは、次のいずれかです。

nameは、コマンドのオプション識別子です。指定されていない場合、デフォルトは空の文字列になります。

doitメソッドの定義



public int doit() throws Exception { final Element element = getContext().getElement(); final String message = "The current context is '" + element.toString() + "'."; log.show(); log.logMsg(message + "\n"); return OK; }

このメソッドには、一般に次の3つのタスクがあります。

コマンドが成功した場合はOK、失敗した場合はCANCELまたはその他のゼロ以外の値を返します。

undoメソッドの定義

このメソッドは、コントローラがNORMALタイプであることをコンストラクタが指定している場合にのみ定義します。

このメソッドには、一般に次の2つのタスクがあります。

コマンドが成功した場合はOK、失敗した場合はCANCELまたはその他のゼロ以外の値を返します。デフォルトの実装はCANCELを返し、その他の影響はありません。

その他のメソッドの定義

これらのメソッドのデフォルト実装は、必要な場合、オーバーライドできます。


コマンドの開発
ユーザー・インタフェース・イベントについて
コントローラの実装
アクションの定義

oracle.ide.Ide
oracle.ide.addin.Command
oracle.ide.addin.AbstractCommand
oracle.ide.addin.Context