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

History | View | Annotate | Download (5.39 KB)

1 43925 jjdelcerro
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 44386 omartinez
public class SelectGeometryFieldPanel
27 43925 jjdelcerro
        extends SelectGeometryFieldPanelView
28 44386 omartinez
        implements ExportPanel {
29
30 43925 jjdelcerro
    private final ExportParametersGeometry parameters;
31
    private final JExportProcessPanel processPanel;
32 44386 omartinez
33 43925 jjdelcerro
    public SelectGeometryFieldPanel(
34
            JExportProcessPanel processPanel,
35
            ExportParameters parameters
36 44386 omartinez
    ) {
37 43925 jjdelcerro
        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 44386 omartinez
        return i18nManager.getTranslation("_Selection_of_geometry_field");
52 43925 jjdelcerro
    }
53
54
    @Override
55
    public boolean validatePanel() throws ExportPanelValidationException {
56
        return true;
57
    }
58
59
    @Override
60 43968 jjdelcerro
    public void previousPanel() {
61
62
    }
63
64
    @Override
65
    public void nextPanel() {
66 43936 jjdelcerro
        this.parameters.setSourceGeometryFieldName(this.getGeometryField());
67 43925 jjdelcerro
    }
68 44386 omartinez
69 43925 jjdelcerro
    @Override
70
    public void enterPanel() {
71 44386 omartinez
        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 43925 jjdelcerro
    }
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 44386 omartinez
99
        if (this.parameters.getSourceGeometryFieldName() == null) {
100 43925 jjdelcerro
            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 44386 omartinez
        }
112 43925 jjdelcerro
        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 44386 omartinez
132 43925 jjdelcerro
    }
133 44386 omartinez
134 43925 jjdelcerro
    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 44386 omartinez
        if (this.rdoUseNullAsTheValueOfTheGeometry.isSelected()) {
144 43925 jjdelcerro
            return null;
145
        }
146 44386 omartinez
        if (this.rdoUseTheGeometryFieldByDefault.isSelected()) {
147 43925 jjdelcerro
            return this.parameters.getSourceFeatureType().getDefaultGeometryAttribute().getName();
148
        }
149
        return (String) this.cboGeometryField.getSelectedItem();
150
    }
151
}