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

History | View | Annotate | Download (8.31 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
        updateSelectedRadioButton();
94
    }
95

    
96
    private void doRadioButonsStateChanged() {
97
        if (this.rdbtnUserProjection.isSelected()) {
98
            this.projectionController.setEnabled(true);
99
            this.txtOriginalProjection.setEnabled(false);
100
            this.txtViewProjection.setEnabled(false);
101
            this.txtUserProjection.setEnabled(true);
102

    
103
        } else if (this.rdbtnOriginalProjection.isSelected()) {
104
            this.projectionController.setEnabled(false);
105
            this.txtOriginalProjection.setEnabled(true);
106
            this.txtViewProjection.setEnabled(false);
107
            this.txtUserProjection.setEnabled(false);
108

    
109
        } else if (this.rdbtnViewProjection.isSelected()) {
110
            this.projectionController.setEnabled(false);
111
            this.txtOriginalProjection.setEnabled(false);
112
            this.txtViewProjection.setEnabled(true);
113
            this.txtUserProjection.setEnabled(false);
114

    
115
        }
116
    }
117

    
118
    @Override
119
    public String getIdPanel() {
120
        return ExportPanelsManager.PANEL_SELECT_TARGET_PROJECTION;
121
    }
122

    
123
    @Override
124
    public String getTitlePanel() {
125
        I18nManager i18n = ToolsLocator.getI18nManager();
126
        return i18n.getTranslation("_Target_projection");
127
    }
128

    
129
    @Override
130
    public boolean validatePanel() throws ExportPanelValidationException {
131
        if (parameters instanceof ExportParametersGeometry) {
132
            if (this.getTargetProjection()==null) {
133
                return false;
134
            }
135
        }
136
        return true;
137
    }
138

    
139
    @Override
140
    public void previousPanel() {
141

    
142
    }
143

    
144
    @Override
145
    public void enterPanel() {
146
        IProjection targetProjection = this.parameters.getTargetProjection();
147
        IProjection contextProjection = this.parameters.getContextProjection();
148
        IProjection sourceProjection = this.parameters.getSourceProjection();
149

    
150
        ICoordTrans trans = this.parameters.getTargetTransformation();
151

    
152
        if (targetProjection != null) {
153
            this.projectionController.set(targetProjection);
154
        } else if (contextProjection != null) {
155
            this.projectionController.set(contextProjection);
156
        } else if (sourceProjection != null) {
157
            this.projectionController.set(sourceProjection);
158
        }
159

    
160
        updateSelectedRadioButton();
161
    }
162
    
163
    private void updateSelectedRadioButton() {
164
                if (this.parameters.getSourceProjection() == null) {
165
            this.rdbtnUserProjection.setSelected(true);
166
        } else if (this.parameters.getTargetProjection() == this.parameters.getSourceProjection()) {
167
            this.rdbtnOriginalProjection.setSelected(true);
168
        } else if (this.parameters.getTargetProjection() == this.parameters.getContextProjection()) {
169
            this.rdbtnViewProjection.setSelected(true);
170
        } else {
171
            this.rdbtnUserProjection.setSelected(true);
172
        }
173
    }
174
    
175
    private IProjection getTargetProjection() {
176
         if (this.rdbtnUserProjection.isSelected()) {
177
            return this.projectionController.get();
178
        } else if (this.rdbtnOriginalProjection.isSelected()) {
179
            return this.parameters.getSourceProjection();
180
        } else if (this.rdbtnViewProjection.isSelected()) {
181
            return this.parameters.getContextProjection();
182
        }
183
        return null; // no deberia llegar aqui
184
    }
185
    
186
    private ICoordTrans getTargetTransformation() {
187
        if (this.rdbtnUserProjection.isSelected()) {
188
            return this.projectionController.getCoordinateTransformation();
189
        } else if (this.rdbtnOriginalProjection.isSelected()) {
190
           return null;
191
        } else if (this.rdbtnViewProjection.isSelected()) {
192
            ICoordTrans targetCT = this.parameters.getSourceProjection().getCT(this.parameters.getContextProjection());
193
            return targetCT;
194
        }
195
        return null; // no deberia llegar aqui
196
    }
197

    
198
    @Override
199
    public void nextPanel() {
200
        this.parameters.setTargetProjection(getTargetProjection());
201
        this.parameters.setTargetTransformation(getTargetTransformation());
202
    }
203

    
204
    @Override
205
    public JComponent asJComponent() {
206
        return this;
207
    }
208

    
209
    private void translate() {
210
        ToolsSwingManager manager = ToolsSwingLocator.getToolsSwingManager();
211
        manager.translate(this.lblSelectTargetProjection);
212
        manager.translate(this.rdbtnOriginalProjection);
213
        manager.translate(this.rdbtnUserProjection);
214
        manager.translate(this.rdbtnViewProjection);
215
    }
216

    
217
}