1 package jp.ac.aiit.xdf.core.model;
3 import java.util.ArrayList;
4 import java.util.Collections;
5 import java.util.HashMap;
10 import jp.ac.aiit.xdf.component.ComponentMapper;
11 import jp.ac.aiit.xdf.core.action.Action;
12 import jp.ac.aiit.xdf.core.action.EventType;
15 * オブジェクトモデルのデフォルト実装を提供するクラス。
16 * オブジェクトモデル拡張のためのサポートクラスとして存在する。ただ実装として利用したい場合はDefaultObjectModelを利用すること。
18 * @author Shunichi Takagi
20 public abstract class ObjectModelSupport implements ObjectModel {
21 private String tagname;
22 private ComponentMapper mapper;
25 private List<String> classes;
26 private Map<String, Object> attrs;
28 private ObjectModel parent;
29 private List<ObjectModel> children;
32 private Map<String, Action> actions;
38 public ObjectModelSupport(String tagname) {
39 this.tagname = tagname;
42 this.classes = new ArrayList<String>();
43 this.attrs = new HashMap<String, Object>();
46 this.children = new ArrayList<ObjectModel>();
48 this.actions = new HashMap<String, Action>();
51 public String tagname() {
55 public void addClass(String clazz) {
59 public Map<String, Object> attrMaps() {
60 return Collections.unmodifiableMap(attrs);
63 public Set<String> attrNames() {
64 return Collections.unmodifiableSet(attrs.keySet());
67 public void append(ObjectModel model) {
72 public void attr(String name, Object value) {
73 if (mapper.isRealized()){
74 mapper.setAttr(name, value);
76 attrs.put(name, value);
80 public boolean hasAttr(String name) {
81 return attrs.containsKey(name);
84 public Object attr(String name) {
85 return (mapper.isRealized() ? mapper.getAttr(name):attrs.get(name));
88 public Object attrFromModel(String name) {
89 return attrs.get(name);
92 public List<ObjectModel> children() {
93 return Collections.unmodifiableList(children);
100 public boolean hasClass(String clazz) {
101 return classes.contains(clazz);
104 public boolean id(String id) {
105 //TODO 所属ツリー上で同一のIDが指定されていないか確認しなければならない
110 public boolean id(String id, boolean force) {
111 //TODO 所属ツリー上で同一のIDが指定されていないか確認しなければならない
120 public ObjectModel parent() {
125 public void parent(ObjectModel parent) {
126 this.parent = parent;
129 public ObjectModel rootModel() {
130 ObjectModel m = this;
131 while( m.parent() != null ) {
137 public void remove() {
141 public Object removeAttr(String name) {
142 return attrs.remove(name);
145 public void removeClass(String clazz) {
146 classes.remove(clazz);
149 public void remove(ObjectModel model) {
150 children.remove(model);
154 public void setComponentMapper(ComponentMapper mapper) {
155 this.mapper = mapper;
156 mapper.setModel(this);
160 public Object getComponent() {
161 return ( mapper.isRealized() ? mapper.getComponent() : null );
165 public void realize() {
170 public void setAction(Action action, String event){
171 actions.put(event, action);
175 public Action getAction(EventType event) {
176 return actions.get(event);
180 public Map<String, Action> getActions() {
185 public void attrWeakly(String name, String value){
186 if( !hasAttr(name) && ( mapper != null )) {
187 attr(name, mapper.typeConvert(name, value));
192 public List<String> classes(){ return classes; }
195 public void close() { }
198 public void open() { }
202 public void setRealize(boolean realize){
203 mapper.setRealize(realize);