エディタ・クラスの定義

エディタは、ユーザーが変更するオブジェクトを表示するビューです。

エディタ・クラスはEditorインタフェースを実装します。AbstractEditorを拡張することによって実装する場合もあります。エディタ・クラスは、そのエディタに対して登録されているタイプのノードを開いて表示するたびに、インスタンス化されます。

エディタは、次のその他のコンポーネントに関連付けられています。

エディタ・クラスには次の機能が必要です。

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

エディタのインスタンス化

エディタ・マネージャは、ユーザーがナビゲータ内でノードを開くと、エディタ・クラスをインスタンス化します。エディタ・マネージャは、デフォルトのコンストラクタをコールするため、コンテキスト特有のパラメータは使用できません。



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; }

エクスプローラ・イベントへの対応

データ・オブジェクトのエクスプローラ・ビューは、エディタ内のドキュメントにおける移動手段を提供します。ユーザーがエクスプローラで要素を選択すると、エクスプローラはエディタに対し、対応するデータの部分を表示するように指示します。

エディタをエクスプローラと統合する場合、エディタは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(); }

エディタの開発
EditorAddinインタフェースの実装
コントローラの実装
JDeveloperにおけるデータ・オブジェクトについて
通知について

oracle.ide.Addin.Controller
oracle.ide.addin.UpdateMessage
oracle.ide.editor.Editor
oracle.ide.editor.AbstractEditor
oracle.ide.editor.EditorAddin
oracle.ide.explorer.Explorer
oracle.ide.model.Document
java.awt.event.KeyListener
javax.swing.JEditorPane