エディタは、ユーザーが変更するオブジェクトを表示するビューです。 独自のエディタを作成する場合は、FlatEditor
インタフェースを直接実装するのではなく、AbstractFlatEditor
を拡張します。エディタ・クラスは、そのエディタに対して登録されているタイプのノードを開いて表示するたびに、インスタンス化されます。
エディタは、次のその他のコンポーネントに関連付けられています。
FlatEditorAddin
。エディタおよびエディタ・マネージャの仲介役を果たします。 JDeveloperが起動すると、アドインがエディタ・クラスを登録します。
Document
の実装です。
JEditorPane
の実装で、データの実際の変更を実行します。
Controller
。ユーザー・インタフェースの編集コマンドを解析し、エディタ・コンポーネント・メソッドを起動します。
Explorer
。データ・オブジェクトの構造を表示します。エクスプローラは、エディタ・メソッドをコールすることにより、ユーザー・アクションに対応します。
エディタ・クラスには次の機能が必要です。
ここに示したコード例は、PropFile
サンプル・プロジェクトのものです。 この例と他の拡張機能の例は、OTNのExtensions SDKのページで入手できます。
エディタ・マネージャは、ユーザーがナビゲータ内でノードを開くと、エディタ・クラスをインスタンス化します。エディタ・マネージャは、デフォルトのコンストラクタをコールするため、コンテキスト特有のパラメータは使用できません。
public PropFileEditor() { systemClipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); }
エディタ・マネージャは、setContext
メソッドをコールしてエディタ・インスタンスを初期化します。このメソッドは、編集するドキュメントをコンテキストから抽出し、エディタ・コンポーネントを初期化します。
public synchronized void setContext( Context context ) { if ( context != null ) { Element element = context.getElement(); // A sanity check: if the context is bad the editor pane will be empty. if ( ( element != null ) && ( element instanceof TextDocument ) ) { super.setContext( context ); document = (TextDocument) context.getElement(); initializeGraphics( context ); initializeTimer(); } } }
エディタには、ユーザー・イベントを捕捉し解析するコントローラ・インスタンスが関連付けられています。 IDEは、コントローラを取得するためにエディタのgetController
メソッドをコールします。メソッドは最初にコールされた際にコントローラを作成します。
public Controller getController() { if ( editorController == null ) { editorController = new PropFileEditorController( this ); } return editorController; }
エディタにはルートGUIコンポーネントが関連付けられており、このエディタ・インスタンス用のパネルを返します。
public Component getGUI() { return mainPanel; }
データ・オブジェクトのエクスプローラ・ビューは、エディタ内のドキュメントにおける移動手段を提供します。ユーザーがエクスプローラで要素を選択すると、エクスプローラはエディタに対し、対応するデータの部分を表示するように指示します。
エディタをエクスプローラと統合する場合、エディタは1つ以上のgotoメソッドを提供する必要があります。 (この機能はEditor
インタフェースでは不要です。)次の例は、エディタのカーソルをテキスト・ファイルの指定した行に移動させるメソッドです。
public void setCaretPosition( int offset ) { editorComponent.setCaretPosition( offset ); }
エディタ・コンポーネントは、JEditorPane
の実装として、データが変更されるとアクション・イベントを生成します。 エディタは、KeyListener
などのインタフェースを実装し、初期化時にエディタ・コンポーネントのaddKeyListener
メソッドをコールして、イベントを受信するために自身を登録します。 次のKeyListener
メソッドの例では、keyTyped
が、レコグナイザなど、その他のIDEオブジェクトに変更を警告するメソッドを起動します。
public void keyTyped( KeyEvent e ) { timer.restart(); }
データ・オブジェクトの状態が変わる際、ドキュメントのエクスプローラなど、その他のIDEコンポーネントに通知する必要があります。これは通知メカニズムを介して行われます。 エディタはUpdateMessage
インスタンスを作成し、これをドキュメントのオブザーバに一斉送信します。
public void keyTyped( KeyEvent e ) { timer.restart(); }
エディタの開発
FlatEditorAddinインタフェースの実装
コントローラの実装
JDeveloperにおけるデータ・オブジェクトについて
通知について
oracle.ide.Addin.Controller
oracle.ide.addin.UpdateMessage
oracle.ide.editor.FlatEditor
oracle.ide.editor.AbstractFlatEditor
oracle.ide.editor.FlatEditorAddin
oracle.ide.explorer.Explorer
oracle.ide.model.Document
Copyright © 1997, 2004, Oracle. All rights reserved.