View Javadoc

1   /*
2    * @(#)$Id: NodeRenderer.java 719 2009-07-30 11:41:39Z kurmannu $
3    *
4    * Author   : Ueli Kurmann, igesture@uelikurmann.ch
5    *                                   
6    *                                   
7    * Purpose  : 
8    *
9    * -----------------------------------------------------------------------
10   *
11   * Revision Information:
12   *
13   * Date       Who     Reason
14   *
15   * 23.03.2008 ukurmann  Initial Release
16   *
17   * -----------------------------------------------------------------------
18   *
19   * Copyright 1999-2009 ETH Zurich. All Rights Reserved.
20   *
21   * This software is the proprietary information of ETH Zurich.
22   * Use is subject to license terms.
23   * 
24   */
25  
26  package org.ximtec.igesture.tool.explorer;
27  
28  import java.awt.Component;
29  import java.util.Map;
30  
31  import javax.swing.Icon;
32  import javax.swing.JTree;
33  import javax.swing.tree.DefaultTreeCellRenderer;
34  
35  import org.ximtec.igesture.tool.explorer.core.NodeInfo;
36  
37  /**
38   * 
39   * @author UeliKurmann
40   * @version 1.0
41   * @since igesture
42   */
43  public class NodeRenderer extends DefaultTreeCellRenderer {
44  
45    /**
46     * A Map of NodeInfo. Node Info contains information about a specific node.
47     */
48    private Map<Class<?>, NodeInfo> nodeInfos;
49  
50    public NodeRenderer(Map<Class<?>, NodeInfo> nodeInfos) {
51      this.nodeInfos = nodeInfos;
52    }
53  
54    @Override
55    public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf,
56        int row, boolean hasFocus) {
57  
58      if (nodeInfos.get(value.getClass()) != null) {
59  
60        NodeInfo nodeInfo = nodeInfos.get(value.getClass());
61  
62        setToolTipText(nodeInfo.getTooltip());
63        
64        Icon icon;
65        
66        if(expanded){
67          icon = nodeInfo.getExpandedIcon();
68        }else{
69          icon = nodeInfo.getIcon();
70        }
71        
72        if(expanded && icon == null){
73          icon = nodeInfo.getIcon();
74        }
75        
76        if (icon != null) {
77          setIcon(icon);
78        }
79  
80        String name;
81        if ((name = nodeInfo.getName(value)) != null) {
82          setText(name);
83        }
84      }
85  
86      return this;
87    }
88  }