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

History | View | Annotate | Download (3.62 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
            String nameDescription = descriptor.getName() + " [" + descriptor.getDataTypeName() + "]";
54
            model.addElement(new ListElement<>(nameDescription, descriptor));
55
        }
56
        this.combo.setModel(model);
57
        if( this.featureType.size()>0 ) {
58
            this.combo.setSelectedIndex(0);
59
        } else {
60
            this.combo.setSelectedIndex(-1);
61
        }
62
    }
63
    
64
    @Override
65
    public FeatureAttributeDescriptor get() {
66
        FeatureAttributeDescriptor descriptor = (FeatureAttributeDescriptor) ListElement.getSelected(this.combo);
67
        return descriptor;
68
    }
69

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

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

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

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

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

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

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

    
115
    
116
}