Urumaについて

ドキュメント

プロジェクト文書

Built by Maven
最終更新: 2008/07/13

ウィジット・インジェクション

ウィジット・インジェクション(Widget Injection) は、画面にレンダリングされている SWT ウィジットのインスタンスを直接アクション・クラス へインジェクションする機能です。

ウィジット・インジェクションを利用すると、アクション・クラスから SWT の画面を直接操作できるため、Uruma のバリュー・バインディングセレクション・バインディング で実現できないような、細かな操作を行うことができます。

たとえば、以下のような画面定義 XML があるとします。

  <button id="button" />
  <label id="label" />

このような場合、アクション・クラスへ以下のようにフィールドを用意しておくことで、メソッド・バインディングによってアクション・クラスのメソッドが呼び出される前に、Uruma がウィジットのインスタンスをフィールドへセットしてくれます。

  public Button button;
  public Label label;

インジェクション対象となるのは、public フィールドまたは setter メソッドです。 XML に記述されたコンポーネントとフィールドの対応は、id と フィールドの名称が一致するかどうかで認識されます。

Uruma は、以下のような手順でウィジット・インジェクションを実行します。

  1. メソッド・バインディングを実行する前に、呼び出し対象のアクションクラスのフィールドおよびプロパティ(setter メソッド)を調べます。
  2. Widget のサブクラスとなっているフィールドまたはプロパティに対して、その名称を取得します。(プロパティの場合は、JavaBeans の規則に従います)
  3. その名称に対応する id を持つ画面コンポーネントが画面上に存在すれば、そのインスタンスをフィールドまたはプロパティに設定します。

    上の例では、アクション・クラス側に button という名前の Button 型(Widget のサブクラス) フィールドが存在するため、画面側から button という id を持つウィジットを検索し、フィールドへセットしているのです。

    なお、XML 上で id を設定していない画面コンポーネントは、ウィジット・インジェクションの対象になりませんので注意してください。(つまり、ウィジット・インジェクションでインスタンスを取得したい場合は、必ず id を設定してください)

暗黙のウィジット

以下のウィジットはあらかじめ登録されており、画面定義 XML 上で id を設定しなくても、ウィジット・インジェクションで取得することができます。

クラス id 説明
Shell shell ウィンドウのシェルオブジェクト