package com.vci.client.uif.engine.client.TreeTable;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import javax.swing.tree.TreePath;
|
|
import com.vci.client.ui.treeTable.TreeTableModel;
|
import com.vci.client.uif.engine.client.IDataModel;
|
import com.vci.client.uif.engine.client.IRegionPanel;
|
import com.vci.client.uif.engine.client.IUILayoutModel;
|
import com.vci.client.uif.engine.common.IDataNode;
|
import com.vci.common.utility.ObjectUtility;
|
|
public class TreeTableDataModel extends TreeTableModel implements IDataModel {
|
|
private TreeTablePanel tablePanel = null;
|
private Object clickObject = null;
|
private IRegionPanel regionPanel = null;
|
private IDataNode sourceData = null;
|
|
public TreeTableDataModel(Object rootObject, String[] columnNames,
|
Class<?>[] columnClasses, TreeTablePanel tablePanel) {
|
super(rootObject, columnNames, columnClasses);
|
TreeTableModel.TreeTableNode rootNode = new TreeTableNode(rootObject);
|
rootNode.setPropertyValueByName(columnNames[0], rootObject);
|
this.root = rootNode;
|
this.tablePanel = tablePanel;
|
setRegionPanel(tablePanel);
|
}
|
|
@Override
|
public boolean selectedHasRoot() {
|
boolean res = false;
|
TreePath[] treePaths = tablePanel.getTreeTable().getTree()
|
.getSelectionPaths();
|
for (TreePath treePath : treePaths) {
|
boolean pathIsRoot = treePathIsRoot(treePath);
|
if (pathIsRoot) {
|
res = true;
|
break;
|
}
|
}
|
return res;
|
}
|
|
@Override
|
public boolean lastSelectedIsRoot() {
|
return treePathIsRoot(tablePanel.getTreeTable().getTree()
|
.getSelectionPath());
|
}
|
|
private boolean treePathIsRoot(TreePath treePath) {
|
boolean res = false;
|
Object lastObject = tablePanel.getTreeTable().getTree()
|
.getLastSelectedPathComponent();
|
if (lastObject instanceof TreeTableModel.TreeTableNode) {
|
TreeTableModel.TreeTableNode treeNode = (TreeTableModel.TreeTableNode) lastObject;
|
res = (treeNode.getParent() == null);
|
}
|
return res;
|
}
|
|
/**
|
* 重写父类的 isLeaf,以当前节点设置的是否是叶节点为准
|
*/
|
public boolean isLeaf(Object node) {
|
return ((TreeTableNode) node).isLeaf();
|
}
|
|
private String key = ObjectUtility.getNewObjectID36();
|
private IUILayoutModel uiLayoutModel = 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 int[] getSelectObjectRowIndexs() {
|
return tablePanel.getTreeTable().getSelectedRows();
|
}
|
|
@Override
|
public Object[] getSelectObjects() {
|
return tablePanel.getSelectTreeNodeObjects();
|
}
|
|
@Override
|
public Object getRootObject() {
|
return tablePanel.getRootBusinessObject();
|
}
|
|
@Override
|
public void refreshCache(Object clientObject) {
|
// TODO Auto-generated method stub
|
|
}
|
|
@Override
|
public void setClickObject(Object selectObjs) {
|
this.clickObject = selectObjs;
|
}
|
|
@Override
|
public Object getClickObject() {
|
return this.clickObject;
|
}
|
|
/**
|
* 返回此 model 所在的 regionPanel
|
*/
|
@Override
|
public IRegionPanel getRegionPanel() {
|
return regionPanel;
|
}
|
|
/**
|
* 设置此 model 所在的 regionPanel
|
*
|
* @param regionPanel
|
* 此 model 所在的 regionPanel
|
*/
|
@Override
|
public void setRegionPanel(IRegionPanel regionPanel) {
|
this.regionPanel = regionPanel;
|
}
|
|
@Override
|
public void fireTreeStructureChanged(Object source, Object[] path,
|
int[] childIndices, Object[] children) {
|
super.fireTreeStructureChanged(source, path, childIndices, children);
|
}
|
|
/**
|
* 返回 此IRegionPanel初始时、唯一恒定不变的SourceData对象
|
*
|
* @return 此IRegionPanel初始时、唯一恒定不变的SourceData对象
|
*/
|
public IDataNode getSourceData() {
|
return sourceData;
|
}
|
|
/**
|
* 设置此IRegionPanel初始时、唯一恒定不变的SourceData对象
|
*
|
* @param sourceData
|
* 此IRegionPanel初始时、唯一恒定不变的SourceData对象
|
*/
|
public void setSourceData(IDataNode sourceData) {
|
this.sourceData = sourceData;
|
}
|
|
private IDataModel sourceModel;
|
|
@Override
|
public void setSourceModel(IDataModel sourceModel) {
|
this.sourceModel = sourceModel;
|
}
|
|
@Override
|
public IDataModel getSourceModel() {
|
return sourceModel;
|
}
|
|
protected List<IDataModel> innerDataModelsInTabPanel = null;
|
/**
|
* @Title :设置嵌套子页签 by zhonggy 2015-07
|
* @Description :
|
* @param innerDataModelsInTabPanel
|
*/
|
public void setInnerTabModels(List<IDataModel> innerDataModelsInTabPanel){
|
this.innerDataModelsInTabPanel = innerDataModelsInTabPanel;
|
}
|
|
private boolean regionUIIsActive = false; // 默认不需要加载激活界面
|
protected IDataModel innerActiveDataModel = null;
|
@Override
|
/**
|
* @Title :控件是否激活显示(如果激活界面,当源界面数据变化后刷新时,当前界面数据需要及时刷新,否则不用刷新)
|
* @Description :
|
* @param isActive
|
*/
|
/*public void setActive(boolean isActive) {
|
this.regionUIIsActive = 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;
|
}
|
|
private boolean needRefreshUI = false; // 当前控件触发刷新
|
|
/**
|
* 界面是否需要刷新
|
*
|
* @Title :isNeedRefreshUI
|
* @Description :
|
* @return
|
*/
|
public boolean isNeedRefreshUI() {
|
return needRefreshUI;
|
}
|
|
/**
|
* 设置界面是否需要刷新
|
* @param needRefreshUI
|
*/
|
public void setNeedRefreshUI(boolean needRefreshUI){
|
this.needRefreshUI = needRefreshUI;
|
}
|
|
private 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);
|
}
|
}
|
}
|
|
@Override
|
public void refresh(IDataModel fromDataModel) {
|
this.sourceModel = fromDataModel;
|
if (fromDataModel instanceof TreeTableDataModel) { //? by zhonggy 2015-07
|
getUILayoutModel().notify(fromDataModel);
|
}
|
tablePanel.reloadCurrenTreeNodeData();
|
}
|
|
/**
|
* 处理UI组件的UI刷新(先刷新UI Module,通过UI Module刷新UI组件) add by zhonggy 2015-07
|
*/
|
public void refreshUI(IDataModel fromDataModel){
|
this.sourceModel = fromDataModel;
|
if (fromDataModel instanceof TreeTableDataModel) { //? by zhonggy 2015-07
|
getUILayoutModel().notify(fromDataModel);
|
}
|
needRefreshUI = true;
|
if (regionUIIsActive && regionPanel != null) {
|
needRefreshUI = false;
|
tablePanel.refreshUI();
|
}
|
}
|
|
@Override
|
/**
|
* 处理UI刷新
|
*/
|
public void refreshUI() {
|
this.setActive(true);
|
if (needRefreshUI && regionPanel != null) {
|
needRefreshUI = false;
|
tablePanel.refreshUI();
|
}
|
}
|
}
|