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> uiListeners = new HashMap>(); public IRegionPanel getRegionPanel() { return regionPanel; } public void setRegionPanel(IRegionPanel regionPanel) { this.regionPanel = regionPanel; } public synchronized void addUIListener(String key, UIBaseEventListener listener) { List list = null; if (uiListeners.containsKey(key)) { list = uiListeners.get(key); } else { list = new ArrayList(); } 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 tempVector = null; UIEvent event = new UIEvent(this.getRegionPanel()); synchronized(this) { tempVector = (Vector) uiListeners.get(key).clone(); for (int i = 0; i < tempVector.size(); i++) { UIBaseEventListener listener = (UIBaseEventListener) tempVector.elementAt(i); listener.eventActivated(event); } } } }