Revision 44096

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.api/src/main/java/org/gvsig/fmap/dal/swing/DataSwingManager.java
24 24

  
25 25
import javax.swing.ComboBoxModel;
26 26
import javax.swing.JButton;
27
import javax.swing.JComboBox;
27 28
import javax.swing.JTextField;
28 29
import org.cresques.cts.IProjection;
29 30
import org.gvsig.featureform.swing.CreateJFeatureFormException;
......
33 34
import org.gvsig.fmap.dal.feature.FeatureQuery;
34 35
import org.gvsig.fmap.dal.feature.FeatureStore;
35 36
import org.gvsig.fmap.dal.feature.paging.FeaturePagingHelper;
37
import org.gvsig.fmap.dal.swing.featuretype.AttributeDescriptorPickerController;
36 38
import org.gvsig.fmap.dal.swing.jdbc.JDBCConnectionPanel;
37 39
import org.gvsig.fmap.dal.swing.queryfilter.QueryFilterExpresion;
38 40
import org.gvsig.tools.dynobject.DynStruct;
......
69 71
            JTextField txtProjection,
70 72
            JButton btnSelectProjection
71 73
        );
72
    
74
 
75
    public AttributeDescriptorPickerController createAttributeDescriptorPickerController(JComboBox combo);
73 76
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.api/src/main/java/org/gvsig/fmap/dal/swing/featuretype/FeatureTypePanel.java
1
package org.gvsig.fmap.dal.swing.featuretype;
2

  
3
import org.gvsig.fmap.dal.feature.EditableFeatureType;
4
import org.gvsig.fmap.dal.feature.FeatureType;
5
import org.gvsig.tools.swing.api.Component;
6

  
7
/**
8
 *
9
 * @author jjdelcerro
10
 */
11
public interface FeatureTypePanel extends Component {
12
    
13
    public EditableFeatureType fetch(EditableFeatureType type);
14
    
15
    public void put(FeatureType type);
16
    
17
    public void setEditable(boolean editable);
18

  
19
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.api/src/main/java/org/gvsig/fmap/dal/swing/featuretype/FeatureTypeAttributePanel.java
1
package org.gvsig.fmap.dal.swing.featuretype;
2

  
3
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
4
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
5
import org.gvsig.tools.swing.api.Component;
6

  
7
/**
8
 *
9
 * @author jjdelcerro
10
 */
11
public interface FeatureTypeAttributePanel extends Component {
12
    
13
    public EditableFeatureAttributeDescriptor fetch(EditableFeatureAttributeDescriptor descriptor);
14
    
15
    public void put(FeatureAttributeDescriptor descriptor);
16
    
17
    public void setEditable(boolean editable);
18

  
19
}
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.api/src/main/java/org/gvsig/fmap/dal/swing/featuretype/AttributeDescriptorPickerController.java
1
package org.gvsig.fmap.dal.swing.featuretype;
2

  
3
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
4
import org.gvsig.fmap.dal.feature.FeatureType;
5
import org.gvsig.tools.swing.api.pickercontroller.PickerController;
6

  
7
/**
8
 *
9
 * @author jjdelcerro
10
 */
11
public interface AttributeDescriptorPickerController extends PickerController<FeatureAttributeDescriptor> {
12
    
13
    public void setFeatureType(FeatureType featureType);
14
    
15
    public String getName();
16

  
17
    public void clean();
18

  
19
    public void set(String name);
20
}
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/DefaultDataSwingManager.java
24 24

  
25 25
import javax.swing.ComboBoxModel;
26 26
import javax.swing.JButton;
27
import javax.swing.JComboBox;
27 28
import javax.swing.JTextField;
28 29
import org.gvsig.featureform.swing.CreateJFeatureFormException;
29 30
import org.gvsig.featureform.swing.JFeatureForm;
......
42 43
import org.gvsig.fmap.dal.swing.DataSwingManager;
43 44
import org.gvsig.fmap.dal.swing.FeatureTableModel;
44 45
import org.gvsig.fmap.dal.swing.JFeatureTable;
46
import org.gvsig.fmap.dal.swing.featuretype.AttributeDescriptorPickerController;
45 47
import org.gvsig.fmap.dal.swing.impl.featuretable.FeatureTablePanel;
46 48
import org.gvsig.fmap.dal.swing.impl.featuretable.table.DefaultFeatureTableModel;
47 49
import org.gvsig.fmap.dal.swing.impl.featuretable.table.EmptyFeatureTableModel;
50
import org.gvsig.fmap.dal.swing.impl.featuretype.DefaultAttributeDescriptorPickerController;
48 51
import org.gvsig.fmap.dal.swing.impl.jdbc.DefaultJDBCConnectionPanel;
49 52
import org.gvsig.fmap.dal.swing.impl.queryfilter.DefaultQueryFilterExpresion;
50 53
import org.gvsig.fmap.dal.swing.jdbc.JDBCConnectionPanel;
......
145 148
        ProjectionPickerController picker = new ProjectionPickerController(txtProjection, btnSelectProjection);
146 149
        return picker;
147 150
    }
