View Javadoc

1   /*
2    *  XNap Commons
3    *
4    *  Copyright (C) 2005  Felix Berger
5    *  Copyright (C) 2005  Steffen Pingel
6    *
7    *  This library is free software; you can redistribute it and/or
8    *  modify it under the terms of the GNU Lesser General Public
9    *  License as published by the Free Software Foundation; either
10   *  version 2.1 of the License, or (at your option) any later version.
11   *
12   *  This library is distributed in the hope that it will be useful,
13   *  but WITHOUT ANY WARRANTY; without even the implied warranty of
14   *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
15   *  Lesser General Public License for more details.
16   *
17   *  You should have received a copy of the GNU Lesser General Public
18   *  License along with this library; if not, write to the Free Software
19   *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
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  }