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;
}
/**
* 得到树节点比较器
*
*
默认使用DefaultTreeNodeObjectComparer作为节点比较器
* @return
*/
public TreeNodeObjectComparer getComparer() {
return comparer;
}
/**
* 设置树节点比较器
*
将比较器设置为null,不进行节点属性信息的比较
*
默认使用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;
}
/**
* 设置属性显示
*
比较窗口通过attributes的设置获得需要比较及显示的对象属性
* @param attributes
*/
public void setAttributes(Attributes attributes) {
this.attributes = attributes;
}
}