1 package jp.ac.aiit.xdf.core.model;
7 import jp.ac.aiit.xdf.component.ComponentMapper;
8 import jp.ac.aiit.xdf.core.action.Action;
9 import jp.ac.aiit.xdf.core.action.EventType;
12 * GUI上のコンポーネントの包含関係を表現するオブジェクトモデルツリーを構築するためのツリーノードにあたるクラスである。
13 * また、このモデルツリーが実コンポーネントを操作するための統一されたインターフェースとなる。
14 * そのため、ObjectModelではそのツリー操作に必要なインターフェースを定義する。
16 * @author Shunichi Takagi
19 public interface ObjectModel {
22 * このオブジェクトモデルが参照するタグの名前を取得する
25 public String tagname();
28 * このオブジェクトモデルにIDを設定する。ObjectModel#id(id, false)の呼び出しと同一である。
29 * 設定されたIDはこのオブジェクトモデルを参照するために利用される。
31 * また、一つのモデルツリー上に同一のIDを持つオブジェクトモデルが存在してはならないため、
32 * このメソッドの実行時にツリーの他モデルが指定されたIDを持つ場合、このモデルに対してIDは設定されない。
33 * もし、強制的にIDを設定したい場合はObjectModel#id(String,boolean)を利用すること
36 * @return 指定されたIDを設定できた場合はtrue、設定できなかった場合はfalseを返す
38 public boolean id(String id);
41 * このオブジェクトモデルにIDを設定する。
42 * もしforceがtrueだった場合は、このモデルが所属するツリー上に指定されたIDを持つモデルが存在した場合、
43 * そのモデルからIDを剥奪し、このモデルに対してそのIDを設定する。
44 * forceがfalseの場合は、このモデルが所属するツリー上に指定されたIDを持つモデルが存在した場合、このモデルに対してIDを設定しない。
47 * @param force 他モデルに設定されたIDの強奪を許可するか
48 * @return このモデルに対してIDを設定できた場合はtrue、できなかった場合はfalseを返す
50 public boolean id(String id, boolean force);
53 * このオブジェクトモデルのIDを取得する。
60 * このオブジェクトモデルにクラス属性を設定する。
62 * @param clazz 設定するクラス
64 public void addClass(String clazz);
67 * このオブジェクトモデルから指定されたクラス属性を取り除く。
69 * @param clazz 取り除くクラス
71 public void removeClass(String clazz);
74 * このオブジェクトモデルが指定されたクラスを持っているかどうかを検査する。
76 * @param clazz 検査対象のクラス名
77 * @return このモデルにclazzが設定されていた場合true、されていなかった場合falseを返す
79 public boolean hasClass(String clazz);
82 * このオブジェクトモデルが持つクラス名をすべて返す
84 * @return このモデルが保持するすべてのクラス名
86 public List<String> classes();
89 * このモデルに対して指定した属性名&属性値を持つ属性を設定する。
90 * ここで設定された属性が処理されるかは実装次第である。また、処理できない属性が設定された場合、その属性は無視する。
95 public void attr(String name, Object value);
98 * このモデルに対して指定した属性名&属性値を持つ属性を上書きせずに設定する
99 * ここで設定された属性が処理されるかは実装次第である。また、処理できない属性が設定された場合、その属性は無視する。
101 * 注意)このメソッドを用いて属性を適用した時、既に同じ属性名の属性が設定されていた場合は上書きせず、属性の設定も行わない。
106 public void attrWeakly(String name, String value);
109 * このモデルが指定された名前の属性を持っているかを調べる
110 * @param name 調べる対象となる属性の名前
111 * @return 指定された名前の属性がある場合true, なかった場合はfalse
113 public boolean hasAttr(String name);
116 * 指定された名前を持つ属性の属性値を取得する
118 * @param name 属性値を取得する属性の属性名
119 * @return nameで指定された属性の属性値
121 public Object attr(String name);
124 * 指定された名前の属性をオブジェクトモデル内部に保持された値として取得する
126 * @param name 取得する属性名
127 * @return オブジェクトモデル内部に保持されている属性値
129 public Object attrFromModel(String name);
132 * このモデルが保持するすべての属性値の名前を取得する
135 public Set<String> attrNames();
138 * このモデルが保持する属性値のマップを取得する。
139 * このメソッドによって取得されたマップは変更不可能である。
143 public Map<String, Object> attrMaps();
148 * @param name 取り除く属性の名前
149 * @return 取り除かれた属性の属性値
151 public Object removeAttr(String name);
154 * このオブジェクトモデルの子要素としてオブジェクトモデルを追加する
156 * @param model 子要素として追加するオブジェクトモデル
158 public void append(ObjectModel model);
161 * このオブジェクトモデルと子要素をすべて削除する
163 public void remove();
166 * このモデルの子要素から指定されたモデルを削除する。
169 public void remove(ObjectModel model);
172 * このオブジェクトもでるの子要素をすべて削除する
177 * このオブジェクトモデルが持つ子要素を取得する。
178 * また、このメソッドの返り値のリストは編集不可能である。
181 public List<ObjectModel> children();
184 * このオブジェクトモデルの親要素を取得する。
187 public ObjectModel parent();
190 * このオブジェクトモデルの親要素を設定する
193 public void parent(ObjectModel parent);
196 * このオブジェクトモデルが所属するツリーのルートモデルを取得する
199 public ObjectModel rootModel();
206 public void setComponentMapper(ComponentMapper mapper);
209 * このオブジェクトモデルを基に実コンポーネントを生成する。
211 public void realize();
214 * このオブジェクトモデルに対応づけられた実コンポーネントを取得する。
217 public Object getComponent();
221 * オブジェクトモデルのアクション設定する
222 * @param action ユーザアクションクラス定義(XML画面定義ファイルによる)
223 * @param event イベントタイプ(ユーザガイドに参照:第3章)
225 public void setAction(Action action, String event);
228 * オブジェクトモデルのイベントタイプによるアクションを取得する
232 public Action getAction(EventType event);
235 * オブジェクトモデルのすべてのアクションを取得する
236 * @return ユーザ定義アクションマップ、キーはイベントタイプである。
238 public Map<String, Action> getActions();
251 * 実コンポーネントされたかどうかフラグを設定する
252 * @param realize true:実コンポーネント化された、false:されていない
254 public void setRealize(boolean realize);