create changelog entry
[debian/openrocket] / core / src / net / sf / openrocket / gui / main / componenttree / ComponentTreeRenderer.java
1 package net.sf.openrocket.gui.main.componenttree;
2
3
4
5 import java.awt.Component;
6
7 import javax.swing.JTree;
8 import javax.swing.tree.DefaultTreeCellRenderer;
9
10 import net.sf.openrocket.gui.main.ComponentIcons;
11 import net.sf.openrocket.rocketcomponent.RocketComponent;
12 import net.sf.openrocket.unit.UnitGroup;
13 import net.sf.openrocket.util.TextUtil;
14
15 public class ComponentTreeRenderer extends DefaultTreeCellRenderer {
16         
17         @Override
18         public Component getTreeCellRendererComponent(
19                         JTree tree,
20                         Object value,
21                         boolean sel,
22                         boolean expanded,
23                         boolean leaf,
24                         int row,
25                         boolean hasFocus1) {
26                 
27                 super.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus1);
28                 
29                 // Set icon
30                 setIcon(ComponentIcons.getSmallIcon(value.getClass()));
31                 
32                 // Set tooltip
33                 RocketComponent c = (RocketComponent) value;
34                 this.setToolTipText(getToolTip(c));
35                 
36                 return this;
37         }
38         
39         
40         private String getToolTip(RocketComponent c) {
41                 StringBuilder sb = new StringBuilder();
42                 sb.append("<html>");
43                 
44                 sb.append("<b>").append(c.getName()).append("</b>");
45                 if (c.isMassive()) {
46                         sb.append(" (").append(UnitGroup.UNITS_MASS.toStringUnit(c.getMass())).append(")");
47                 }
48                 
49                 String comment = c.getComment().trim();
50                 if (comment.length() > 0) {
51                         comment = TextUtil.htmlEncode(comment);
52                         comment = comment.replace("\n", "<br>");
53                         sb.append("<br>").append(comment);
54                 }
55                 
56                 return sb.toString();
57         }
58         
59 }