/*
* 容器基类
* UI容器,用于添加子元素
* author: 吴安国
* version: 1.0
*/
function Container() {
View.call(this, null);
this.childViews = new List();
this.addChildChangeListener(new ChildChangeEventListenerImpl());
}
Container.prototype = new View();
/**
* 添加子元素
* @param view 子元素
*/
Container.prototype.addView = function(view) {
this.childViews.add(view);
view.parent = this;
this.fireChildChangeHandle(ChildChangeEvent.CHILD_CHANGE_TYPE_ADD, view);
};
/**
* 删除子元素
* @param view 子元素
*/
Container.prototype.removeView = function(view) {
this.childViews.remove(view);
this.fireChildChangeHandle(ChildChangeEvent.CHILD_CHANGE_TYPE_REMOVE, view);
};
/**
* 增加子元素增删事件监听器
* @param childChangeEventListener 增删子元素事件监听器
*/
Container.prototype.addChildChangeListener = function(childChangeEventListener) {
if(!(childChangeEventListener instanceof ChildChangeEventListener)) {
throw new Error("类型转换错误," + childChangeEventListener + " 不是ChildChangeEventListener类型");
} else {
this.addEventListener(EventObject.EVENT_CHILDCHANGE, childChangeEventListener);
}
};
/**
* 子元素增删事件执行
* @param type 增删子元素事件类型
* @param childView 子元素
*/
Container.prototype.fireChildChangeHandle = function(type, childView) {
var childChangeEvent = new ChildChangeEvent(this, type, childView);
var childChangeListeners = this.eventListeners.getEventListener(EventObject.EVENT_CHILDCHANGE);
var childChangeListener = null;
for(var i = 0; i < childChangeListeners.size(); i++) {
childChangeListener = childChangeListeners.get(i);
childChangeListener.childChange(childChangeEvent);
}
};