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
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.spi.ExportPanel;
12
import org.gvsig.export.swing.spi.ExportPanelValidationException;
13
import org.gvsig.export.swing.spi.ExportPanelsManager;
14
import org.gvsig.fmap.crs.CRSFactory;
15
import org.gvsig.fmap.dal.swing.DALSwingLocator;
16
import org.gvsig.fmap.dal.swing.ProjectionPickerController;
17
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
import org.gvsig.tools.swing.api.pickercontroller.PickerController;
22

    
23
/**
24
 *
25
 * @author jjdelcerro
26
 */
27
public class SelectTargetProjectionPanel
28
        extends SelectTargetProjectionPanelView
29
        implements ExportPanel {
30

    
31
    private final ExportParametersGeometry parameters;
32
    private final JExportProcessPanel processPanel;
33
    private ProjectionPickerController projectionController;
34

    
35
    public SelectTargetProjectionPanel(
36
            JExportProcessPanel processPanel,
37
            ExportParameters parameters
38
    ) {
39
        this.processPanel = processPanel;
40
        this.parameters = (ExportParametersGeometry) parameters;
41
        this.initComponents();
42
    }
43

    
44
    private void initComponents() {
45
        this.projectionController = DALSwingLocator.getDataSwingManager().createProjectionPickerController(
46
                this.txtUserProjection,
47
                this.btnSelectUserProjection
48
        );
49
        this.translate();
50
        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
            this.rdbtnViewProjection.setEnabled(false);
55
            this.txtViewProjection.setEnabled(false);
56
            this.rdbtnUserProjection.setEnabled(true);
57
            this.txtUserProjection.setEnabled(true);
58

    
59
        } else {
60
            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
            this.rdbtnUserProjection.setEnabled(true);
65
            this.txtUserProjection.setEnabled(true);
66
        }
67
        if (this.parameters.getContextProjection() != null) {
68
            this.txtViewProjection.setText(this.parameters.getContextProjection().getAbrev());
69
        }
70
        if (this.parameters.getSourceProjection() != null) {
71
            this.txtOriginalProjection.setText(this.parameters.getSourceProjection().getAbrev());
72
        }
73
        if (this.parameters.getTargetProjection() == null) {
74
            this.projectionController.set(this.parameters.getSourceProjection());
75
        } else {
76
            this.projectionController.set(this.parameters.getTargetProjection());
77
        }
78
        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
        updateSelectedRadioButton();
97
    }
98

    
99
    private void doRadioButonsStateChanged() {
100
        if (this.rdbtnUserProjection.isSelected()) {
101
            this.projectionController.setEnabled(true);
102
            this.txtOriginalProjection.setEnabled(false);
103
            this.txtViewProjection.setEnabled(false);
104
            this.txtUserProjection.setEnabled(true);
105

    
106
        } else if (this.rdbtnOriginalProjection.isSelected()) {
107
            this.projectionController.setEnabled(false);
108
            this.txtOriginalProjection.setEnabled(true);
109
            this.txtViewProjection.setEnabled(false);
110
            this.txtUserProjection.setEnabled(false);
111

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

    
118
        }
119
    }
120

    
121
    @Override
122
    public String getIdPanel() {
123
        return ExportPanelsManager.PANEL_SELECT_TARGET_PROJECTION;
124
    }
125

    
126
    @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
        if (parameters instanceof ExportParametersGeometry) {
135
            if (this.getTargetProjection()==null) {
136
                return false;
137
            }
138
        }
139
        return true;
140
    }
141

    
142
    @Override
143
    public void previousPanel() {
144

    
145
    }
146

    
147
    @Override
148
    public void enterPanel() {
149
        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
        } else {
162
            if( this.projectionController.get()==null ) {
163
                this.projectionController.set(CRSFactory.getCRS("EPSG:4326"));
164
            }
165
        }
166

    
167
        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
        } else {
178
            this.rdbtnUserProjection.setSelected(true);
179
        }
180
    }
181
    
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
        if (this.rdbtnUserProjection.isSelected()) {
195
            return this.projectionController.getCoordinateTransformation();
196
        } else if (this.rdbtnOriginalProjection.isSelected()) {
197
           return null;
198
        } else if (this.rdbtnViewProjection.isSelected()) {
199
            ICoordTrans targetCT = this.parameters.getSourceProjection().getCT(this.parameters.getContextProjection());
200
            return targetCT;
201
        }
202
        return null; // no deberia llegar aqui
203
    }
204

    
205
    @Override
206
    public void nextPanel() {
207
        this.parameters.setTargetProjection(getTargetProjection());
208
        this.parameters.setTargetTransformation(getTargetTransformation());
209
    }
210

    
211
    @Override
212
    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

    
224
}