package com.vci.client.uif.engine.client; import java.util.ArrayList; import java.util.List; import com.vci.client.uif.engine.common.IDataNode; import com.vci.common.utility.ObjectUtility; public abstract class AbstractDataModel implements IDataModel { private String key = ObjectUtility.getNewObjectID36(); protected IUILayoutModel uiLayoutModel = null; protected Object clickObject = null; protected IRegionPanel regionPanel = null; protected IDataNode sourceData = null; @Override public String getKey() { return this.key; } @Override public void setUILayoutModel(IUILayoutModel uiLayoutModel) { this.uiLayoutModel = uiLayoutModel; } @Override public IUILayoutModel getUILayoutModel() { return this.uiLayoutModel; } @Override public void setClickObject(Object selectObjs) { this.clickObject = selectObjs; } @Override public Object getClickObject() { return this.clickObject; } /** * 将属性值发生更改后业务对象或链接对象刷新到UIPanel * @param clientObject */ @Override public void refreshCache(Object clientObject){ // default is nothing } /** * 返回此 model 所在的 regionPanel */ @Override public IRegionPanel getRegionPanel() { return regionPanel; } /** * 设置此 model 所在的 regionPanel * @param regionPanel 此 model 所在的 regionPanel */ @Override public void setRegionPanel(IRegionPanel regionPanel) { this.regionPanel = regionPanel; } /** * 返回最后选择一数据是否是根节点 * @return */ public boolean lastSelectedIsRoot(){ return true; } /** * 返回选择的数据中,是否包含根节点 * @return */ public boolean selectedHasRoot(){ return false; } /** * 返回 此IRegionPanel初始时、唯一恒定不变的SourceData对象 * @return 此IRegionPanel初始时、唯一恒定不变的SourceData对象 */ public IDataNode getSourceData() { return sourceData; } /** * 设置此IRegionPanel初始时、唯一恒定不变的SourceData对象 * @param sourceData 此IRegionPanel初始时、唯一恒定不变的SourceData对象 */ public void setSourceData(IDataNode sourceData) { this.sourceData = sourceData; } protected IDataModel sourceModel; @Override public void setSourceModel(IDataModel sourceModel){ this.sourceModel = sourceModel; } @Override public IDataModel getSourceModel(){ return sourceModel; } protected boolean regionUIIsActive = false; //默认不需要加载激活界面 protected IDataModel innerActiveDataModel = null; @Override /** * @Title :控件是否激活显示(如果激活界面,当源界面数据变化后刷新时,当前界面数据需要及时刷新,否则不用刷新) * @Description : * @param isActive */ public void setActive(boolean isActive) { this.regionUIIsActive = isActive; if (isActive) { //设置兄弟页签为非激活 if (brotherModels != null && brotherModels.size() >0) { for (IDataModel item : brotherModels) { if (item != this) { item.setActive(false); } } } if (innerActiveDataModel != null) { innerActiveDataModel.setActive(true); } }else if(innerDataModelsInTabPanel != null) { innerActiveDataModel = null; for (IDataModel item : innerDataModelsInTabPanel) { if (item.isActive()) { innerActiveDataModel = item; innerActiveDataModel.setActive(false); } } } } @Override /** * @Title :控件是否激活显示(如果激活界面,当源界面数据变化后刷新时,当前界面数据需要及时刷新,否则不用刷新) * @Description : * @return */ public boolean isActive(){ return regionUIIsActive; } protected boolean needRefreshUI = false; //当前控件触发刷新 /** * 界面是否需要刷新 * @Title :isNeedRefreshUI * @Description : * @return */ public boolean isNeedRefreshUI(){ return needRefreshUI; } /** * 设置界面是否需要刷新 * @param needRefreshUI */ public void setNeedRefreshUI(boolean needRefreshUI){ this.needRefreshUI = needRefreshUI; } /** * 处理UI组件的UI刷新(先刷新UI Module,通过UI Module刷新UI组件) add by zhonggy 2015-07 */ public void refreshUI(IDataModel fromDataModel){ this.sourceModel = fromDataModel; setNeedRefreshUI(true); if (regionUIIsActive && regionPanel != null) { setNeedRefreshUI(false); regionPanel.refreshUI(); } } protected List brotherModels = null; /** * @Title :兄弟Models * @Description : * @param dataModelsInTabPanel */ public void setBrotherModels(List models){ this.brotherModels = new ArrayList(); for (IDataModel iDataModel : models) { if (iDataModel != this) { brotherModels.add(iDataModel); } } } protected List innerDataModelsInTabPanel = null; /** * @Title :设置嵌套子页签 by zhonggy 2015-07 * @Description : * @param innerDataModelsInTabPanel */ public void setInnerTabModels(List innerDataModelsInTabPanel){ this.innerDataModelsInTabPanel = innerDataModelsInTabPanel; } @Override /** * 处理UI刷新 */ public void refreshUI() { this.setActive( true); if (isNeedRefreshUI() && regionPanel != null) { setNeedRefreshUI(false); regionPanel.refreshUI(); } } }