Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.exportto / org.gvsig.exportto.swing / org.gvsig.exportto.swing.impl / src / main / java / org / gvsig / export / swing / impl / panels / SelectGeometryFieldPanel.java @ 44411

History | View | Annotate | Download (5.39 KB)

1
package org.gvsig.export.swing.impl.panels;
2

    
3
import java.awt.event.ItemEvent;
4
import java.awt.event.ItemListener;
5
import java.util.ArrayList;
6
import java.util.Comparator;
7
import java.util.List;
8
import javax.swing.DefaultComboBoxModel;
9
import javax.swing.JComponent;
10
import org.gvsig.export.ExportParameters;
11
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
12
import org.gvsig.tools.ToolsLocator;
13
import org.gvsig.tools.i18n.I18nManager;
14
import org.gvsig.tools.swing.api.ToolsSwingLocator;
15
import org.gvsig.tools.swing.api.ToolsSwingManager;
16
import org.gvsig.export.ExportParametersGeometry;
17
import org.gvsig.export.swing.JExportProcessPanel;
18
import org.gvsig.export.swing.spi.ExportPanel;
19
import org.gvsig.export.swing.spi.ExportPanelValidationException;
20
import org.gvsig.export.swing.spi.ExportPanelsManager;
21

    
22
/**
23
 *
24
 * @author jjdelcerro
25
 */
26
public class SelectGeometryFieldPanel
27
        extends SelectGeometryFieldPanelView
28
        implements ExportPanel {
29

    
30
    private final ExportParametersGeometry parameters;
31
    private final JExportProcessPanel processPanel;
32

    
33
    public SelectGeometryFieldPanel(
34
            JExportProcessPanel processPanel,
35
            ExportParameters parameters
36
    ) {
37
        this.processPanel = processPanel;
38
        this.parameters = (ExportParametersGeometry) parameters;
39

    
40
        this.initComponents();
41
    }
42

    
43
    @Override
44
    public String getIdPanel() {
45
        return ExportPanelsManager.PANEL_SELECT_GEOMETRY_FIELD;
46
    }
47

    
48
    @Override
49
    public String getTitlePanel() {
50
        I18nManager i18nManager = ToolsLocator.getI18nManager();
51
        return i18nManager.getTranslation("_Selection_of_geometry_field");
52
    }
53

    
54
    @Override
55
    public boolean validatePanel() throws ExportPanelValidationException {
56
        return true;
57
    }
58

    
59
    @Override
60
    public void previousPanel() {
61

    
62
    }
63

    
64
    @Override
65
    public void nextPanel() {
66
        this.parameters.setSourceGeometryFieldName(this.getGeometryField());
67
    }
68

    
69
    @Override
70
    public void enterPanel() {
71
        String geometryField = this.parameters.getSourceGeometryFieldName();
72
        if (geometryField != null) {
73
            String defaultGeomName = this.parameters.getSourceFeatureType().getDefaultGeometryAttributeName();
74

    
75
            if (this.parameters.getSourceGeometryFieldName() == null ? defaultGeomName == null : this.parameters.getSourceGeometryFieldName().equals(defaultGeomName)) {
76
                this.rdoUseTheGeometryFieldByDefault.setSelected(true);
77
            } else {
78
                this.rdoUseTheGeometryFieldByDefault.setSelected(true);
79
                String toCheck = this.parameters.getSourceGeometryFieldName();
80
                DefaultComboBoxModel model = (DefaultComboBoxModel) this.cboGeometryField.getModel();
81
                if (model.getIndexOf(toCheck) != -1) {
82
                    this.cboGeometryField.getModel().setSelectedItem(this.parameters.getSourceGeometryFieldName());
83
                }
84
            }
85
        } else {
86
            this.rdoUseNullAsTheValueOfTheGeometry.setSelected(true);
87
        }
88
    }
89

    
90
    @Override
91
    public JComponent asJComponent() {
92
        return this;
93
    }
94

    
95
    private void initComponents() {
96
        this.rdoSelectTheFieldToBeUsedAsGeometry.setEnabled(true);
97
        this.rdoSelectTheFieldToBeUsedAsGeometry.setSelected(false);
98

    
99
        if (this.parameters.getSourceGeometryFieldName() == null) {
100
            this.rdoUseTheGeometryFieldByDefault.setEnabled(false);
101
            this.rdoUseTheGeometryFieldByDefault.setSelected(false);
102
            this.rdoUseNullAsTheValueOfTheGeometry.setSelected(true);
103
        } else {
104
            this.rdoUseTheGeometryFieldByDefault.setEnabled(true);
105
            this.rdoUseTheGeometryFieldByDefault.setSelected(true);
106
            this.rdoUseNullAsTheValueOfTheGeometry.setSelected(false);
107
        }
108
        List<String> items = new ArrayList<>();
109
        for (FeatureAttributeDescriptor descr : this.parameters.getSourceFeatureType()) {
110
            items.add(descr.getName());
111
        }
112
        items.sort(new Comparator<String>() {
113
            @Override
114
            public int compare(String o1, String o2) {
115
                return o1.compareTo(o2);
116
            }
117
        });
118
        DefaultComboBoxModel model = new DefaultComboBoxModel();
119
        for (String item : items) {
120
            model.addElement(item);
121
        }
122
        this.cboGeometryField.setModel(model);
123
        this.cboGeometryField.setEnabled(false);
124
        this.rdoSelectTheFieldToBeUsedAsGeometry.addItemListener(new ItemListener() {
125
            @Override
126
            public void itemStateChanged(ItemEvent e) {
127
                cboGeometryField.setEnabled(rdoSelectTheFieldToBeUsedAsGeometry.isSelected());
128
            }
129
        });
130
        this.translate();
131

    
132
    }
133

    
134
    private void translate() {
135
        ToolsSwingManager i18nc = ToolsSwingLocator.getToolsSwingManager();
136
        i18nc.translate(this.lblSelectOfTheGeometryField);
137
        i18nc.translate(this.rdoSelectTheFieldToBeUsedAsGeometry);
138
        i18nc.translate(this.rdoUseNullAsTheValueOfTheGeometry);
139
        i18nc.translate(this.rdoUseTheGeometryFieldByDefault);
140
    }
141

    
142
    public String getGeometryField() {
143
        if (this.rdoUseNullAsTheValueOfTheGeometry.isSelected()) {
144
            return null;
145
        }
146
        if (this.rdoUseTheGeometryFieldByDefault.isSelected()) {
147
            return this.parameters.getSourceFeatureType().getDefaultGeometryAttribute().getName();
148
        }
149
        return (String) this.cboGeometryField.getSelectedItem();
150
    }
151
}