package com.vci.client.uif.engine.client.compare;
|
|
import javax.swing.tree.DefaultTreeCellRenderer;
|
|
import com.vci.client.uif.engine.client.compare.attribute.Attributes;
|
import com.vci.client.uif.engine.client.compare.comparer.DefaultTreeNodeObjectComparer;
|
import com.vci.client.uif.engine.client.compare.comparer.TreeNodeObjectComparer;
|
import com.vci.client.uif.engine.client.compare.dataloader.DataLoader;
|
import com.vci.client.uif.engine.client.compare.dialog.NodeCompareDialog;
|
import com.vci.client.uif.engine.client.compare.dialog.renderer.CompareTreeCellRenderer;
|
import com.vci.client.uif.engine.client.compare.dialog.treenode.TreeNodeObjectFactory;
|
import com.vci.client.uif.engine.client.compare.dialog.treenode.TreeNodeObjectFactoryFactory;
|
import com.vci.mw.ClientContextVariable;
|
|
/**
|
* Innovation Platform 业务对象树型结构通用比较工具
|
*
|
* 在调用实例的 showDialog() 方法前,需要执行数据加载器。
|
*
|
* @author VCI-STGK006
|
*
|
*/
|
public class Comparer {
|
|
/**
|
* 窗口标题
|
*/
|
private String title = "比较器";
|
|
/**
|
* 窗口是否为模式
|
*/
|
private boolean modal = true;
|
|
//树相关
|
|
/**
|
* 左侧树数据加载器
|
*/
|
private DataLoader lDataLoader = null;
|
|
/**
|
* 右侧树数据记载器
|
*/
|
private DataLoader rDataLoader = null;
|
|
/**
|
* 树节点对象工厂
|
*/
|
private TreeNodeObjectFactory lTof = null;
|
|
/**
|
* 树节点对象工厂
|
*/
|
private TreeNodeObjectFactory rTof = null;
|
|
/**
|
* 树节点单元格渲染器
|
*/
|
private DefaultTreeCellRenderer treeRenderer = new CompareTreeCellRenderer();
|
|
/**
|
* 树节点对象比较工具
|
*/
|
private TreeNodeObjectComparer objectComparer = new DefaultTreeNodeObjectComparer();
|
|
/**
|
* 树节点比较工具,为空时不进行比较
|
*/
|
private TreeNodeObjectComparer comparer = new DefaultTreeNodeObjectComparer();
|
|
/**
|
* 定义属性显示
|
*/
|
private Attributes attributes = null;
|
|
/**
|
* 是否可以编辑
|
*/
|
private boolean editable = false;
|
|
/**
|
* 构造器
|
*/
|
public Comparer() {
|
|
}
|
|
/**
|
* 构造器
|
* @param lDataLoader 左侧数据加载器
|
* @param rDataLoader 右侧数据加载器
|
*/
|
public Comparer(DataLoader lDataLoader, DataLoader rDataLoader) {
|
//加载数据
|
this.lDataLoader = lDataLoader;
|
this.rDataLoader = rDataLoader;
|
}
|
|
public void showDialog() {
|
lDataLoader.loading();
|
rDataLoader.loading();
|
NodeCompareDialog ed = new NodeCompareDialog(ClientContextVariable.getFrame(), this.title, this);
|
ed.setVisible(true);
|
ed.dispose();
|
}
|
|
/**
|
* 得到窗口标题
|
* @return
|
*/
|
public String getTitle() {
|
return title;
|
}
|
|
/**
|
* 设置窗口标题
|
* @param title
|
*/
|
public void setTitle(String title) {
|
this.title = title;
|
}
|
|
/**
|
* 判断窗口是否是模式的
|
* @return
|
*/
|
public boolean isModal() {
|
return modal;
|
}
|
|
/**
|
* 设置窗口模式
|
* @param modal
|
*/
|
public void setModal(boolean modal) {
|
this.modal = modal;
|
}
|
|
/**
|
* 得到左侧数据加载器
|
* @return
|
*/
|
public DataLoader getlDataLoader() {
|
return lDataLoader;
|
}
|
|
/**
|
* 设置左数据加载器
|
* @param lDataLoader
|
*/
|
public void setlDataLoader(DataLoader lDataLoader) {
|
this.lTof = null;
|
this.lDataLoader = lDataLoader;
|
}
|
|
/**
|
* 得到右侧数据加载器
|
* @return
|
*/
|
public DataLoader getrDataLoader() {
|
return rDataLoader;
|
}
|
|
/**
|
* 设置右侧数据加载器
|
* @param rDataLoader
|
*/
|
public void setrDataLoader(DataLoader rDataLoader) {
|
this.rTof = null;
|
this.rDataLoader = rDataLoader;
|
}
|
|
/**
|
* 得到树节点对象工厂
|
* @return
|
*/
|
public TreeNodeObjectFactory getLTreeNodeObjectFactory() {
|
if(this.lTof == null) {
|
this.lTof = TreeNodeObjectFactoryFactory.getTreeNodeObjectFactory(lDataLoader);
|
}
|
return this.lTof;
|
}
|
|
/**
|
* 得到树节点对象工厂
|
* @param
|
*/
|
public TreeNodeObjectFactory getRTreeNodeObjectFactory() {
|
if(this.rTof == null) {
|
this.rTof = TreeNodeObjectFactoryFactory.getTreeNodeObjectFactory(this.rDataLoader);
|
}
|
return this.rTof;
|
}
|
|
/**
|
* 得到树节点渲染器
|
* @return
|
*/
|
public DefaultTreeCellRenderer getTreeRenderer() {
|
return treeRenderer;
|
}
|
|
/**
|
* 设置树节点渲染器
|
* @param treeRenderer
|
*/
|
public void setTreeRenderer(DefaultTreeCellRenderer treeRenderer) {
|
this.treeRenderer = treeRenderer;
|
}
|
|
/**
|
* 节点比较器
|
* @return
|
*/
|
public TreeNodeObjectComparer getObjectComparer() {
|
return objectComparer;
|
}
|
|
/**
|
* 设置节点比较器
|
* @param objectComparer
|
*/
|
public void setObjectComparer(TreeNodeObjectComparer objectComparer) {
|
this.objectComparer = objectComparer;
|
}
|
|
/**
|
* 得到树节点比较器
|
*
|
* <br>默认使用DefaultTreeNodeObjectComparer作为节点比较器
|
* @return
|
*/
|
public TreeNodeObjectComparer getComparer() {
|
return comparer;
|
}
|
|
/**
|
* 设置树节点比较器
|
* <br>将比较器设置为null,不进行节点属性信息的比较
|
* <br>默认使用DefaultTreeNodeObjectComparer作为节点比较器
|
* @param comparer
|
*/
|
public void setComparer(TreeNodeObjectComparer comparer) {
|
this.comparer = comparer;
|
}
|
|
/**
|
* 是否显示工具条
|
* @return
|
*/
|
public boolean isEditable() {
|
return editable;
|
}
|
|
/**
|
* 设置是否显示工具条
|
* @param editable
|
*/
|
public void setEditable(boolean editable) {
|
this.editable = editable;
|
}
|
|
/**
|
* 得到属性显示定义
|
* @return
|
*/
|
public Attributes getAttributes() {
|
return attributes;
|
}
|
|
/**
|
* 设置属性显示
|
* <br>比较窗口通过attributes的设置获得需要比较及显示的对象属性
|
* @param attributes
|
*/
|
public void setAttributes(Attributes attributes) {
|
this.attributes = attributes;
|
}
|
}
|