Statistics
| Revision:

root / branches / F2 / extensions / extJCRS / src / org / gvsig / crs / gui / panels / wizard / MainPanel.java @ 11669

History | View | Annotate | Download (7.72 KB)

1
package org.gvsig.crs.gui.panels.wizard;
2

    
3
import java.awt.BorderLayout;
4
import java.awt.CardLayout;
5
import java.awt.FlowLayout;
6
import java.awt.event.ActionEvent;
7
import java.awt.event.ActionListener;
8
import java.sql.SQLException;
9

    
10
import javax.swing.JButton;
11
import javax.swing.JPanel;
12

    
13
import org.gvsig.crs.ICrs;
14

    
15
import com.iver.andami.PluginServices;
16
import com.iver.andami.ui.mdiManager.IWindow;
17
import com.iver.andami.ui.mdiManager.WindowInfo;
18

    
19
import es.idr.teledeteccion.connection.EpsgConnection;
20

    
21

    
22
/**
23
 * 
24
 * @author Luisa Marina Fernndez (luisam.fernandez@uclm.es)
25
 *
26
 */
27
public class MainPanel extends JPanel implements ActionListener,IWindow {
28
        
29
        private static final long serialVersionUID = 1L;
30
        private JPanel pCard;
31
        private JPanel pSouth;
32
        
33
        private JButton btnCancelar;
34
        private JButton btnSiguiente;
35
        private JButton btnAnterior;
36
        private JButton btnFinalizar;
37
        
38
        private DefCrsUsr pCrsUsr;
39
        private DefinirDatum pDatum;
40
        private DefSistCoordenadas pSistCoord;
41
        
42
         final static String CRSUSUARIOPANEL = "CrsUsuario";
43
         final static String DEFINIRDATUMPANEL = "DefinirDatum"; 
44
         final static String SISTEMACOORDENADASPANEL = "SistemaCoordenadas";
45
         
46
        private ICrs currentCrs;
47
        private String cadWkt = "";
48
        private int newCrsCode = -1;
49
        
50
        public MainPanel(ICrs crs) {
51
                super();
52
                setCrs(crs);
53
                this.setLayout(new BorderLayout());
54
                this.add(getPCard(),BorderLayout.CENTER);
55
                this.add(getPSouth(),BorderLayout.SOUTH);
56
        }
57
        /**
58
         * Inicilizar el botn Anterior
59
         * @return
60
         */
61
        public JButton getBtnAnterior() {
62
                if(btnAnterior==null){
63
                        btnAnterior=new JButton();
64
                        btnAnterior.setText(PluginServices.getText(this,"wz_anterior"));
65
                        btnAnterior.addActionListener(this);
66
                        
67
                }
68
                return btnAnterior;
69
        }
70
        /**
71
         * Inicilizar el botn Cancelar
72
         * @return
73
         */
74
        public JButton getBtnCancelar() {
75
                if(btnCancelar==null){
76
                        btnCancelar=new JButton();
77
                        btnCancelar.setText(PluginServices.getText(this,"wz_cancel"));
78
                        btnCancelar.addActionListener(this);
79
                }
80
                return btnCancelar;
81
        }
82
        /**
83
         * Inicilizar el botn Finalizar
84
         * @return
85
         */
86
        public JButton getBtnFinalizar() {
87
                if(btnFinalizar==null){
88
                        btnFinalizar=new JButton();
89
                        btnFinalizar.setText(PluginServices.getText(this,"wz_fin"));
90
                        btnFinalizar.addActionListener(this);
91
                }
92
                return btnFinalizar;
93
        }
94
        /**
95
         * Inicilizar el botn Siguiente
96
         * @return
97
         */
98
        public JButton getBtnSiguiente() {
99
                if(btnSiguiente==null){
100
                        btnSiguiente=new JButton();
101
                        btnSiguiente.setText(PluginServices.getText(this,"wz_siguiente"));
102
                        btnSiguiente.addActionListener(this);
103
                }
104
                return btnSiguiente;
105
        }
106
        /**
107
         * Inicilizar el panel que maneja los subpaneles del asistente
108
         * @return
109
         */
110
        public JPanel getPCard() {
111
                if(pCard==null){
112
                        pCard=new JPanel();
113
                        pCard.setLayout(new CardLayout());
114
                        
115
                        pCard.add(CRSUSUARIOPANEL,getPCrsUsr());
116
                        pCard.add(DEFINIRDATUMPANEL,getPDatum());
117
                        pCard.add(SISTEMACOORDENADASPANEL,getPSistCoord());
118
                        
119
                }
120
                return pCard;
121
        }
122
        /**
123
         * Iniciliza el panel que contiene los botones del asistente
124
         * @return
125
         */
126
        public JPanel getPSouth() {
127
                if(pSouth==null){
128
                        pSouth=new JPanel();
129
                        pSouth.setLayout(new FlowLayout(FlowLayout.RIGHT,5,5));
130
                        pSouth.add(getBtnCancelar());
131
                        pSouth.add(getBtnAnterior());
132
                        pSouth.add(getBtnSiguiente());
133
                        pSouth.add(getBtnFinalizar());
134
                        getBtnFinalizar().setVisible(false);
135
                        getBtnAnterior().setVisible(false);
136
                }
137
                return pSouth;
138
        }
139
        public DefCrsUsr getPCrsUsr() {
140
                if(pCrsUsr==null){
141
                        pCrsUsr=new DefCrsUsr(getCrs());
142
                }
143
                return pCrsUsr;
144
        }
145
        public DefinirDatum getPDatum() {
146
                if(pDatum==null){
147
                        pDatum=new DefinirDatum();
148
                }
149
                return pDatum;
150
        }
151
        public DefSistCoordenadas getPSistCoord() {
152
                if(pSistCoord==null){
153
                        pSistCoord=new DefSistCoordenadas();
154
                }
155
                return pSistCoord;
156
        }
157
        public void actionPerformed(ActionEvent e) {
158
                 
159
                CardLayout cl = (CardLayout)(pCard.getLayout());  
160
                
161
                if(e.getSource().equals(getBtnAnterior())){
162
                        
163
                        if(getPDatum().isShowing()){
164
                                //Se va a mostrar el primer panel del Wizard
165
                                getBtnAnterior().setVisible(false);
166
                        }
167
                        //Mostrar el panel anterior
168
                        cl.previous(pCard);
169
                        //Establecer los botones del Wizard
170
                        getBtnFinalizar().setVisible(false);
171
                        getBtnSiguiente().setVisible(true);
172
                        
173
                }else if(e.getSource().equals(getBtnSiguiente())){
174
                        if (getPCrsUsr().isShowing() && getPCrsUsr().getRbCrsExistente().isSelected() ){
175
                                ICrs crs = getPCrsUsr().getCrs();
176
                                if (crs != null){
177
                                        fillData(crs);
178
                                }
179
                                else fillData(getCrs());
180
                        }
181
                        cl.next(pCard);
182
                        getBtnAnterior().setVisible(true);
183
                        //Si aparece el ultimo panel visualizar el botn finalizar
184
                        if (getPSistCoord().isShowing()){
185
                                getBtnFinalizar().setVisible(true);
186
                                getBtnSiguiente().setVisible(false);
187
                                getBtnAnterior().setVisible(true);
188
                        }
189
                                
190
                                
191
                }else if(e.getSource().equals(getBtnFinalizar())){
192
                        //Realizar las acciones de fin del Wizard
193
                        getDataAndUpdate();
194
                        System.out.println("Finalizar el Asistente");
195
                        System.out.println("Cerrar el Asistente");
196
                        PluginServices.getMDIManager().closeWindow(this);
197
                        
198
                }else if(e.getSource().equals(getBtnCancelar())){
199
                        //Cerrar el asistente
200
                        PluginServices.getMDIManager().closeWindow(this);
201
                }
202
        }
203
        public WindowInfo getWindowInfo() {
204
                WindowInfo m_viewinfo=new WindowInfo(WindowInfo.MODALDIALOG);
205
                   m_viewinfo.setTitle(PluginServices.getText(this,"wz_titulo"));
206
                   m_viewinfo.setWidth(444);
207
                   //m_viewinfo.setHeight(425);
208
                   m_viewinfo.setHeight(390);
209
                return m_viewinfo;
210
        }
211
        
212
        public ICrs getCrs () {
213
                return currentCrs;
214
        }
215
        
216
        public void setCrs (ICrs crs) {
217
                currentCrs = crs;
218
        }
219
        
220
        
221
        
222
        private void fillData(ICrs crs) {
223
                getPDatum().fillData(crs);
224
                getPSistCoord().fillData(crs);
225
        }
226
        
227
        private void getDataAndUpdate() {
228
                String[] spheroid = {getPDatum().getTxtElipsoide().getText(),
229
                                                        getPDatum().getTxtSemMay().getText(), 
230
                                                        getPDatum().getTxtInvF().getText()};
231
                String[] primem = {getPDatum().getTxtMeridian().getText(),
232
                                                        getPDatum().getTxtLong().getText()};
233
                
234
                String[] authority = {"\"USR\"", "2001"};
235
                String datum = getPDatum().getTxtDatum().getText();
236
                String sentence;
237
                
238
                if (getPSistCoord().getRbGeografico().isSelected()) {
239
                        cadWkt = "GEOGCS[\"" + "Nombre crs usuario" + "\", DATUM[\""+ datum +
240
                        "\", SPHEROID[\""+ spheroid[0] + "\", "+ spheroid[1] + ", "+ spheroid[2] +"]], " +
241
                        "PRIMEM[\""+ primem[0] + "\", "+ primem[1] +"], UNIT[\"Degree\", " + (Math.PI/180) +
242
                        "]]";
243
                        
244
                        sentence = "INSERT INTO USR VALUES("+authority[1]+",'" +
245
                        cadWkt +"','','Nombre crs usuario','"+datum+"')";
246
        
247
                } else {
248
                
249
                        cadWkt = "PROJCS[\""+ "crs proyectado usuario"/*A cambiar cuando arreglemos paneles*/+
250
                                "\", GEOGCS[\"" + "Nombre crs usuario" + "\", DATUM[\""+ datum +
251
                                "\", SPHEROID[\""+ spheroid[0] + "\", "+ spheroid[1] + ", "+ spheroid[2] +"]], " +
252
                                "PRIMEM[\""+ primem[0] + "\", "+ primem[1] +"], UNIT[\"Degree\", " + (Math.PI/180) +
253
                                "]], PROJECTION[\""+ getPSistCoord().getCbProyeccion().getSelectedItem().toString() + "\"], ";
254
                                
255
                        /*
256
                         * falta la parte de los parĂ¡metros... metodo para nombres...
257
                         */                
258
                        for (int i= 0; i< getPSistCoord().getTableParametros().getRowCount();i++){
259
                                cadWkt += "PARAMETER[\""+getPSistCoord().getTableParametros().getValueAt(i, 0)+"\", " + 
260
                                                        getPSistCoord().getTableParametros().getValueAt(i, 1)+ "], ";
261
                        }
262
                        
263
                        cadWkt += "UNIT[\"Meters\", 1.0]]";
264
                        
265
                        
266
                        sentence = "INSERT INTO USR VALUES("+authority[1]+",'" +
267
                        cadWkt +"','crs proyectado usuario','Nombre crs usuario','"+datum+"')";
268
        
269
                }
270
                EpsgConnection conn = new EpsgConnection();
271
                conn.setConnectionUsr();
272
                                
273
                try {
274
                        conn.update(sentence);
275
                        conn.shutdown();
276
                } catch (SQLException e) {
277
                        // TODO Auto-generated catch block
278
                        e.printStackTrace();
279
                }
280
                
281
                setNewCrsCode(Integer.parseInt(authority[1]));
282
        }
283
        
284
        public void setNewCrsCode(int code) {
285
                newCrsCode = code;
286
        }
287
        
288
        public int getNewCrsCode() {
289
                return newCrsCode;
290
        }
291
        
292
}