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 / featuretype / FeatureAttributeListCellRendererImpl.java @ 46485

History | View | Annotate | Download (3.54 KB)

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

    
3
import java.awt.Component;
4
import javax.swing.DefaultListCellRenderer;
5
import javax.swing.JLabel;
6
import javax.swing.JList;
7
import org.gvsig.fmap.dal.DataManager;
8
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
9
import org.gvsig.fmap.dal.swing.DALSwingLocator;
10
import org.gvsig.fmap.dal.swing.DataSwingManager;
11
import org.gvsig.fmap.dal.swing.featuretype.FeatureAttributeListCellRenderer;
12
import org.gvsig.tools.swing.api.ToolsSwingLocator;
13
import org.gvsig.tools.swing.icontheme.IconTheme;
14
import org.gvsig.tools.util.LabeledValue;
15

    
16
/**
17
 *
18
 * @author jjdelcerro
19
 */
20
public class FeatureAttributeListCellRendererImpl 
21
        extends DefaultListCellRenderer
22
        implements FeatureAttributeListCellRenderer
23
    {
24

    
25
    private final IconTheme iconTheme;
26
    private Integer useLabels;
27
    private final DataSwingManager dalSwingManager;
28

    
29
    public FeatureAttributeListCellRendererImpl() {
30
        this.iconTheme = ToolsSwingLocator.getIconThemeManager().getCurrent();
31
        this.useLabels = null;
32
        this.dalSwingManager = DALSwingLocator.getDataSwingManager();
33
    }
34
    
35
    @Override
36
    public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) {
37
        JLabel label = (JLabel) super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
38
        if( value == null ) {
39
            return label;
40
        }
41
        FeatureAttributeDescriptor attrdesc;
42
        if( value instanceof LabeledValue ) {
43
            attrdesc = ((LabeledValue<FeatureAttributeDescriptor>)value).getValue();
44
        } else {
45
            attrdesc = (FeatureAttributeDescriptor) value;
46
        }   
47
        String theLabel = "";
48
        String iconName = null;
49
        try {
50
            if(attrdesc  != null) {
51
                if(this.useLabels == null) {
52
                    theLabel = dalSwingManager.getAttributeDescriptorLabel(attrdesc);
53
                } else {
54
                    switch (this.useLabels) {
55
                        case DataManager.USE_LABELS_NO:
56
                            theLabel = attrdesc.getName();
57
                            break;
58
                        case DataManager.USE_LABELS_YES:
59
                            if (attrdesc.hasLabel()) {
60
                                theLabel = attrdesc.getLocalizedLabel();
61
                            } else {
62
                                theLabel = attrdesc.getName();
63
                            }
64
                            break;
65
                        case DataManager.USE_LABELS_BOTH:
66
                        default:
67
                            if (attrdesc.hasLabel()) {
68
                                theLabel = String.format("%s [%s]", attrdesc.getLocalizedLabel(), attrdesc.getName());
69
                            } else {
70
                                theLabel = attrdesc.getName();
71
                            }
72
                            break;
73
                    }
74
                }
75
                iconName = attrdesc.getDataType().getIconName();
76
            }
77
            label.setText(theLabel);
78
            if (iconTheme.exists(iconName)) {
79
                label.setIcon(iconTheme.get(iconName));
80
            } else {
81
                label.setIcon(null);
82
            }
83
        } catch (Exception ex) {
84
            label.setText("#ERROR#");
85
        }
86
        return label;
87
    }
88

    
89
    @Override
90
    public void setUseLabels(Integer useLabels) {
91
        this.useLabels = useLabels;
92
    }
93

    
94
    @Override
95
    public Integer getUseLabels() {
96
        return this.useLabels;
97
    }
98
    
99
}