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 @ 45739

History | View | Annotate | Download (2.93 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.featuretype.FeatureAttributeListCellRenderer;
10
import org.gvsig.tools.swing.api.ToolsSwingLocator;
11
import org.gvsig.tools.swing.icontheme.IconTheme;
12
import org.gvsig.tools.util.LabeledValue;
13

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

    
23
    private final IconTheme iconTheme;
24
    private int useLabels;
25

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

    
78
    @Override
79
    public void setUseLabeld(int useLabels) {
80
        this.useLabels = useLabels;
81
    }
82

    
83
    @Override
84
    public int getUseLabels() {
85
        return this.useLabels;
86
    }
87
    
88
}