OSDN Git Service

initial commit
[xdf/git-repos.git] / xdf / src / main / java / jp / ac / aiit / xdf / core / model / ObjectModel.java
1 package jp.ac.aiit.xdf.core.model;
2
3 import java.util.List;
4 import java.util.Map;
5 import java.util.Set;
6
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;
10
11 /**
12  * GUI上のコンポーネントの包含関係を表現するオブジェクトモデルツリーを構築するためのツリーノードにあたるクラスである。
13  * また、このモデルツリーが実コンポーネントを操作するための統一されたインターフェースとなる。
14  * そのため、ObjectModelではそのツリー操作に必要なインターフェースを定義する。
15  * 
16  * @author Shunichi Takagi
17  *
18  */
19 public interface ObjectModel {
20         
21         /**
22          * このオブジェクトモデルが参照するタグの名前を取得する
23          * @return タブ名前
24          */
25         public String tagname();
26         
27         /**
28          * このオブジェクトモデルにIDを設定する。ObjectModel#id(id, false)の呼び出しと同一である。
29          * 設定されたIDはこのオブジェクトモデルを参照するために利用される。
30          * 
31          * また、一つのモデルツリー上に同一のIDを持つオブジェクトモデルが存在してはならないため、
32          * このメソッドの実行時にツリーの他モデルが指定されたIDを持つ場合、このモデルに対してIDは設定されない。
33          * もし、強制的にIDを設定したい場合はObjectModel#id(String,boolean)を利用すること
34          * 
35          * @param id 設定するID
36          * @return 指定されたIDを設定できた場合はtrue、設定できなかった場合はfalseを返す
37          */
38         public boolean id(String id);
39         
40         /**
41          * このオブジェクトモデルにIDを設定する。
42          * もしforceがtrueだった場合は、このモデルが所属するツリー上に指定されたIDを持つモデルが存在した場合、
43          * そのモデルからIDを剥奪し、このモデルに対してそのIDを設定する。
44          * forceがfalseの場合は、このモデルが所属するツリー上に指定されたIDを持つモデルが存在した場合、このモデルに対してIDを設定しない。
45          * 
46          * @param id 設定するID
47          * @param force 他モデルに設定されたIDの強奪を許可するか
48          * @return このモデルに対してIDを設定できた場合はtrue、できなかった場合はfalseを返す
49          */
50         public boolean id(String id, boolean force);
51         
52         /**
53          * このオブジェクトモデルのIDを取得する。
54          * 
55          * @return 設定されているID
56          */
57         public String id();
58         
59         /**
60          * このオブジェクトモデルにクラス属性を設定する。
61          * 
62          * @param clazz 設定するクラス
63          */
64         public void addClass(String clazz);
65         
66         /**
67          * このオブジェクトモデルから指定されたクラス属性を取り除く。
68          * 
69          * @param clazz 取り除くクラス
70          */
71         public void removeClass(String clazz);
72         
73         /**
74          * このオブジェクトモデルが指定されたクラスを持っているかどうかを検査する。
75          * 
76          * @param clazz 検査対象のクラス名
77          * @return このモデルにclazzが設定されていた場合true、されていなかった場合falseを返す
78          */
79         public boolean hasClass(String clazz);
80
81         /**
82          * このオブジェクトモデルが持つクラス名をすべて返す
83          * 
84          * @return このモデルが保持するすべてのクラス名
85          */
86         public List<String> classes();
87         
88         /**
89          * このモデルに対して指定した属性名&属性値を持つ属性を設定する。
90          * ここで設定された属性が処理されるかは実装次第である。また、処理できない属性が設定された場合、その属性は無視する。
91          * 
92          * @param name 属性名
93          * @param value 属性値
94          */
95         public void attr(String name, Object value);
96         
97         /**
98          * このモデルに対して指定した属性名&属性値を持つ属性を上書きせずに設定する
99          * ここで設定された属性が処理されるかは実装次第である。また、処理できない属性が設定された場合、その属性は無視する。
100          * 
101          * 注意)このメソッドを用いて属性を適用した時、既に同じ属性名の属性が設定されていた場合は上書きせず、属性の設定も行わない。
102          * 
103          * @param name 属性名
104          * @param value 属性値
105          */
106         public void attrWeakly(String name, String value);
107         
108         /**
109          * このモデルが指定された名前の属性を持っているかを調べる
110          * @param name 調べる対象となる属性の名前
111          * @return 指定された名前の属性がある場合true, なかった場合はfalse
112          */
113         public boolean hasAttr(String name);
114         
115         /**
116          * 指定された名前を持つ属性の属性値を取得する
117          * 
118          * @param name 属性値を取得する属性の属性名
119          * @return nameで指定された属性の属性値
120          */
121         public Object attr(String name);
122         
123         /**
124          * 指定された名前の属性をオブジェクトモデル内部に保持された値として取得する
125          * 
126          * @param name 取得する属性名
127          * @return オブジェクトモデル内部に保持されている属性値
128          */
129         public Object attrFromModel(String name);
130         
131         /**
132          * このモデルが保持するすべての属性値の名前を取得する
133          * @return 属性名称
134          */
135         public Set<String> attrNames();
136         
137         /**
138          * このモデルが保持する属性値のマップを取得する。
139          * このメソッドによって取得されたマップは変更不可能である。
140          * 
141          * @return モデル属性値のマップ
142          */
143         public Map<String, Object> attrMaps();
144         
145         /**
146          * 指定された属性名を持つ属性を取り除く
147          * 
148          * @param name 取り除く属性の名前
149          * @return 取り除かれた属性の属性値
150          */
151         public Object removeAttr(String name);
152         
153         /**
154          * このオブジェクトモデルの子要素としてオブジェクトモデルを追加する
155          * 
156          * @param model 子要素として追加するオブジェクトモデル
157          */
158         public void append(ObjectModel model);
159         
160         /**
161          * このオブジェクトモデルと子要素をすべて削除する
162          */
163         public void remove();
164         
165         /**
166          * このモデルの子要素から指定されたモデルを削除する。
167          * @param model
168          */
169         public void remove(ObjectModel model);
170         
171         /**
172          * このオブジェクトもでるの子要素をすべて削除する
173          */
174         public void empty();
175         
176         /**
177          * このオブジェクトモデルが持つ子要素を取得する。
178          * また、このメソッドの返り値のリストは編集不可能である。
179          * @return 子要素リスト
180          */
181         public List<ObjectModel> children();
182         
183         /**
184          * このオブジェクトモデルの親要素を取得する。
185          * @return 親要素
186          */
187         public ObjectModel parent();
188         
189         /**
190          * このオブジェクトモデルの親要素を設定する
191          * @param parent
192          */
193         public void parent(ObjectModel parent);
194         
195         /**
196          * このオブジェクトモデルが所属するツリーのルートモデルを取得する
197          * @return ツリーのルートモデル
198          */
199         public ObjectModel rootModel();
200         
201         /**
202          * コンポーネントマッパを登録する
203          * 
204          * @param mapper
205          */
206         public void setComponentMapper(ComponentMapper mapper);
207         
208         /**
209          * このオブジェクトモデルを基に実コンポーネントを生成する。
210          */
211         public void realize();
212         
213         /**
214          * このオブジェクトモデルに対応づけられた実コンポーネントを取得する。
215          * @return 実コンポーネント
216          */
217         public Object getComponent();
218
219
220         /**
221          * オブジェクトモデルのアクション設定する
222          * @param action ユーザアクションクラス定義(XML画面定義ファイルによる)
223          * @param event イベントタイプ(ユーザガイドに参照:第3章)
224          */
225         public void setAction(Action action, String event);
226         
227         /**
228          * オブジェクトモデルのイベントタイプによるアクションを取得する
229          * @param event
230          * @return ユーザ定義アクション
231          */
232         public Action getAction(EventType event);
233         
234         /**
235          * オブジェクトモデルのすべてのアクションを取得する
236          * @return ユーザ定義アクションマップ、キーはイベントタイプである。
237          */
238         public Map<String, Action> getActions();
239         
240         /**
241          * 
242          */
243         public void open();
244         
245         /**
246          * 
247          */
248         public void close();
249         
250         /**
251          * 実コンポーネントされたかどうかフラグを設定する
252          * @param realize true:実コンポーネント化された、false:されていない
253          */
254         public void setRealize(boolean realize);
255 }