Statistics
| Revision:

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

History | View | Annotate | Download (7.71 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
                                String authority = getPCrsUsr().getLblCrs().getText();
176
                                fillData(authority);
177
                        }
178
                        cl.next(pCard);
179
                        getBtnAnterior().setVisible(true);
180
                        //Si aparece el ultimo panel visualizar el botn finalizar
181
                        if (getPSistCoord().isShowing()){
182
                                getBtnFinalizar().setVisible(true);
183
                                getBtnSiguiente().setVisible(false);
184
                                getBtnAnterior().setVisible(true);
185
                        }
186
                                
187
                                
188
                }else if(e.getSource().equals(getBtnFinalizar())){
189
                        //Realizar las acciones de fin del Wizard
190
                        getDataAndUpdate();
191
                        System.out.println("Finalizar el Asistente");
192
                        System.out.println("Cerrar el Asistente");
193
                        PluginServices.getMDIManager().closeWindow(this);
194
                        
195
                }else if(e.getSource().equals(getBtnCancelar())){
196
                        //Cerrar el asistente
197
                        PluginServices.getMDIManager().closeWindow(this);
198
                }
199
        }
200
        public WindowInfo getWindowInfo() {
201
                WindowInfo m_viewinfo=new WindowInfo(WindowInfo.MODALDIALOG);
202
                   m_viewinfo.setTitle(PluginServices.getText(this,"wz_titulo"));
203
                   m_viewinfo.setWidth(444);
204
                   //m_viewinfo.setHeight(425);
205
                   m_viewinfo.setHeight(390);
206
                return m_viewinfo;
207
        }
208
        
209
        public ICrs getCrs () {
210
                return currentCrs;
211
        }
212
        
213
        public void setCrs (ICrs crs) {
214
                currentCrs = crs;
215
        }
216
        
217
        
218
        
219
        private void fillData(String authority) {
220
                getPDatum().fillData(getCrs());
221
                getPSistCoord().fillData(getCrs());
222
        }
223
        
224
        private void getDataAndUpdate() {
225
                String[] spheroid = {getPDatum().getTxtElipsoide().getText(),
226
                                                        getPDatum().getTxtSemMay().getText(), 
227
                                                        getPDatum().getTxtInvF().getText()};
228
                String[] primem = {getPDatum().getTxtMeridian().getText(),
229
                                                        getPDatum().getTxtLong().getText()};
230
                
231
                String[] authority = {"\"USR\"", "2001"};
232
                String datum = getPDatum().getTxtDatum().getText();
233
                String sentence;
234
                
235
                if (getPSistCoord().getRbGeografico().isSelected()) {
236
                        cadWkt = "GEOGCS[\"" + "Nombre crs usuario" + "\", DATUM[\""+ datum +
237
                        "\", SPHEROID[\""+ spheroid[0] + "\", "+ spheroid[1] + ", "+ spheroid[2] +"]], " +
238
                        "PRIMEM[\""+ primem[0] + "\", "+ primem[1] +"], UNIT[\"Degree\", " + (Math.PI/180) +
239
                        "]]";
240
                        
241
                        sentence = "INSERT INTO USR VALUES("+authority[1]+",'" +
242
                        cadWkt +"','','Nombre crs usuario','"+datum+"')";
243
        
244
                } else {
245
                
246
                        cadWkt = "PROJCS[\""+ "crs proyectado usuario"/*A cambiar cuando arreglemos paneles*/+
247
                                "\", GEOGCS[\"" + "Nombre crs usuario" + "\", DATUM[\""+ datum +
248
                                "\", SPHEROID[\""+ spheroid[0] + "\", "+ spheroid[1] + ", "+ spheroid[2] +"]], " +
249
                                "PRIMEM[\""+ primem[0] + "\", "+ primem[1] +"], UNIT[\"Degree\", " + (Math.PI/180) +
250
                                "]], PROJECTION[\""+ getPSistCoord().getCbProyeccion().getSelectedItem().toString() + "\"], ";
251
                                
252
                        /*
253
                         * falta la parte de los parĂ¡metros... metodo para nombres...
254
                         */                
255
                        for (int i= 0; i< getPSistCoord().getTableParametros().getRowCount();i++){
256
                                cadWkt += "PARAMETER[\""+getPSistCoord().getTableParametros().getValueAt(i, 0)+"\", " + 
257
                                                        getPSistCoord().getTableParametros().getValueAt(i, 1)+ "], ";
258
                        }
259
                        
260
                        cadWkt += "UNIT[\"Meters\", 1.0]]";
261
                        
262
                        
263
                        sentence = "INSERT INTO USR VALUES("+authority[1]+",'" +
264
                        cadWkt +"','crs proyectado usuario','Nombre crs usuario','"+datum+"')";
265
        
266
                }
267
                EpsgConnection conn = new EpsgConnection();
268
                conn.setConnectionUsr();
269
                                
270
                try {
271
                        conn.update(sentence);
272
                        conn.shutdown();
273
                } catch (SQLException e) {
274
                        // TODO Auto-generated catch block
275
                        e.printStackTrace();
276
                }
277
                
278
                setNewCrsCode(Integer.parseInt(authority[1]));
279
        }
280
        
281
        public void setNewCrsCode(int code) {
282
                newCrsCode = code;
283
        }
284
        
285
        public int getNewCrsCode() {
286
                return newCrsCode;
287
        }
288
        
289
}