Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.fmap.dal / org.gvsig.fmap.dal.swing / org.gvsig.fmap.dal.swing.impl / src / main / java / org / gvsig / fmap / dal / swing / impl / searchpanel / AdvancedAttributeSelectionTreeCellRenderer.java @ 44684

History | View | Annotate | Download (2.89 KB)

1
package org.gvsig.fmap.dal.swing.impl.searchpanel;
2

    
3
import java.awt.Component;
4
import java.awt.FlowLayout;
5
import javax.swing.Icon;
6
import javax.swing.JLabel;
7
import javax.swing.JPanel;
8
import javax.swing.JTree;
9
import javax.swing.border.EmptyBorder;
10
import javax.swing.tree.DefaultTreeCellRenderer;
11
import javax.swing.tree.TreeCellRenderer;
12
import org.apache.commons.lang3.StringUtils;
13
import org.gvsig.fmap.dal.swing.impl.searchpanel.AdvancedAttributeSelectionTreeModel.Node;
14
import org.gvsig.tools.swing.api.ToolsSwingLocator;
15
import org.gvsig.tools.swing.icontheme.IconTheme;
16

    
17
/**
18
 *
19
 * @author jjdelcerro
20
 */
21
public class AdvancedAttributeSelectionTreeCellRenderer 
22
//        extends DefaultTreeCellRenderer 
23
        implements TreeCellRenderer
24
    {
25
    
26
    private final Icon iconTable;
27
    private final Icon iconColumn;
28
    private final Icon iconForeingKey;
29
    private final JPanel panel;
30
    private final JLabel icon;
31
    private final DefaultTreeCellRenderer label;
32
    private final IconTheme iconTheme;
33
    
34
    public AdvancedAttributeSelectionTreeCellRenderer() {
35
        this.iconTheme = ToolsSwingLocator.getIconThemeManager().getCurrent();
36
        this.iconTable = iconTheme.get("featurestore-table");
37
        this.iconColumn = iconTheme.get("featurestore-column");
38
        this.iconForeingKey = iconTheme.get("featurestore-foreing-key");
39
        
40
        this.panel = new JPanel();
41
        this.panel.setLayout(new FlowLayout(FlowLayout.LEADING, 3, 2));
42
        this.icon = new JLabel();
43
        this.label = new DefaultTreeCellRenderer();
44
        this.panel.add(this.icon);
45
        this.panel.add(this.label);
46
        this.panel.setBorder(new EmptyBorder(0, 0, 0, 0));
47
        this.panel.setOpaque(false);
48
        
49
    }
50
    
51
    @Override
52
    public Component getTreeCellRendererComponent(JTree tree, Object value, boolean sel, boolean expanded, boolean leaf, int row, boolean hasFocus) {
53
        JLabel theLabel = (JLabel) this.label.getTreeCellRendererComponent(tree, value, sel, expanded, leaf, row, hasFocus); 
54
        if( !(value instanceof Node) ) {
55
            return theLabel;
56
        }
57
        Node node = (Node) value;
58
        Icon iconElement = node.isRoot()? this.iconTable: leaf? this.iconColumn: this.iconForeingKey;
59
        Icon iconDataType = null;
60
        try {
61
            if( !node.isRoot() ) {
62
                String iconName = node.getValue().getDataType().getIconName();
63
                iconDataType = this.iconTheme.get(iconName);
64
            }
65
        } catch(Exception ex) {
66
            
67
        }
68
        String s = node.getLabel();
69
        if( StringUtils.isBlank(s) ) {
70
          s = "???";
71
        }
72
        this.label.setText(s);
73
        try {
74
          this.label.setIcon(iconDataType);
75
          this.icon.setIcon(iconElement);
76
          this.label.invalidate();
77
        } catch(Throwable th) {
78
          th.getMessage(); // To allow set a break point
79
        }
80
        return this.panel;
81
    }
82
    
83
    
84
}