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<IDataModel> brotherModels = null;
|
/**
|
* @Title :兄弟Models
|
* @Description :
|
* @param dataModelsInTabPanel
|
*/
|
public void setBrotherModels(List<IDataModel> models){
|
this.brotherModels = new ArrayList<IDataModel>();
|
for (IDataModel iDataModel : models) {
|
if (iDataModel != this) {
|
brotherModels.add(iDataModel);
|
}
|
}
|
}
|
|
protected List<IDataModel> innerDataModelsInTabPanel = null;
|
/**
|
* @Title :设置嵌套子页签 by zhonggy 2015-07
|
* @Description :
|
* @param innerDataModelsInTabPanel
|
*/
|
public void setInnerTabModels(List<IDataModel> innerDataModelsInTabPanel){
|
this.innerDataModelsInTabPanel = innerDataModelsInTabPanel;
|
}
|
|
@Override
|
/**
|
* 处理UI刷新
|
*/
|
public void refreshUI() {
|
this.setActive( true);
|
if (isNeedRefreshUI() && regionPanel != null) {
|
setNeedRefreshUI(false);
|
regionPanel.refreshUI();
|
}
|
}
|
}
|