package com.vci.client.uif.engine.client.tree;
|
|
import java.util.ArrayList;
|
import java.util.List;
|
|
import javax.swing.tree.TreePath;
|
|
import com.vci.client.ui.tree.VCIBaseTreeModel;
|
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 TreePanelModel extends VCIBaseTreeModel implements IDataModel{
|
|
private static final long serialVersionUID = 8950763390449482192L;
|
private String key = null;
|
private IUILayoutModel uiLayoutModel = null;
|
//当前选择的树节点数据
|
private Object[] selectObjs = null;
|
//根节点
|
private TreeNode rootNode = null;
|
//关联的树容器Panel(UI)
|
private TreePanel mainPanel = null;
|
//当前所选择的数据
|
private Object clickObject = null;
|
//
|
private IRegionPanel regionPanel = null;
|
|
public TreePanelModel(TreeNode treeNode, TreePanel panel) {
|
super(treeNode);
|
rootNode = treeNode;
|
this.mainPanel = panel;
|
key = ObjectUtility.getNewObjectID36();
|
setRegionPanel(panel);
|
}
|
|
@Override
|
public String getKey() {
|
return key;
|
}
|
|
@Override
|
public int[] getSelectObjectRowIndexs() {
|
// TODO Auto-generated method stub
|
return null;
|
}
|
|
@Override
|
public Object[] getSelectObjects() {
|
return this.selectObjs;
|
}
|
|
public void setSelectObjects(Object[] objs) {
|
selectObjs = objs;
|
}
|
|
@Override
|
public void setClickObject(Object selectObjs) {
|
this.clickObject = selectObjs;
|
}
|
|
@Override
|
public Object getClickObject() {
|
return this.clickObject;
|
}
|
|
@Override
|
public Object getRootObject() {
|
return this.rootNode.getObj();
|
}
|
|
@Override
|
public void setUILayoutModel(IUILayoutModel uiLayoutModel) {
|
this.uiLayoutModel = uiLayoutModel;
|
}
|
|
@Override
|
public IUILayoutModel getUILayoutModel() {
|
return this.uiLayoutModel;
|
}
|
|
@Override
|
public void refreshCache(Object clientObject) {
|
// TODO Auto-generated method stub
|
|
}
|
|
/**
|
* 返回此 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 boolean selectedHasRoot(){
|
boolean res = false;
|
TreePath[] treePaths = mainPanel.getTree().getSelectionPaths();
|
for(TreePath treePath : treePaths){
|
boolean pathIsRoot = treePathIsRoot(treePath);
|
return pathIsRoot;
|
}
|
return res;
|
}
|
@Override
|
public boolean lastSelectedIsRoot(){
|
return treePathIsRoot(mainPanel.getTree().getSelectionPath());
|
}
|
|
private boolean treePathIsRoot(TreePath treePath){
|
boolean res = false;
|
Object lastObject = mainPanel.getTree().getLastSelectedPathComponent();
|
if(lastObject instanceof TreeTableModel.TreeTableNode){
|
TreeTableModel.TreeTableNode treeNode = (TreeTableModel.TreeTableNode)lastObject;
|
res = (treeNode.getParent() == null);
|
}
|
return res;
|
}
|
|
private IDataModel sourceModel;
|
@Override
|
public void setSourceModel(IDataModel sourceModel){
|
this.sourceModel = sourceModel;
|
}
|
|
@Override
|
public IDataModel getSourceModel(){
|
return sourceModel;
|
}
|
|
private IDataNode sourceData = null;
|
/**
|
* 返回 此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 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;
|
}
|
|
@Override
|
public void refresh(IDataModel fromDataModel) {
|
//TODO -本身的刷新
|
//先获取对象,而后更新对象的本身的信息,重新设置node的显示值。
|
this.sourceModel = fromDataModel;
|
mainPanel.refreshUI();
|
}
|
|
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);
|
}
|
}
|
}
|
|
/**
|
* 处理UI组件的UI刷新(先刷新UI Module,通过UI Module刷新UI组件) add by zhonggy 2015-07
|
*/
|
public void refreshUI(IDataModel fromDataModel){
|
this.sourceModel = fromDataModel;
|
needRefreshUI = true;
|
if (regionUIIsActive && regionPanel != null) {
|
needRefreshUI = false;
|
regionPanel.refreshUI();
|
}
|
}
|
|
@Override
|
/**
|
* 处理UI刷新
|
*/
|
public void refreshUI() {
|
this.setActive(true);
|
if (needRefreshUI && regionPanel != null) {
|
needRefreshUI = false;
|
regionPanel.refreshUI();
|
}
|
}
|
}
|