151

  
152
    public AttributeDescriptorPickerController createAttributeDescriptorPickerController(JComboBox combo) {
153
        AttributeDescriptorPickerController controller = new DefaultAttributeDescriptorPickerController(combo);
154
        return controller;
155
    }
148 156
}
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/FeatureTypePanel.java
1
package org.gvsig.fmap.dal.swing.impl.featuretype;
2

  
3
import org.gvsig.fmap.dal.feature.EditableFeatureType;
4
import org.gvsig.fmap.dal.feature.FeatureType;
5
import org.gvsig.tools.swing.api.Component;
6

  
7
/**
8
 *
9
 * @author jjdelcerro
10
 */
11
public interface FeatureTypePanel extends Component {
12
    
13
    public EditableFeatureType fetch(EditableFeatureType type);
14
    
15
    public void put(FeatureType type);
16
    
17
    public void setEditable(boolean editable);
18

  
19
}
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/FeatureTypeAttributePanel.java
1
package org.gvsig.fmap.dal.swing.impl.featuretype;
2

  
3
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
4
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
5
import org.gvsig.tools.swing.api.Component;
6

  
7
/**
8
 *
9
 * @author jjdelcerro
10
 */
11
public interface FeatureTypeAttributePanel extends Component {
12
    
13
    public EditableFeatureAttributeDescriptor fetch(EditableFeatureAttributeDescriptor descriptor);
14
    
15
    public void put(FeatureAttributeDescriptor descriptor);
16
    
17
    public void setEditable(boolean editable);
18

  
19
}
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/DefaultFeatureTypePanel.java
1 1
package org.gvsig.fmap.dal.swing.impl.featuretype;
2 2

  
3
import org.gvsig.fmap.dal.swing.featuretype.FeatureTypePanel;
3 4
import java.awt.BorderLayout;
4 5
import java.awt.Dimension;
5 6
import java.awt.event.ActionEvent;
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/DefaultFeatureTypeAttributePanel.java
1 1
package org.gvsig.fmap.dal.swing.impl.featuretype;
2 2

  
3
import org.gvsig.fmap.dal.swing.featuretype.FeatureTypeAttributePanel;
3 4
import com.vividsolutions.jts.operation.distance.GeometryLocation;
4 5
import java.awt.event.ItemEvent;
5 6
import java.awt.event.ItemListener;
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
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
}
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/test/java/org/gvsig/fmap/dal/swing/impl/featuretype/TestEditable.java
1 1
package org.gvsig.fmap.dal.swing.impl.featuretype;
2 2

  
3
import org.gvsig.fmap.dal.swing.featuretype.FeatureTypePanel;
3 4
import java.io.File;
4 5
import java.net.URL;
5 6
import org.gvsig.fmap.dal.DALLocator;
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/test/java/org/gvsig/fmap/dal/swing/impl/featuretype/TestNotEditable.java
1 1
package org.gvsig.fmap.dal.swing.impl.featuretype;
2 2

  
3
import org.gvsig.fmap.dal.swing.featuretype.FeatureTypePanel;
3 4
import java.io.File;
4 5
import java.net.URL;
5 6
import org.gvsig.fmap.dal.DALLocator;

Also available in: Unified diff