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; } }