エディタ・クラスの定義

エディタは、ユーザーが変更するオブジェクトを表示するビューです。 独自のエディタを作成する場合は、FlatEditorインタフェースを直接実装するのではなく、AbstractFlatEditorを拡張します。エディタ・クラスは、そのエディタに対して登録されているタイプのノードを開いて表示するたびに、インスタンス化されます。

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

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

ここに示したコード例は、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コンポーネントの取得

エディタにはルート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.