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を取得する。