1 56 57 package org.objectstyle.cayenne.dataview.dvmodeler; 58 59 import java.util.*; 60 61 import javax.swing.tree.*; 62 import javax.swing.*; 63 import java.awt.*; 64 65 71 72 public class DVTreeCellRenderer extends DefaultTreeCellRenderer { 73 public static final Icon dataMapNodeIcon = new ImageIcon( 74 DVTreeCellRenderer.class.getResource("images/datamap-node.gif")); 75 public static final Icon objEntityNodeIcon = new ImageIcon( 76 DVTreeCellRenderer.class.getResource("images/objentity-node.gif")); 77 public static final Icon dataViewNodeIcon = new ImageIcon( 78 DVTreeCellRenderer.class.getResource("images/dataview-node.gif")); 79 public static final Icon objEntityViewNodeIcon = new ImageIcon( 80 DVTreeCellRenderer.class.getResource("images/objentityview-node.gif")); 81 public static final Icon objEntityViewFieldNodeIcon = new ImageIcon( 82 DVTreeCellRenderer.class.getResource("images/objentityviewfield-node.gif")); 83 84 private boolean sel; 85 86 public Component getTreeCellRendererComponent( 87 JTree tree, 88 Object value, 89 boolean sel, 90 boolean expanded, 91 boolean leaf, 92 int row, 93 boolean hasFocus) { 94 95 this.sel = sel; 96 super.getTreeCellRendererComponent( 97 tree, value, sel, 98 expanded, leaf, row, 99 hasFocus); 100 105 106 if (value instanceof DataMap) { 107 setForegroundColor(Color.BLACK); 108 setIcon(dataMapNodeIcon); 109 } else if (value instanceof ObjEntity) { 110 setForegroundColor(Color.BLACK); 111 setIcon(objEntityNodeIcon); 112 } else if (value instanceof DataView) { 113 setForegroundColor(Color.BLACK); 114 setIcon(dataViewNodeIcon); 115 } else if (value instanceof ObjEntityView) { 116 setForegroundColor(Color.BLACK); 117 ObjEntityView view = (ObjEntityView)value; 118 java.util.List objEntityViews = view.getObjEntityViewFields(); 119 for (Iterator j = objEntityViews.iterator(); j.hasNext();){ 120 ObjEntityViewField field = (ObjEntityViewField)j.next(); 121 if (field.getCalcType().equals("nocalc")){ 122 if (field.getObjAttribute() == null){ 123 setForegroundColor(Color.RED); 124 break; 125 } 126 } else if (field.getCalcType().equals("lookup")){ 127 if ((field.getObjRelationship() == null) 128 || (field.getLookup().getLookupObjEntityView() == null) 129 || (field.getLookup().getLookupField() == null)){ 130 setForegroundColor(Color.RED); 131 break; 132 133 } 134 } 135 } 136 setIcon(objEntityViewNodeIcon); 137 138 } else if (value instanceof ObjEntityViewField) { 139 ObjEntityViewField field = (ObjEntityViewField)value; 140 if (field.getCalcType().equals("nocalc")){ 141 if (field.getObjAttribute() == null){ 142 setForegroundColor(Color.RED); 143 } else { 144 setForegroundColor(Color.BLACK); 145 } 146 } else if (field.getCalcType().equals("lookup")){ 147 if ((field.getObjRelationship() == null) 148 || (field.getLookup().getLookupObjEntityView() == null) 149 || (field.getLookup().getLookupField() == null)){ 150 setForegroundColor(Color.RED); 151 } else { 152 setForegroundColor(Color.BLACK); 153 } 154 } 155 156 setIcon(objEntityViewFieldNodeIcon); 157 } else { 158 setIcon(null); 159 setForegroundColor(Color.BLACK); 160 } 161 return this; 162 } 163 164 private void setForegroundColor(Color color){ 165 if(sel){ 166 if (color == Color.BLACK){ 167 this.setTextSelectionColor(Color.WHITE); 168 setForeground(getTextSelectionColor()); 169 } else { 170 this.setTextSelectionColor(Color.PINK); 171 setForeground(getTextSelectionColor()); 172 } 173 } else { 174 this.setTextNonSelectionColor(color); 175 setForeground(getTextNonSelectionColor()); 176 } 177 } 178 } | Popular Tags |