package com.vci.client.uif.engine.client.tableArea;
|
|
import java.util.List;
|
|
import com.vci.client.bof.ClientBusinessObject;
|
import com.vci.client.uif.engine.client.AbstractDataModel;
|
import com.vci.client.uif.engine.client.IDataModel;
|
import com.vci.client.uif.engine.client.tree.TreePanelModel;
|
import com.vci.client.uif.engine.common.IDataNode;
|
|
public class TablePanelDataModel extends AbstractDataModel {
|
|
private TablePanel tablePanel = null;
|
private Object[] selectObjs = null;
|
|
public TablePanelDataModel(TablePanel tablePanel){
|
this.tablePanel = tablePanel;
|
setRegionPanel(tablePanel);
|
}
|
|
@Override
|
public int[] getSelectObjectRowIndexs() {
|
return tablePanel.getDataTablePanel().getSelectedRowIndexs();
|
}
|
|
@Override
|
public Object[] getSelectObjects() {
|
// TODO 频率调用此接口时,可能会存在性能问题,存在优化的空间
|
List<IDataNode> list = (List<IDataNode>)tablePanel.getDataTablePanel().getSelectedRowObjectsList();
|
int size = list.size();
|
if(size <= 0) return null;
|
|
Object[] res = new Object[size];
|
for (int i = 0; i < res.length; i++) {
|
res[i] = list.get(i);
|
}
|
selectObjs = res;
|
return res;
|
}
|
|
@Override
|
public Object getRootObject() {
|
return tablePanel.getSourceData();
|
}
|
|
@Override
|
public synchronized void refresh(IDataModel fromDataModel) {
|
//super.refreshUI(fromDataModel); by zhonggy 2015-07
|
if (fromDataModel instanceof TreePanelModel) {
|
TreePanelModel treePanelModel = (TreePanelModel)fromDataModel;
|
Object treeSelectObj = treePanelModel.getClickObject();
|
if (treeSelectObj == null) {
|
return;
|
}
|
// 当是被动刷新时,重新设置pageIndex为1
|
tablePanel.getDataTablePanel().setPageIndex(1);
|
if(treeSelectObj instanceof IDataNode){
|
// 设置RegionPanel的sourceData 为Tree
|
IDataNode sourceData = (IDataNode)treeSelectObj;
|
this.setSourceData(sourceData);
|
}
|
} else if (fromDataModel instanceof TablePanelDataModel) {
|
TablePanelDataModel tablePanelDataModel = (TablePanelDataModel)fromDataModel;
|
Object tableSelectObj = tablePanelDataModel.getClickObject();
|
// add by xchao 2014.04.16 begin
|
// 刷新时,始终应该使用 初始的 sourceData
|
tableSelectObj = tablePanel.getSourceData();
|
// add by xchao 2014.04.16 end
|
if (tableSelectObj == null) {
|
tableSelectObj = tablePanelDataModel.getClickObject();
|
if(tableSelectObj == null){
|
|
tablePanel.getDataTablePanel().refreshTableData();
|
return;
|
}
|
}
|
// update by xchao 2014.03.26 begin
|
// 修复来自Dialog底部的button执行完成后
|
// 刷新 调用弹出此窗口的button所在的table的数据时,刷新失败的BUG
|
if(tableSelectObj instanceof IDataNode){
|
// 设置RegionPanel的sourceData 为Tree
|
IDataNode sourceData = (IDataNode)tableSelectObj;
|
this.setSourceData(sourceData);
|
}
|
// update by xchao 2014.03.26 end
|
}
|
tablePanel.getDataTablePanel().refreshTableData(); //改造后的UI刷新机制不能通过Module直接刷新UI? by zhonggy 2015-07
|
this.getUILayoutModel().notifyRefresh(this);
|
}
|
|
/**
|
* 处理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) {
|
refreshUI();
|
}
|
}
|
|
@Override
|
/**
|
* 处理UI刷新
|
*/
|
public void refreshUI() {
|
this.setActive( true);
|
if (needRefreshUI && regionPanel != null) {
|
needRefreshUI = false;
|
//regionPanel.refreshUI();
|
if (sourceModel instanceof TreePanelModel) {
|
TreePanelModel treePanelModel = (TreePanelModel) sourceModel;
|
Object treeSelectObj = treePanelModel.getClickObject();
|
if (treeSelectObj == null) {
|
return;
|
}
|
//tablePanel.getDataTablePanel().setPageIndex(1);
|
if (treeSelectObj instanceof IDataNode) {
|
IDataNode sourceData = (IDataNode) treeSelectObj;
|
this.setSourceData(sourceData);
|
}
|
} else if (sourceModel instanceof TablePanelDataModel) {
|
TablePanelDataModel tablePanelDataModel = (TablePanelDataModel) sourceModel;
|
Object tableSelectObj = tablePanelDataModel.getClickObject();
|
//tableSelectObj = tablePanel.getSourceData(); //??? by zhonggy
|
if (tableSelectObj == null) {
|
//tableSelectObj = tablePanelDataModel.getClickObject();
|
/*if (tableSelectObj == null) {
|
tablePanel.getDataTablePanel().refreshTableData();
|
return;
|
}*/
|
return;
|
}
|
if (tableSelectObj instanceof IDataNode) {
|
IDataNode sourceData = (IDataNode) tableSelectObj;
|
this.setSourceData(sourceData);
|
}
|
}
|
if (regionUIIsActive && regionPanel != null) {
|
/*needRefreshUI = false;*/
|
//regionPanel.refreshUI();
|
tablePanel.getDataTablePanel().refreshTableData();
|
}
|
}
|
}
|
}
|