package com.vci.client.uif.engine.client.event;
|
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.List;
|
import java.util.Map;
|
import java.util.Vector;
|
|
import com.vci.client.uif.engine.client.IRegionPanel;
|
|
/**
|
* UI显示对象的事件容器类,通过此类进行本UI对象的事件注入,批量事件执行
|
*
|
* @author VCI_STGK_Lincq
|
*
|
*/
|
public class UIBaseEventContainer {
|
|
//主对象面板
|
private IRegionPanel regionPanel = null;
|
//监听器,按定义的关键字进行分组,分组中的监听器按顺序排列,按顺序执行
|
private Map<String, Vector<UIBaseEventListener>> uiListeners = new HashMap<String, Vector<UIBaseEventListener>>();
|
|
public IRegionPanel getRegionPanel() {
|
return regionPanel;
|
}
|
|
public void setRegionPanel(IRegionPanel regionPanel) {
|
this.regionPanel = regionPanel;
|
}
|
|
public synchronized void addUIListener(String key, UIBaseEventListener listener) {
|
List<UIBaseEventListener> list = null;
|
if (uiListeners.containsKey(key)) {
|
list = uiListeners.get(key);
|
} else {
|
list = new ArrayList<UIBaseEventListener>();
|
}
|
list.add(listener);
|
}
|
|
public synchronized void romoveUIListener(String key, UIBaseEventListener listener) {
|
if (!uiListeners.containsKey(key)) {
|
return;
|
}
|
uiListeners.get(key).remove(listener);
|
}
|
|
@SuppressWarnings("unchecked")
|
public void activeUIEvents(String key) {
|
Vector<UIBaseEventListener> tempVector = null;
|
UIEvent event = new UIEvent(this.getRegionPanel());
|
synchronized(this) {
|
tempVector = (Vector<UIBaseEventListener>) uiListeners.get(key).clone();
|
for (int i = 0; i < tempVector.size(); i++) {
|
UIBaseEventListener listener = (UIBaseEventListener) tempVector.elementAt(i);
|
listener.eventActivated(event);
|
}
|
}
|
}
|
}
|