oracle.ide.addin.Controller
、oracle.ide.IdeAction
およびoracle.ide.addin.View
の各クラスが変更され、IDEにおけるアクションおよびコントローラの実装が簡素化されています。 その影響を受けるメソッドを使用している場合は、既存の拡張機能を変更する必要があります。
既存の拡張機能を変更し、コントローラにこれらの変更内容を反映させるには、次のようにします。
supervisor()
メソッドおよびcheckCommands(..)
メソッドを削除します。 このリリースまでは、supervisor()
メソッドおよびcheckCommands(..)
メソッドを実装することで、各コントローラ内で必要なコマンド・パターンの連鎖をコーディングしていました。 このリリースでは、IDEフレームワークによりコマンドの連鎖が自動的に管理されます。
oracle.ide.addin.BaseController
を削除します。 このクラスは、supervisor()
メソッドおよびcheckCommands(..)
メソッドの実装を容易にすることを意図していたため、不要になりました。 BaseControllerがIDE APIから削除されているため、全サブクラスはコントローラ・インタフェースを直接実装するように変更する必要があります。
これらの変更は、次のような理由によるものです。
supervisor()
メソッドを使用すると、コマンドの連鎖で次に位置するコントローラを指定できました。 IDEフレームワークでは、前後のビューの階層を自動的に判別できるようになったため、各コントローラでsupervisor()
メソッドを直接実装する必要がなくなりました。 コマンドの連鎖における次のコントローラがビューではなく、IdeActionに関連付けられた別のコントローラである場合、IdeActionクラスが変更されたため、setController(..)
ではなくaddController(..)
メソッドがサポートされます。
checkCommands(..)
メソッドを使用して、コントローラでコンテキスト依存アクションを更新してから同じ動作をsupervisor()
コントローラに委任できました。 たいてい、コンテキスト依存アクションはツールバーのボタンに関連付けられていました。 このリリースのIDEでは、前後のビューの階層を判別でき、各ビューではそのgetToolbar()
メソッドからoracle.ide.controls.Toolbar
を返します。IDEには、参照可能なツールバー・アクションを直接更新できる十分な情報があります。 その結果、checkCommands(..)
メソッドが不要になり削除されました。 コンテキスト依存アクションがツールバーのボタンに関連付けられていなかった場合は、このリリースのビュー・インタフェースではupdateVisibleActions(..)
メソッドがサポートされます。このメソッドによって、各ビューは更新対象となるコンテキスト依存アクションを制御できるようになります。 デフォルトでは、AbstractViewクラスはツールバーのアクションをすべて更新します。
oracle.ide.addin.BaseController
クラスは不要になり、混乱を生じる可能性さえあります。 このクラスの基本的な目的は、supervisor()
およびcheckCommands(..)
の実装を容易にすることでした。この2つのメソッドが削除されたことで、BaseControllerは単なる空のコントローラ実装となりました。 BaseControllerは、IDE APIから削除されました。
前述したoracle.ide.IdeActionの変更を考慮する必要がある場合、ご使用の拡張機能を変更するには、次のようにします。
setController(..)
メソッドは、IdeActionが複数のコントローラを使用できることを反映させるため、addController(..)
となりました。
ChainedController.chainController(..)
メソッドはIdeAction.addController(..)
で置き換えられ、ChainedController.unchainController(..)
はIdeAction.removeController(..)
で置き換えられています。 この変更は、IdeActionで複数のコントローラを直接サポートできるようになったことによるものであり、各コントローラは追加された順に起動されます。
getContext()
およびsetContext()
。 コンテキストはIdeActionに直接関連付けらません。 かわりに、適切なビュー・インスタンスのコンテキストを取得してください。
getController()
. IdeActionに関連付けられたコントローラは、IDEのプライベート実装詳細となっています。これは、IDEでコマンドの連鎖が自動的に管理されるようになったためです。 IdeActionからコントローラを取得してコマンドの連鎖を補足すると、エラーの原因となります。 ControllerメソッドをコールするためgetController()
をコールしていた従来の場合に関しては、このリリースではIdeAction.performAction(..)
およびIdeAction.updateAction(..)
をコールする必要があります。 IdeAction内でコントローラをまとめて連鎖させるためにgetController()
を使用していた場合に関しては、このリリースではかわりにIdeAction.addController(..)
を使用してください。
getView()
. このメソッドは、IDEのプライベート実装詳細となりました。 現行のアクティブ・ビューが必要な場合は、oracle.ide.Ide.getMainWindow().getLastActiveView()
を使用します。
performAction(..)
およびupdateAction(..)
。IdeActionに追加された新規メソッドです。 この2つのメソッドは、それぞれController.handleEvent(..)
メソッドおよびController.update(..)
メソッド用の、コントローラのコマンド連鎖に対するエントリ・ポイントです。 コマンドの連鎖では、各コントローラがhandleEvent(..)
またはupdate(..)
からfalseを返すかぎりは、連鎖を介して委任が続行されます。 コントローラがどちらかのメソッドについてtrueを返すと、直後にコマンドの連鎖が停止し、performAction(..)
またはupdate(..)
の当初のコール元に戻ります。
IdeActionの変更が必要となったのは、JDeveloperでコマンド・パターンの連鎖に従う必要がなくなり、コントローラのコマンドの連鎖を自動的に判別できるようになったためです。
IDEは、コマンドの連鎖内でコントローラを次の順序で試行します。
addController(..)
を介してIdeActionに関連付けられているコントローラ・インスタンス(追加された順序で)。
javax.swing.JComponent
のインスタンスである必要がある)に関連付けられたコントローラ。最上位のUIコンテナであるIDEのメイン・ウィンドウに達するまで、囲んでいる他のUIコンテナへと外側に繰り返してコントローラがすべて試行されます。 メイン・ウィンドウのコントローラが最後に試行されます。
handleEvent(..)
またはupdate(..)
からfalseを返すと、IdeActionはそのgetCommand()
メソッドをコールし、戻された文字列をoracle.ide.addin.Command
を実装するクラスの名前として解析します。 解析に成功すると、コマンド・インスタンスが起動のためにoracle.ide.CommandProcessor
に渡されます。 解析に失敗すると、アクションは実行されません。
必要に応じてoracle.ide.addin.View内の新規メソッドを使用します。
setToolbarVisible(boolean)
. ツールバーの可視性を変更する手段を提供します。
updateVisibleActions(UpdateInfo)
. 可視性のあるコンテキスト依存アクションの更新(たとえば、使用可能状態の更新)が必要であることを通知する手段をビューに提供します。 これはController.checkCommands(..)
メソッドを置き換えるメソッドです。 IDEは、アクションが実行されるたびに、または特定の場合に選択内容が変更されるか、入力フォーカスが変更されるときに、updateVisibleActions(..)
をコールします。 ビューは、実装による所要時間を最短にするために、参照可能なアクションのみを更新する必要があります。
ビュー・インタフェースに対する変更は、ビュー・インタフェースによる複合的なデザイン・パターンの使用を明示することを意図しています。 つまり、ビューで記述されるユーザー・インタフェースは、他のビュー・インスタンスで構成される場合があります。
注意: OTNのExtensions SDKのページを使用して、SDKをダウンロードし、廃止になったAPIやその他の変更など、リリース9.0.3以降に行われた拡張機能の変更すべてをAPIレベルで識別するJavadocにアクセスしてください。
Copyright © 1997, 2004, Oracle. All rights reserved.