1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.xnap.commons.gui.tree;
22
23 import java.awt.Component;
24 import java.io.File;
25 import javax.swing.Icon;
26 import javax.swing.JTree;
27 import javax.swing.tree.DefaultTreeCellRenderer;
28 import org.xnap.commons.gui.util.IconHelper;
29
30 /***
31 * Renders tree nodes of type {@link File} and {@link String}.
32 *
33 * Files are displayed as green folders, Strings as yellow folders.
34 */
35 public class FileCellRenderer extends DefaultTreeCellRenderer
36 {
37
38 public static final Icon[] folders = {
39 IconHelper.getMenuIcon("folder.png"),
40 IconHelper.getMenuIcon("folder_open.png"),
41 IconHelper.getMenuIcon("folder_yellow.png"),
42 IconHelper.getMenuIcon("folder_yellow_open.png")
43 };
44
45 public FileCellRenderer()
46 {
47 }
48
49 public Component getTreeCellRendererComponent(JTree tree, Object node,
50 boolean sel, boolean expanded, boolean leaf, int row,
51 boolean hasFocus)
52 {
53 super.getTreeCellRendererComponent(tree, node, sel, expanded, leaf,
54 row, hasFocus);
55 if (node instanceof File) {
56 if (expanded) {
57 setIcon(folders[1]);
58 }
59 else {
60 setIcon(folders[0]);
61 }
62 }
63 else if (node instanceof String) {
64 if (expanded) {
65 setIcon(folders[3]);
66 }
67 else {
68 setIcon(folders[2]);
69 }
70 }
71 return this;
72 }
73 }