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 / DefaultAttributeDescriptorPickerController.java @ 44096

History | View | Annotate | Download (3.52 KB)

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

    
3
import org.gvsig.fmap.dal.swing.featuretype.AttributeDescriptorPickerController;
4
import java.awt.event.ItemEvent;
5
import java.awt.event.ItemListener;
6
import java.util.ArrayList;
7
import java.util.Comparator;
8
import java.util.List;
9
import javax.swing.DefaultComboBoxModel;
10
import javax.swing.JComboBox;
11
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
12
import org.gvsig.fmap.dal.feature.FeatureType;
13
import org.gvsig.tools.swing.api.ListElement;
14
import org.gvsig.tools.swing.api.pickercontroller.AbstractPickerController;
15

    
16
/**
17
 *
18
 * @author jjdelcerro
19
 */
20
public class DefaultAttributeDescriptorPickerController         
21
        extends AbstractPickerController<FeatureAttributeDescriptor> 
22
        implements AttributeDescriptorPickerController
23
    {
24

    
25
    private final JComboBox combo;
26
    private FeatureType featureType;
27

    
28
    public DefaultAttributeDescriptorPickerController(JComboBox combo) {
29
        this.combo = combo; 
30
        this.combo.setEditable(false);
31
        this.combo.addItemListener(new ItemListener() {
32
            @Override
33
            public void itemStateChanged(ItemEvent e) {
34
                fireChangeEvent();
35
            }
36
        });
37
    }
38
    
39
    public void setFeatureType(FeatureType featureType) {
40
        this.featureType = featureType;
41
        List<FeatureAttributeDescriptor> attributes = new ArrayList<>();
42
        for (FeatureAttributeDescriptor descriptor : featureType) {
43
            attributes.add(descriptor);
44
        }
45
        attributes.sort(new Comparator<FeatureAttributeDescriptor>() {
46
            @Override
47
            public int compare(FeatureAttributeDescriptor o1, FeatureAttributeDescriptor o2) {
48
                return o1.getName().compareToIgnoreCase(o2.getName());
49
            }
50
        });
51
        DefaultComboBoxModel model = new DefaultComboBoxModel();
52
        for (FeatureAttributeDescriptor descriptor : attributes) {
53
            model.addElement(new ListElement<>(descriptor.getName(), descriptor));
54
        }
55
        this.combo.setModel(model);
56
        if( this.featureType.size()>0 ) {
57
            this.combo.setSelectedIndex(0);
58
        } else {
59
            this.combo.setSelectedIndex(-1);
60
        }
61
    }
62
    
63
    @Override
64
    public FeatureAttributeDescriptor get() {
65
        FeatureAttributeDescriptor descriptor = (FeatureAttributeDescriptor) ListElement.getSelected(this.combo);
66
        return descriptor;
67
    }
68

    
69
    @Override
70
    public void set(FeatureAttributeDescriptor descriptor) {
71
        ListElement.setSelected(this.combo, descriptor);
72
    }
73

    
74
    @Override
75
    public void set(String name) {
76
        FeatureAttributeDescriptor descriptor = this.featureType.getAttributeDescriptor(name);
77
        if( descriptor == null ) {
78
            // throw new IllegalArgumentException("The field '"+name+" don't exists.");
79
            this.combo.setSelectedIndex(-1);
80
            return;
81
        }
82
        this.set(descriptor);
83
    }
84

    
85
    @Override
86
    public void coerceAndSet(Object descriptor) {
87
        this.set((FeatureAttributeDescriptor) descriptor);
88
    }
89

    
90
    @Override
91
    public void setEnabled(boolean enabled) {
92
        this.combo.setEnabled(enabled);
93
    }
94

    
95
    @Override
96
    public boolean isEnabled() {
97
        return this.combo.isEnabled();
98
    }
99

    
100
    @Override
101
    public String getName() {
102
        FeatureAttributeDescriptor descriptor = this.get();
103
        if( descriptor==null ) {
104
            return null;
105
        }
106
        return descriptor.getName();
107
    }
108

    
109
    @Override
110
    public void clean() {
111
        this.combo.setSelectedIndex(-1);
112
    }
113

    
114
    
115
}