1 package com.billkuker.rocketry.motorsim.visual.workbench;
4 import java.awt.Component;
6 import javax.swing.JTree;
7 import javax.swing.tree.DefaultMutableTreeNode;
8 import javax.swing.tree.DefaultTreeCellRenderer;
10 import com.billkuker.rocketry.motorsim.Motor;
11 import com.billkuker.rocketry.motorsim.Validating;
12 import com.billkuker.rocketry.motorsim.Validating.ValidationException;
13 import com.billkuker.rocketry.motorsim.visual.workbench.WorkbenchTreeModel.FuelNode;
15 public class WorkbenchTreeCellRenderer extends DefaultTreeCellRenderer {
16 private static final long serialVersionUID = 1L;
19 public Component getTreeCellRendererComponent(JTree tree, final Object value,
20 boolean sel, boolean expanded, boolean leaf, int row,
24 setTextNonSelectionColor(Color.black);
25 setTextSelectionColor(Color.white);
28 if (value instanceof DefaultMutableTreeNode) {
29 part = ((DefaultMutableTreeNode) value).getUserObject();
32 if ( part instanceof Validating ){
34 ((Validating)part).validate();
35 } catch (ValidationException e) {
36 setTextSelectionColor(Color.RED);
37 setTextNonSelectionColor(Color.RED);
38 setToolTipText(e.getMessage());
43 super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf,
46 if (part instanceof Motor) {
47 setText(((Motor) part).getName());
48 } else if ( value instanceof FuelNode ){
49 setText(((FuelNode)value).getFuel().getName());
50 } else if ( part instanceof String ) {
51 setText((String)part);
52 } else if ( part == null ) {
55 setText(part.getClass().getSimpleName());