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 / SelectTargetProjectionPanel.java @ 44395

History | View | Annotate | Download (8.08 KB)

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

    
3
import java.awt.event.ItemEvent;
4
import java.awt.event.ItemListener;
5
import javax.swing.JComponent;
6
import org.cresques.cts.ICoordTrans;
7
import org.cresques.cts.IProjection;
8
import org.gvsig.export.ExportParameters;
9
import org.gvsig.export.ExportParametersGeometry;
10
import org.gvsig.export.swing.JExportProcessPanel;
11
import org.gvsig.export.swing.impl.pickercontroller.ProjectionPickerController;
12
import org.gvsig.export.swing.spi.ExportPanel;
13
import org.gvsig.export.swing.spi.ExportPanelValidationException;
14
import org.gvsig.export.swing.spi.ExportPanelsManager;
15
import org.gvsig.tools.ToolsLocator;
16
import org.gvsig.tools.i18n.I18nManager;
17
import org.gvsig.tools.swing.api.ToolsSwingLocator;
18
import org.gvsig.tools.swing.api.ToolsSwingManager;
19

    
20
/**
21
 *
22
 * @author jjdelcerro
23
 */
24
public class SelectTargetProjectionPanel
25
        extends SelectTargetProjectionPanelView
26
        implements ExportPanel {
27

    
28
    private final ExportParametersGeometry parameters;
29
    private final JExportProcessPanel processPanel;
30
    private ProjectionPickerController projectionController;
31

    
32
    public SelectTargetProjectionPanel(
33
            JExportProcessPanel processPanel,
34
            ExportParameters parameters
35
    ) {
36
        this.processPanel = processPanel;
37
        this.parameters = (ExportParametersGeometry) parameters;
38
        this.initComponents();
39
    }
40

    
41
    private void initComponents() {
42
        this.projectionController = new ProjectionPickerController(
43
                this.txtUserProjection,
44
                this.btnSelectUserProjection
45
        );
46
        this.translate();
47
        IProjection targetParams = this.parameters.getTargetProjection();
48
        if (this.parameters.getContextProjection() == this.parameters.getSourceProjection()) {
49
            this.rdbtnOriginalProjection.setEnabled(this.parameters.getSourceProjection() != null);
50
            this.txtOriginalProjection.setEnabled(this.parameters.getSourceProjection() != null);
51
            this.rdbtnViewProjection.setEnabled(false);
52
            this.txtViewProjection.setEnabled(false);
53
            this.rdbtnUserProjection.setEnabled(true);
54
            this.txtUserProjection.setEnabled(true);
55

    
56
        } else {
57
            this.rdbtnOriginalProjection.setEnabled(this.parameters.getSourceProjection() != null);
58
            this.txtOriginalProjection.setEnabled(this.parameters.getSourceProjection() != null);
59
            this.rdbtnViewProjection.setEnabled(this.parameters.getContextProjection() != null);
60
            this.txtViewProjection.setEnabled(this.parameters.getContextProjection() != null);
61
            this.rdbtnUserProjection.setEnabled(true);
62
            this.txtUserProjection.setEnabled(true);
63
        }
64
        if (this.parameters.getContextProjection() != null) {
65
            this.txtViewProjection.setText(this.parameters.getContextProjection().getAbrev());
66
        }
67
        if (this.parameters.getSourceProjection() != null) {
68
            this.txtOriginalProjection.setText(this.parameters.getSourceProjection().getAbrev());
69
        }
70
        if (this.parameters.getTargetProjection() == null) {
71
            this.projectionController.set(this.parameters.getSourceProjection());
72
        } else {
73
            this.projectionController.set(this.parameters.getTargetProjection());
74
        }
75
        this.rdbtnOriginalProjection.addItemListener(new ItemListener() {
76
            @Override
77
            public void itemStateChanged(ItemEvent e) {
78
                doRadioButonsStateChanged();
79
            }
80
        });
81
        this.rdbtnUserProjection.addItemListener(new ItemListener() {
82
            @Override
83
            public void itemStateChanged(ItemEvent e) {
84
                doRadioButonsStateChanged();
85
            }
86
        });
87
        this.rdbtnViewProjection.addItemListener(new ItemListener() {
88
            @Override
89
            public void itemStateChanged(ItemEvent e) {
90
                doRadioButonsStateChanged();
91
            }
92
        });
93
        if (this.parameters.getSourceProjection() == null) {
94
            this.rdbtnUserProjection.setSelected(true);
95
        } else if (this.parameters.getTargetProjection() == this.parameters.getSourceProjection()) {
96
            this.rdbtnOriginalProjection.setSelected(true);
97
        } else if (this.parameters.getTargetProjection() == this.parameters.getContextProjection()) {
98
            this.rdbtnViewProjection.setSelected(true);
99
        } else {
100
            this.rdbtnUserProjection.setSelected(true);
101
        }
102
    }
103

    
104
    private void doRadioButonsStateChanged() {
105
        if (this.rdbtnUserProjection.isSelected()) {
106
            this.projectionController.setEnabled(true);
107
            this.txtOriginalProjection.setEnabled(false);
108
            this.txtViewProjection.setEnabled(false);
109
            this.txtUserProjection.setEnabled(true);
110

    
111
        } else if (this.rdbtnOriginalProjection.isSelected()) {
112
            this.projectionController.setEnabled(false);
113
            this.txtOriginalProjection.setEnabled(true);
114
            this.txtViewProjection.setEnabled(false);
115
            this.txtUserProjection.setEnabled(false);
116

    
117
        } else if (this.rdbtnViewProjection.isSelected()) {
118
            this.projectionController.setEnabled(false);
119
            this.txtOriginalProjection.setEnabled(false);
120
            this.txtViewProjection.setEnabled(true);
121
            this.txtUserProjection.setEnabled(false);
122

    
123
        }
124
    }
125

    
126
    @Override
127
    public String getIdPanel() {
128
        return ExportPanelsManager.PANEL_SELECT_TARGET_PROJECTION;
129
    }
130

    
131
    @Override
132
    public String getTitlePanel() {
133
        I18nManager i18n = ToolsLocator.getI18nManager();
134
        return i18n.getTranslation("_Target_projection");
135
    }
136

    
137
    @Override
138
    public boolean validatePanel() throws ExportPanelValidationException {
139
        if (this.rdbtnUserProjection.isSelected()) {
140
            if (this.projectionController.isEmpty()) {
141
                return false;
142
            }
143
        }
144
        return true;
145
    }
146

    
147
    @Override
148
    public void previousPanel() {
149

    
150
    }
151

    
152
    @Override
153
    public void enterPanel() {
154
        IProjection targetProjection = this.parameters.getTargetProjection();
155
        IProjection contextProjection = this.parameters.getContextProjection();
156
        IProjection sourceProjection = this.parameters.getSourceProjection();
157

    
158
        ICoordTrans trans = this.parameters.getTargetTransformation();
159

    
160
        if (targetProjection != null) {
161
            this.projectionController.set(targetProjection);
162
        } else if (contextProjection != null) {
163
            this.projectionController.set(contextProjection);
164
        } else if (sourceProjection != null) {
165
            this.projectionController.set(sourceProjection);
166
        }
167

    
168
        if (targetProjection != contextProjection) {
169
            rdbtnUserProjection.setSelected(true);
170
        } else {
171
            if (targetProjection == sourceProjection) {
172
                rdbtnOriginalProjection.setSelected(true);
173
            } else if (targetProjection == contextProjection) {
174
                rdbtnViewProjection.setSelected(true);
175
            }
176
        }
177
    }
178

    
179
    @Override
180
    public void nextPanel() {
181
        if (this.rdbtnUserProjection.isSelected()) {
182
            this.parameters.setTargetProjection(this.projectionController.get());
183
            this.parameters.setTargetTransformation(this.projectionController.getCoordinateTransformation());
184

    
185
        } else if (this.rdbtnOriginalProjection.isSelected()) {
186
            this.parameters.setTargetProjection(null);
187
            this.parameters.setTargetTransformation(null);
188

    
189
        } else if (this.rdbtnViewProjection.isSelected()) {
190
            this.parameters.setTargetProjection(this.parameters.getContextProjection());
191
            this.parameters.setTargetTransformation(this.parameters.getSourceTransformation());
192

    
193
        }
194
    }
195

    
196
    @Override
197
    public JComponent asJComponent() {
198
        return this;
199
    }
200

    
201
    private void translate() {
202
        ToolsSwingManager manager = ToolsSwingLocator.getToolsSwingManager();
203
        manager.translate(this.lblSelectTargetProjection);
204
        manager.translate(this.rdbtnOriginalProjection);
205
        manager.translate(this.rdbtnUserProjection);
206
        manager.translate(this.rdbtnViewProjection);
207
    }
208

    
209
}