ウィジット・インジェクション(Widget Injection) は、画面にレンダリングされている SWT ウィジットのインスタンスを直接アクション・クラス へインジェクションする機能です。
ウィジット・インジェクションを利用すると、アクション・クラスから SWT の画面を直接操作できるため、Uruma のバリュー・バインディング やセレクション・バインディング で実現できないような、細かな操作を行うことができます。
たとえば、以下のような画面定義 XML があるとします。
<button id="button" /> <label id="label" />
このような場合、アクション・クラスへ以下のようにフィールドを用意しておくことで、メソッド・バインディングによってアクション・クラスのメソッドが呼び出される前に、Uruma がウィジットのインスタンスをフィールドへセットしてくれます。
public Button button; public Label label;
インジェクション対象となるのは、public フィールドまたは setter メソッドです。 XML に記述されたコンポーネントとフィールドの対応は、id と フィールドの名称が一致するかどうかで認識されます。
Uruma は、以下のような手順でウィジット・インジェクションを実行します。
上の例では、アクション・クラス側に button という名前の Button 型(Widget のサブクラス) フィールドが存在するため、画面側から button という id を持つウィジットを検索し、フィールドへセットしているのです。
なお、XML 上で id を設定していない画面コンポーネントは、ウィジット・インジェクションの対象になりませんので注意してください。(つまり、ウィジット・インジェクションでインスタンスを取得したい場合は、必ず id を設定してください)
以下のウィジットはあらかじめ登録されており、画面定義 XML 上で id を設定しなくても、ウィジット・インジェクションで取得することができます。
クラス | id | 説明 |
---|---|---|
Shell | shell | ウィンドウのシェルオブジェクト |