Toolbarを表示したい その1

UrumaでToolbarを表示させたいけど、XMLスキーマ(uruma.xsd)には特にそれらしきものがないのでまだ対応してないみたい。

追記:すいません。スキーマにありました。

ということで、Toolbarを表示するためには、どうしたら良いかUrumaをHackしてみる。


まず、UrumaがXMLを解析してオブジェクトグラフを作成する仕組みを理解する。

  • TemplateManagerがXMLをロードする
  • TemplateManagerはComponentTreeBuilderによってXMLからTemplateオブジェクトを生成する
  • ComponentTreeBuilderはSAXでXMLを解析
  • TemplateオブジェクトはXMLの各ノードをUIComponent(抽象)として保持する
  • UIComponentはXMLアトリビュートと対応した変数名がありXMLの値を保持する
  • UIComponentは再帰構造でUIComponentを保持する
  • UIComponentはWindowComponentやToolbarComponentなど各実装がある


WindowComponentの中身抜粋。

/**
 * {@link Window} のコンポーネント情報を保持するためのクラスです。<br />
 * 
 * @author y-komori
 */
@ComponentElement
public class WindowComponent extends CompositeComponent {
    @RenderingPolicy(targetType = TargetType.NONE)
    @ComponentAttribute
    @FieldDescription("ウィンドウタイトル")
    public String title;

    @RenderingPolicy(targetType = TargetType.NONE)
    @ComponentAttribute
    @FieldDescription("最小幅")
    public String minimumWidth;

    @RenderingPolicy(targetType = TargetType.NONE)
    @ComponentAttribute
    @FieldDescription("最小高さ")
    public String minimumHeight;

    @RenderingPolicy(targetType = TargetType.NONE)
    @ComponentAttribute
    @FieldDescription("幅")
    public String width;
    
    ・・・


ふむふむ。
XMLに設定項目を追加したい場合は、uruma.xsdにエレメントやアトリビュートを追加して、対応するUIComponentを用意してあげれば、XMLの内容をオブジェクトで扱える。

まとめ

XMLの内容にアクセスしたい場合は、TemplateManager#getTemplage#getRootComponent でComponentを取得する。