拡張機能によりメニュー項目またはツールバー・アイコンが追加される場合、その機能をコマンドとして実装する必要があります。
コマンドはAbstractCommand
を拡張することで実装できますが、その場合、doit
を除くすべてのメソッドおよびコンストラクタでは、指定されたデフォルトが使用されます。 デフォルトが使用されない場合は、Command
インタフェースが実装されます。
既存のコントロールに特化した動作を定義する拡張機能では、カスタム・アクションの定義や、カスタム・コマンド・クラスの実装を行うのではなく、すでに提供されているアクションおよびコマンド・クラスを使用します。 Ide
クラスで定義されているフィールドでは、IDEの標準コマンドのクラス名およびIDを指定します。
拡張機能のCommand
クラスを実装するには、次のようにします。
ここに示したコード例は、ContextInfo
サンプル・プロジェクトのものです。 この例と他の拡張機能の例は、OTNのExtensions SDKのページで入手できます。
コンストラクタは、コマンド・プロセッサにより起動されます。
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
は、次のいずれかです。
NO_CHANGE
. これらのコマンドは、そのサブジェクトの構造を変更しないようにするため、元には戻せず、起動後に破棄されます。これはデフォルト値です。
NORMAL
. これらのコマンドは元に戻すことができます。起動後に、ドキュメントのUNDOスタックにプッシュされます。 このオプションが選択された場合、コマンドはundo
メソッドを指定する必要があります。
NO_UNDO
. これらのコマンドは、サブジェクトの状態を変更すると、元に戻すことができなくなります。起動後破棄され、UNDOスタックはフラッシュされます。
name
は、コマンドのオプション識別子です。指定されていない場合、デフォルトは空の文字列になります。
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つのタスクがあります。
setData
メソッドを使用して保存します。コマンドが取り消し不可の場合、または逆の操作では元に戻せない場合、この作業は不要です。
コマンドが成功した場合はOK
、失敗した場合はCANCEL
またはその他のゼロ以外の値を返します。
このメソッドは、コントローラがNORMAL
タイプであることをコンストラクタが指定している場合にのみ定義します。
このメソッドには、一般に次の2つのタスクがあります。
getData
メソッドから取得した値によりチェックポイントの状態をリストアするか、doit
メソッドと反対の操作を実行することにより、doit
メソッドの結果を元に戻します。
コマンドが成功した場合はOK
、失敗した場合はCANCEL
またはその他のゼロ以外の値を返します。 デフォルトの実装はCANCEL
を返しますが、その他の影響はありません。
これらのメソッドのデフォルト実装は、必要な場合、オーバーライドできます。
getId
メソッドは、コンストラクタに渡されたコマンドIDを返します。
getType
メソッドは、コンストラクタに渡されたコマンド・タイプ定数、またはこの引数が指定されなかった場合はNO_CHANGE
を返します。
getName
メソッドは、コンストラクタに渡された名前の文字列を返すか、この引数が指定されなかった場合は空の文字列を返します。
getAffectedDocuments
メソッドはデフォルトでnull
を返します。
setContext
メソッドおよびgetContext
メソッドはそれぞれ、保護されたContext
変数を書き込み、かつ読み取ります。 デフォルト値はnull
です。
setData
メソッドおよびgetData
メソッドはそれぞれ、private Object
変数を書き込み、かつ読み取ります。 デフォルト値はnull
です。
コマンドの開発
ユーザー・インタフェース・イベントについて
コントローラの実装
アクションの定義
oracle.ide.Ide
oracle.ide.Addin.Command
oracle.ide.Addin.AbstractCommand
oracle.ide.Addin.Context
Copyright © 1997, 2004, Oracle. All rights reserved.