package com.vci.client.uif.engine.client.compare.dialog.renderer;
|
|
import java.awt.Color;
|
import java.awt.Component;
|
import java.awt.Font;
|
|
import javax.swing.JTree;
|
import javax.swing.tree.DefaultMutableTreeNode;
|
import javax.swing.tree.DefaultTreeCellRenderer;
|
|
import com.vci.client.uif.engine.client.compare.dialog.treenode.TreeNodeObject;
|
import com.vci.client.uif.engine.client.compare.enumeration.CompareState;
|
|
/**
|
* 版本比较树单元格渲染器
|
* @author VCI-STGK006
|
*
|
*/
|
public class CompareTreeCellRenderer extends DefaultTreeCellRenderer {
|
private static final long serialVersionUID = 8393197719527584042L;
|
|
/**
|
* 构造器
|
*/
|
public CompareTreeCellRenderer() {
|
super();
|
}
|
|
@Override
|
public Component getTreeCellRendererComponent(JTree tree, Object value,
|
boolean sel, boolean expanded, boolean leaf, int row,
|
boolean hasFocus) {
|
//需要在调用父方法前重新设置字体颜色
|
try {
|
DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
|
Object userObject = node.getUserObject();
|
if(userObject instanceof TreeNodeObject) {
|
TreeNodeObject dtn = (TreeNodeObject) userObject;
|
if(dtn.isRoot()) {
|
//根节点
|
this.setTextNonSelectionColor(Color.BLACK);
|
this.setTextSelectionColor(Color.BLACK);
|
} else if(dtn.getCompareState() == CompareState.SAME) {
|
//节点信息一致
|
this.setTextNonSelectionColor(Color.black);
|
this.setTextSelectionColor(Color.black);
|
} else if(dtn.getCompareState() == CompareState.ISNULL) {
|
//虚节点
|
this.setTextNonSelectionColor(Color.LIGHT_GRAY);
|
this.setTextSelectionColor(Color.LIGHT_GRAY);
|
} else if(dtn.getCompareState() == CompareState.DIFFERENT) {
|
//信息不一致,包括节点和关系信息不一致
|
this.setTextNonSelectionColor(Color.RED);
|
this.setTextSelectionColor(Color.RED);
|
} else if(dtn.getCompareState() == CompareState.DIFFERENT_NORELATION) {
|
//节点存在但是与上级没有关系
|
this.setTextNonSelectionColor(Color.BLUE);
|
this.setTextSelectionColor(Color.BLUE);
|
} else if(dtn.getCompareState() == CompareState.DIFFERENT_INFO) {
|
//属性信息不一致
|
this.setTextNonSelectionColor(Color.RED);
|
this.setTextSelectionColor(Color.RED);
|
} else {
|
//按正常情况处理
|
this.setTextNonSelectionColor(Color.BLACK);
|
this.setTextSelectionColor(Color.BLACK);
|
}
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
Component c = super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf,
|
row, hasFocus);
|
//需要在设置父方法后重新设置图标样式
|
try {
|
DefaultMutableTreeNode node = (DefaultMutableTreeNode) value;
|
Object userObject = node.getUserObject();
|
if(userObject instanceof TreeNodeObject) {
|
TreeNodeObject dtn = (TreeNodeObject) userObject;
|
if(dtn.isRoot()) {
|
//根节点
|
setIcon(CompareTreeNodeIcons.getInstance().ROOT);
|
} else if(dtn.getCompareState() == CompareState.SAME) {
|
//节点信息一致
|
if(leaf) {
|
setIcon(CompareTreeNodeIcons.getInstance().COMPARE_SAME_ISLEAF);
|
} else if(expanded) {
|
setIcon(CompareTreeNodeIcons.getInstance().COMPARE_SAME_FOLDER_EXPANDED);
|
} else {
|
setIcon(CompareTreeNodeIcons.getInstance().COMPARE_SAME_FOLDER_COLLAPSED);
|
}
|
} else if(dtn.getCompareState() == CompareState.ISNULL) {
|
//虚节点
|
if(leaf) {
|
setIcon(CompareTreeNodeIcons.getInstance().COMPARE_ISNULL_ISLEAF);
|
} else if(expanded) {
|
setIcon(CompareTreeNodeIcons.getInstance().COMPARE_ISNULL_FOLDER_EXPANDED);
|
} else {
|
setIcon(CompareTreeNodeIcons.getInstance().COMPARE_ISNULL_FOLDER_COLLAPSED);
|
}
|
} else if(dtn.getCompareState() == CompareState.DIFFERENT) {
|
//信息不一致,包括节点和关系信息不一致
|
if(leaf) {
|
setIcon(CompareTreeNodeIcons.getInstance().COMPARE_DIFFERENT_ISLEAF);
|
} else if(expanded) {
|
setIcon(CompareTreeNodeIcons.getInstance().COMPARE_DIFFERENT_FOLDER_EXPANDED);
|
} else {
|
setIcon(CompareTreeNodeIcons.getInstance().COMPARE_DIFFERENT_FOLDER_COLLAPSED);
|
}
|
} else if(dtn.getCompareState() == CompareState.DIFFERENT_NORELATION) {
|
//节点存在但是与上级没有关系
|
if(leaf) {
|
setIcon(CompareTreeNodeIcons.getInstance().COMPARE_DIFFERENT_NORELATION_ISLEAF);
|
} else if(expanded) {
|
setIcon(CompareTreeNodeIcons.getInstance().COMPARE_DIFFERENT_NORELATION_FOLDER_EXPANDED);
|
} else {
|
setIcon(CompareTreeNodeIcons.getInstance().COMPARE_DIFFERENT_NORELATION_FOLDER_COLLAPSED);
|
}
|
} else if(dtn.getCompareState() == CompareState.DIFFERENT_INFO) {
|
//属性信息不一致
|
if(leaf) {
|
setIcon(CompareTreeNodeIcons.getInstance().COMPARE_DIFFERENT_INFO_ISLEAF);
|
} else if(expanded) {
|
setIcon(CompareTreeNodeIcons.getInstance().COMPARE_DIFFERENT_INFO_FOLDER_EXPANDED);
|
} else {
|
setIcon(CompareTreeNodeIcons.getInstance().COMPARE_DIFFERENT_INFO_FOLDER_COLLAPSED);
|
}
|
} else {
|
//按正常情况处理
|
if(leaf) {
|
setIcon(CompareTreeNodeIcons.getInstance().COMPARE_SAME_ISLEAF);
|
} else if(expanded) {
|
setIcon(CompareTreeNodeIcons.getInstance().COMPARE_SAME_FOLDER_EXPANDED);
|
} else {
|
setIcon(CompareTreeNodeIcons.getInstance().COMPARE_SAME_FOLDER_COLLAPSED);
|
}
|
}
|
}
|
} catch (Exception e) {
|
e.printStackTrace();
|
}
|
return c;
|
}
|
}
|