コントローラは、ユーザー生成イベントを解析し、IDEの状態を変更する実行可能なコマンドに変換します。ユーザーがメニュー項目を選択(またはツールバー・アイコンを選択、あるいはキーボード・ショートカットを入力)すると、そのアクション(IdeActionインスタンス)が起動されます。コントローラは、テキスト入力またはマウスおよびキーボードのイベントなど、その他のイベントは処理しません。
事前定義のコマンドをオーバーライドする、または新しいコマンドを導入する拡張機能には、独自のコントローラを用意する必要があります。コマンドをオーバーライドする拡張機能は、既存のコマンド、およびそれらを含むアクションを使用します。ビューのコントローラは、既存のコマンド・クラスのインスタンスを作成、初期化および実行することにより、既存のアクションを更新および処理します。新規コマンドを導入する拡張機能には、カスタムのアクションおよびコマンドが必要です。
コントローラは、Controllerを実装するクラスのインスタンスです。
イベントの処理は、IDEの現在の状態の記録である現行コンテキストにより異なります。コンテキストは、アクティブ・ビューおよびそのコントローラを識別します。コンテキストが変わると、アクティブ・コントローラは、選択したアクションを更新し、そのメニュー項目を使用可能および使用不可にします。
コントローラは、イベント処理に関して、次の2つの役割を果たします。
ビュー・コントローラは、エディタなどのビューに関連付けられ、コントローラのビューがアクティブ・ビューである際に発生するイベントを、ビューのデータに適用して管理します。新規のビュー・クラスを使用する拡張機能では、そのクラスのビュー・コントローラを指定する必要があります。ビュー・コントローラは、処理を委任するスーパーバイザ・コントローラを持ちます。
アクション・コントローラは、メニュー項目のアクションなど、現在のビューのサブジェクトに無関係でも起動できるアクションに関連付けられています。拡張機能では、アクションのコントローラを新規コントローラに置き換えることができます。ただし、旧定義を置き換えるのではなく、新しいコンテキストにアクションの定義を拡張する必要があります。新規コントローラは、旧コントローラをカプセル化し、新しいコンテキストでアクションが起動されない場合、旧コントローラに処理を委任するようにします。アクション・コントローラは、スーパーバイザを持ちません。
ユーザー・アクションの解釈処理の振分けに関するJDeveloperのスキームは、Chain of Responsibilityデザイン・パターンに従います。アクションは、あるコントローラがこれを処理するまで、コントローラからコントローラへとたらい回しにされます。このようなコントローラには、次のものがあります。
アクションは、まずアクション・コントローラに渡されます。このコントローラがアクションを処理する場合はtrueを返しますが、処理しない場合は前のアクション・コントローラに委任します。アクション・コントローラは、アクションを処理せず、前のアクション・コントローラがない場合のみtrueを返します。
アクション・コントローラがfalseを返した場合、アクションはアクティブなビューのコントローラに渡されます。このコントローラも同様に、アクションを処理する場合はtrueを返し、処理しない場合はスーパーバイザに委任します。最上位のスーパーバイザは、メイン・ウィンドウのコントローラであるIDEです。
Ideクラスのシングルトン・オブジェクトは、ビュー・コントローラです。そのビューは、MainWindowオブジェクトです。
コントローラには、2つの主要な役割があります。
コントローラは階層で編成されており、どのコントローラも(ルート・コントローラおよびIdeオブジェクトを除く)スーパーバイザを持ちます。コントローラでは、一部のアクションの更新または処理の方法を決定し、残りのアクションについてはスーパーバイザに委任します。最上位のスーパーバイザは、Ideオブジェクトです。
ユーザー・インタフェース・イベントについて
コンテキストについて
IDEアクションについて
コマンドについて
IDEアクションの更新について
IDEアクションの処理について
oracle.ide.Ide
oracle.ide.IdeAction
oracle.ide.MainWindow
oracle.ide.Addin.Controller