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

History | View | Annotate | Download (8.64 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 javax.swing.JComponent;
6 44386 omartinez
import org.cresques.cts.ICoordTrans;
7
import org.cresques.cts.IProjection;
8 43925 jjdelcerro
import org.gvsig.export.ExportParameters;
9
import org.gvsig.export.ExportParametersGeometry;
10
import org.gvsig.export.swing.JExportProcessPanel;
11
import org.gvsig.export.swing.spi.ExportPanel;
12
import org.gvsig.export.swing.spi.ExportPanelValidationException;
13
import org.gvsig.export.swing.spi.ExportPanelsManager;
14 46071 jjdelcerro
import org.gvsig.fmap.crs.CRSFactory;
15 45602 jjdelcerro
import org.gvsig.fmap.dal.swing.DALSwingLocator;
16
import org.gvsig.fmap.dal.swing.ProjectionPickerController;
17 43925 jjdelcerro
import org.gvsig.tools.ToolsLocator;
18
import org.gvsig.tools.i18n.I18nManager;
19
import org.gvsig.tools.swing.api.ToolsSwingLocator;
20
import org.gvsig.tools.swing.api.ToolsSwingManager;
21 45602 jjdelcerro
import org.gvsig.tools.swing.api.pickercontroller.PickerController;
22 43925 jjdelcerro
23
/**
24
 *
25
 * @author jjdelcerro
26
 */
27 44386 omartinez
public class SelectTargetProjectionPanel
28 43925 jjdelcerro
        extends SelectTargetProjectionPanelView
29 44386 omartinez
        implements ExportPanel {
30 43925 jjdelcerro
31
    private final ExportParametersGeometry parameters;
32
    private final JExportProcessPanel processPanel;
33
    private ProjectionPickerController projectionController;
34 44386 omartinez
35 43925 jjdelcerro
    public SelectTargetProjectionPanel(
36
            JExportProcessPanel processPanel,
37
            ExportParameters parameters
38 44386 omartinez
    ) {
39 43925 jjdelcerro
        this.processPanel = processPanel;
40
        this.parameters = (ExportParametersGeometry) parameters;
41
        this.initComponents();
42
    }
43
44
    private void initComponents() {
45 45602 jjdelcerro
        this.projectionController = DALSwingLocator.getDataSwingManager().createProjectionPickerController(
46 43925 jjdelcerro
                this.txtUserProjection,
47
                this.btnSelectUserProjection
48
        );
49
        this.translate();
50 44386 omartinez
        IProjection targetParams = this.parameters.getTargetProjection();
51
        if (this.parameters.getContextProjection() == this.parameters.getSourceProjection()) {
52
            this.rdbtnOriginalProjection.setEnabled(this.parameters.getSourceProjection() != null);
53
            this.txtOriginalProjection.setEnabled(this.parameters.getSourceProjection() != null);
54 43925 jjdelcerro
            this.rdbtnViewProjection.setEnabled(false);
55
            this.txtViewProjection.setEnabled(false);
56
            this.rdbtnUserProjection.setEnabled(true);
57
            this.txtUserProjection.setEnabled(true);
58 44386 omartinez
59 43925 jjdelcerro
        } else {
60 44386 omartinez
            this.rdbtnOriginalProjection.setEnabled(this.parameters.getSourceProjection() != null);
61
            this.txtOriginalProjection.setEnabled(this.parameters.getSourceProjection() != null);
62
            this.rdbtnViewProjection.setEnabled(this.parameters.getContextProjection() != null);
63
            this.txtViewProjection.setEnabled(this.parameters.getContextProjection() != null);
64 43925 jjdelcerro
            this.rdbtnUserProjection.setEnabled(true);
65
            this.txtUserProjection.setEnabled(true);
66
        }
67 44386 omartinez
        if (this.parameters.getContextProjection() != null) {
68 44168 jjdelcerro
            this.txtViewProjection.setText(this.parameters.getContextProjection().getAbrev());
69 44386 omartinez
        }
70
        if (this.parameters.getSourceProjection() != null) {
71 44168 jjdelcerro
            this.txtOriginalProjection.setText(this.parameters.getSourceProjection().getAbrev());
72 44386 omartinez
        }
73
        if (this.parameters.getTargetProjection() == null) {
74 43925 jjdelcerro
            this.projectionController.set(this.parameters.getSourceProjection());
75
        } else {
76
            this.projectionController.set(this.parameters.getTargetProjection());
77 44395 omartinez
        }
78 43925 jjdelcerro
        this.rdbtnOriginalProjection.addItemListener(new ItemListener() {
79
            @Override
80
            public void itemStateChanged(ItemEvent e) {
81
                doRadioButonsStateChanged();
82
            }
83
        });
84
        this.rdbtnUserProjection.addItemListener(new ItemListener() {
85
            @Override
86
            public void itemStateChanged(ItemEvent e) {
87
                doRadioButonsStateChanged();
88
            }
89
        });
90
        this.rdbtnViewProjection.addItemListener(new ItemListener() {
91
            @Override
92
            public void itemStateChanged(ItemEvent e) {
93
                doRadioButonsStateChanged();
94
            }
95
        });
96 45324 omartinez
        updateSelectedRadioButton();
97 43925 jjdelcerro
    }
98 44386 omartinez
99 43925 jjdelcerro
    private void doRadioButonsStateChanged() {
100 44386 omartinez
        if (this.rdbtnUserProjection.isSelected()) {
101 43925 jjdelcerro
            this.projectionController.setEnabled(true);
102
            this.txtOriginalProjection.setEnabled(false);
103
            this.txtViewProjection.setEnabled(false);
104
            this.txtUserProjection.setEnabled(true);
105 44386 omartinez
106
        } else if (this.rdbtnOriginalProjection.isSelected()) {
107 43925 jjdelcerro
            this.projectionController.setEnabled(false);
108
            this.txtOriginalProjection.setEnabled(true);
109
            this.txtViewProjection.setEnabled(false);
110
            this.txtUserProjection.setEnabled(false);
111 44386 omartinez
112
        } else if (this.rdbtnViewProjection.isSelected()) {
113 43925 jjdelcerro
            this.projectionController.setEnabled(false);
114
            this.txtOriginalProjection.setEnabled(false);
115
            this.txtViewProjection.setEnabled(true);
116
            this.txtUserProjection.setEnabled(false);
117 44386 omartinez
118 43925 jjdelcerro
        }
119
    }
120 44386 omartinez
121 43925 jjdelcerro
    @Override
122
    public String getIdPanel() {
123
        return ExportPanelsManager.PANEL_SELECT_TARGET_PROJECTION;
124
    }
125 44386 omartinez
126 43925 jjdelcerro
    @Override
127
    public String getTitlePanel() {
128
        I18nManager i18n = ToolsLocator.getI18nManager();
129
        return i18n.getTranslation("_Target_projection");
130
    }
131
132
    @Override
133
    public boolean validatePanel() throws ExportPanelValidationException {
134 45324 omartinez
        if (parameters instanceof ExportParametersGeometry) {
135
            if (this.getTargetProjection()==null) {
136 43925 jjdelcerro
                return false;
137
            }
138
        }
139
        return true;
140
    }
141
142
    @Override
143 43968 jjdelcerro
    public void previousPanel() {
144
145
    }
146
147
    @Override
148 43925 jjdelcerro
    public void enterPanel() {
149 44395 omartinez
        IProjection targetProjection = this.parameters.getTargetProjection();
150
        IProjection contextProjection = this.parameters.getContextProjection();
151
        IProjection sourceProjection = this.parameters.getSourceProjection();
152
153
        ICoordTrans trans = this.parameters.getTargetTransformation();
154
155
        if (targetProjection != null) {
156
            this.projectionController.set(targetProjection);
157
        } else if (contextProjection != null) {
158
            this.projectionController.set(contextProjection);
159
        } else if (sourceProjection != null) {
160
            this.projectionController.set(sourceProjection);
161 46071 jjdelcerro
        } else {
162
            if( this.projectionController.get()==null ) {
163
                this.projectionController.set(CRSFactory.getCRS("EPSG:4326"));
164
            }
165 44395 omartinez
        }
166
167 45324 omartinez
        updateSelectedRadioButton();
168
    }
169
170
    private void updateSelectedRadioButton() {
171
                if (this.parameters.getSourceProjection() == null) {
172
            this.rdbtnUserProjection.setSelected(true);
173
        } else if (this.parameters.getTargetProjection() == this.parameters.getSourceProjection()) {
174
            this.rdbtnOriginalProjection.setSelected(true);
175
        } else if (this.parameters.getTargetProjection() == this.parameters.getContextProjection()) {
176
            this.rdbtnViewProjection.setSelected(true);
177 44395 omartinez
        } else {
178 45324 omartinez
            this.rdbtnUserProjection.setSelected(true);
179 44395 omartinez
        }
180 43925 jjdelcerro
    }
181 45324 omartinez
182
    private IProjection getTargetProjection() {
183
         if (this.rdbtnUserProjection.isSelected()) {
184
            return this.projectionController.get();
185
        } else if (this.rdbtnOriginalProjection.isSelected()) {
186
            return this.parameters.getSourceProjection();
187
        } else if (this.rdbtnViewProjection.isSelected()) {
188
            return this.parameters.getContextProjection();
189
        }
190
        return null; // no deberia llegar aqui
191
    }
192
193
    private ICoordTrans getTargetTransformation() {
194 44386 omartinez
        if (this.rdbtnUserProjection.isSelected()) {
195 45324 omartinez
            return this.projectionController.getCoordinateTransformation();
196 44386 omartinez
        } else if (this.rdbtnOriginalProjection.isSelected()) {
197 45324 omartinez
           return null;
198 44386 omartinez
        } else if (this.rdbtnViewProjection.isSelected()) {
199 44497 omartinez
            ICoordTrans targetCT = this.parameters.getSourceProjection().getCT(this.parameters.getContextProjection());
200 45324 omartinez
            return targetCT;
201 43925 jjdelcerro
        }
202 45324 omartinez
        return null; // no deberia llegar aqui
203 43925 jjdelcerro
    }
204
205
    @Override
206 45324 omartinez
    public void nextPanel() {
207
        this.parameters.setTargetProjection(getTargetProjection());
208
        this.parameters.setTargetTransformation(getTargetTransformation());
209
    }
210
211
    @Override
212 43925 jjdelcerro
    public JComponent asJComponent() {
213
        return this;
214
    }
215
216
    private void translate() {
217
        ToolsSwingManager manager = ToolsSwingLocator.getToolsSwingManager();
218
        manager.translate(this.lblSelectTargetProjection);
219
        manager.translate(this.rdbtnOriginalProjection);
220
        manager.translate(this.rdbtnUserProjection);
221
        manager.translate(this.rdbtnViewProjection);
222
    }
223 44386 omartinez
224 43925 jjdelcerro
}