コントローラについて

コントローラは、ユーザー生成イベントを解析し、IDEの状態を変更する実行可能なコマンドに変換します。 ユーザーがメニュー項目を選択(またはツールバー・アイコンを選択、あるいはキーボード・ショートカットを入力)すると、そのアクション(IdeActionインスタンス)が起動されます。コントローラは、テキスト入力またはマウスおよびキーボードのイベントなど、その他のイベントは処理しません。

事前定義のコマンドをオーバーライドする、または新しいコマンドを導入する拡張機能には、独自のコントローラを用意する必要があります。コマンドをオーバーライドする拡張機能は、既存のコマンド、およびそれらを含むアクションを使用します。ビューのコントローラは、既存のコマンド・クラスのインスタンスを作成、初期化および実行することにより、既存のアクションを更新および処理します。新規コマンドを導入する拡張機能には、カスタムのアクションおよびコマンドが必要です。

コントローラは、Controllerを実装するクラスのインスタンスです。

イベントの処理は、IDEの現在の状態の記録である現行コンテキストにより異なります。 コンテキストにより、アクティブ・ビューおよびそのコントローラが識別されます。コンテキストが変わると、アクティブ・コントローラは、選択したアクションを更新し、そのメニュー項目を使用可能および使用不可にします。

コントローラは、イベント処理に関して、次の2つの役割を果たします。

ビュー・コントローラは、エディタなどのビューに関連付けられ、コントローラのビューがアクティブ・ビューである際に発生するイベントを、ビューのデータに適用して管理します。新規のビュー・クラスを使用する拡張機能では、そのクラスのビュー・コントローラを指定する必要があります。

アクション・コントローラは、メニュー項目のアクションなど、現在のビューのサブジェクトに無関係でも起動できるアクションに関連付けられています。拡張機能では、アクションのコントローラを新規コントローラに置き換えることができます。ただし、旧定義を置き換えるのではなく、新しいコンテキストにアクションの定義を拡張すべきです。新規コントローラは、旧コントローラをカプセル化し、新しいコンテキストでアクションが起動されない場合、旧コントローラに処理を委任するようにします。

JDeveloperでは、ユーザー・アクションの解析処理の振分けは、Chain of Responsibilityのデザイン・パターンに従って自動的に管理されます。アクションは、あるコントローラがこれを処理するまで、コントローラからコントローラへとたらい回しにされます。このようなコントローラには、次のものがあります。

  1. 起動されたアクションに関連付けられたアクション・コントローラ
  2. 前のアクション・コントローラ(存在する場合)
  3. アクティブなビューのコントローラ
  4. アクティブなビューのスーパーバイザ
  5. IDEのMainWindow

アクションは、まずアクション・コントローラに渡されます。このコントローラがアクションを処理する場合はtrueを返しますが、処理しない場合は前のアクション・コントローラに委任します。アクション・コントローラは、アクションを処理せず、前のアクション・コントローラがない場合のみtrueを返します。

アクション・コントローラがfalseを返した場合、アクションはアクティブなビューのコントローラに渡されます。このコントローラも同様に、アクションを処理する場合はtrueを返し、処理しない場合はスーパーバイザに委任します。最上位のスーパーバイザは、メイン・ウィンドウのコントローラであるIDEのMainWindowです。

Ideクラスのシングルトン・オブジェクトは、ビュー・コントローラです。 オブジェクトのビューは、MainWindowオブジェクトです。

コントローラには、2つの主要な役割があります。

コントローラは階層で編成されており、どのコントローラにも(ルート・コントローラおよびIdeオブジェクトを除く)スーパーバイザが備わっています。コントローラでは、一部のアクションの更新または処理の方法を決定し、残りのアクションについてはスーパーバイザに委任します。 最上位のスーパーバイザは、Ideオブジェクトです。


ユーザー・インタフェース・イベントについて
コンテキストについて
IDEアクションについて
コマンドについて
IDEアクションの更新について
IDEアクションの処理について

oracle.ide.Ide
oracle.ide.IdeAction
oracle.ide.MainWindow
oracle.ide.Addin.Controller

 

Copyright © 1997, 2004, Oracle. All rights reserved.