Statistics
| Revision:

svn-gvsig-desktop / trunk / extensions / extWFS2 / src / com / iver / cit / gvsig / gui / wizards / WFSWizard.java @ 4886

History | View | Annotate | Download (15.5 KB)

1
package com.iver.cit.gvsig.gui.wizards;
2

    
3
import java.awt.geom.Rectangle2D;
4
import java.net.MalformedURLException;
5
import java.net.URL;
6

    
7
import javax.swing.DefaultComboBoxModel;
8
import javax.swing.JComboBox;
9

    
10
import com.iver.andami.PluginServices;
11
import com.iver.andami.persistence.serverData.ServerDataPersistence;
12
import com.iver.cit.gvsig.fmap.layers.FLayer;
13
import com.iver.cit.gvsig.gui.WizardPanel;
14
import com.iver.cit.gvsig.gui.panels.WFSParamsPanel;
15
import com.iver.utiles.NotExistInXMLEntity;
16
import com.iver.utiles.XMLEntity;
17
import com.iver.utiles.swing.jcomboServer.JComboServer;
18
import com.iver.utiles.swing.jcomboServer.ServerData;
19

    
20
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
21
 *
22
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
23
 *
24
 * This program is free software; you can redistribute it and/or
25
 * modify it under the terms of the GNU General Public License
26
 * as published by the Free Software Foundation; either version 2
27
 * of the License, or (at your option) any later version.
28
 *
29
 * This program is distributed in the hope that it will be useful,
30
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
31
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
32
 * GNU General Public License for more details.
33
 *
34
 * You should have received a copy of the GNU General Public License
35
 * along with this program; if not, write to the Free Software
36
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
37
 *
38
 * For more information, contact:
39
 *
40
 *  Generalitat Valenciana
41
 *   Conselleria d'Infraestructures i Transport
42
 *   Av. Blasco Ib??ez, 50
43
 *   46010 VALENCIA
44
 *   SPAIN
45
 *
46
 *      +34 963862235
47
 *   gvsig@gva.es
48
 *      www.gvsig.gva.es
49
 *
50
 *    or
51
 *
52
 *   IVER T.I. S.A
53
 *   Salamanca 50
54
 *   46005 Valencia
55
 *   Spain
56
 *
57
 *   +34 963163400
58
 *   dac@iver.es
59
 */
60
/* CVS MESSAGES:
61
 *
62
 * $Id: WFSWizard.java 4886 2006-04-19 12:50:16Z jorpiell $
63
 * $Log$
64
 * Revision 1.1  2006-04-19 12:50:16  jorpiell
65
 * Primer commit de la aplicaci?n. Se puede hacer un getCapabilities y ver el mensaje de vienvenida del servidor
66
 *
67
 *
68
 */
69
/**
70
 * @author Jorge Piera Llodr? (piera_jor@gva.es)
71
 */
72
public class WFSWizard extends WizardPanel {
73
        private int page = 0;
74
        private boolean connected = false;
75
        private JComboServer cmbHost = null;
76
        private javax.swing.JButton btnConnect = null;
77
        private javax.swing.JPanel jPanel = null;
78
        private javax.swing.JLabel jLabel1 = null;
79
        private javax.swing.JLabel lblTitle = null;
80
        private javax.swing.JScrollPane jScrollPane = null;
81
        private javax.swing.JTextArea txtAbstract = null;
82
        private javax.swing.JPanel panelPage1 = null;
83
        private javax.swing.JButton btnSiguiente = null;
84
        private javax.swing.JButton btnAnterior = null;
85
        private javax.swing.JPanel jPanel1 = null;
86
        private WizardListenerSupport listenerSupport = new WizardListenerSupport();
87
        private WFSParamsPanel wfsParamsPanel = null;
88
        private WFSWizardData dataSource = null;
89
        
90
        /**
91
         * This is the default constructor
92
         */
93
        public WFSWizard() {
94
                super();
95
                initialize();
96
        }
97

    
98
        /**
99
         * This method initializes this
100
         */
101
        private void initialize() {
102
                setTabName("WFS2");
103
                this.setLayout(null);
104
                this.setPreferredSize(new java.awt.Dimension(750, 320));
105
                this.setVisible(true);
106
                this.setSize(510, 468);
107
                this.add(getPanelPage1(), null);
108
                this.add(getPanelPage2(), null);
109
                this.add(getBtnAnterior(), null);
110
                this.add(getBtnSiguiente(), null);
111
                activarVisualizarBotones();
112
        }
113

    
114
        /**
115
         * Adds the host addres to a persistent data storage.
116
         * 
117
         * con addHost guardamos la informaci?n del combo de servidores en un
118
         * almac?n persistente
119
         * 
120
         * @param host
121
         */
122
        private void addHost(String host) {
123
                host = host.trim();
124
                ServerDataPersistence persistence = new ServerDataPersistence(this,ServerData.SERVER_TYPE_WMS);
125
                persistence.addServerData(new ServerData(host, ServerData.SERVER_TYPE_WMS));
126
        }
127

    
128
        /**
129
         * Fills up the initial WCSWizard controls.
130
         * 
131
         * Rellena los primeros controles del WCS Wizard
132
         * 
133
         * jaume
134
         */
135
        private void rellenarControles() {
136
                try {
137
                        String host = cmbHost.getModel().getSelectedItem().toString();
138
                                        
139
                        dataSource.setHost(new URL(host));
140
                
141
                        addHost(host);
142
                        getLblTitle().setText(dataSource.getTitle());
143
                        getTxtAbstract().setText(dataSource.getAbstract());
144
//                        wfsParamsPanel.getLstCoverages().setListData(
145
//                                        dataSource.getCoverageList());
146
                        wfsParamsPanel.setWizardData(dataSource);
147
                        
148
                        connected = true;
149
                        activarVisualizarBotones();
150
                } catch (Exception e) {
151
                        listenerSupport.callError(e);
152
                        e.printStackTrace();
153
                }
154
        }
155

    
156
        /**
157
         * Enables or disables the Next and Previous buttons according with the current
158
         * page and the enabled pages.
159
         */
160
        private void activarVisualizarBotones() {
161
                if (page == 0) {
162
                        getBtnAnterior().setEnabled(false);
163
                        getBtnSiguiente().setVisible(true);
164
                        if (connected) {
165
                                getBtnSiguiente().setEnabled(true);
166
                        } else {
167
                                getBtnSiguiente().setEnabled(false);
168
                        }
169
                } else if (page < wfsParamsPanel.getNumTabs()) {
170
                        getBtnSiguiente().setEnabled(true);
171
                        getBtnSiguiente().setVisible(true);
172
                        getBtnAnterior().setEnabled(true);
173
                        getBtnAnterior().setVisible(true);
174
                        if (wfsParamsPanel.nextPageEnabled()==-1){
175
                            getBtnSiguiente().setEnabled(false);
176
                        }
177
                        listenerSupport.callStateChanged(wfsParamsPanel.isCorretlyConfigured());
178
                } else if (page == wfsParamsPanel.getNumTabs()) {
179
                        getBtnSiguiente().setVisible(false);
180
                        getBtnSiguiente().setEnabled(false);
181
                        listenerSupport.callStateChanged(wfsParamsPanel 
182
                                        .isCorretlyConfigured());
183
                }
184

    
185
        }
186
        
187

    
188

    
189
        /**
190
         * This method initializes txtHost from the persistent data storage
191
         * 
192
         * @return javax.swing.JTextField
193
         */
194
        private javax.swing.JComboBox getTxtHost() {
195
                if (cmbHost == null) {
196
                        cmbHost = new JComboServer();
197
                        cmbHost.setModel(new DefaultComboBoxModel());
198
                        cmbHost.setPreferredSize(new java.awt.Dimension(350, 20));
199
                        cmbHost.setBounds(11, 26, 454, 20);
200
                        cmbHost.setEditable(true);        
201

    
202
                        ServerDataPersistence persistence = new ServerDataPersistence(this,ServerData.SERVER_TYPE_WFS);
203
                        ServerData[] servers = persistence.getArrayOfServerData();
204

    
205
                        if (servers.length == 0){
206
                                PluginServices ps = PluginServices.getPluginServices(this);
207
                                XMLEntity xml = ps.getPersistentXML();
208
                                try {
209
                                        String[] oldServers = xml.getStringArrayProperty("wfs-servers");
210
                                        servers = new ServerData[oldServers.length];
211
                                        for (int i=0; i<oldServers.length; i++) {
212
                                                servers[i] = new ServerData(oldServers[i],ServerData.SERVER_TYPE_WMS);
213
                                        }
214
                                        xml.remove("wfs-servers");
215
                                        ps.setPersistentXML(xml);
216
                                } catch (NotExistInXMLEntity e) {
217
                                        // Old servers doesn't exist
218
                                        servers = new ServerData[1];
219
                                        servers[0] = new ServerData("http://www2.dmsolutions.ca/cgi-bin/mswfs_gmap",ServerData.SERVER_TYPE_WFS);
220
                                }
221

    
222
                                for (int i=0 ; i<servers.length ; i++){
223
                                        persistence.addServerData(servers[i]);                               
224
                                }
225
                                persistence.setPersistent();                
226
                        }
227

    
228
                        cmbHost.setServerList(servers);
229
                }
230
                return cmbHost;
231
        }
232

    
233
        
234
        /**
235
         * This method initializes btnDetalles
236
         * 
237
         * @return javax.swing.JButton
238
         */
239
        private javax.swing.JButton getBtnConnect() {
240
                if (btnConnect == null) {
241
                        btnConnect = new javax.swing.JButton();
242
                        btnConnect.setPreferredSize(new java.awt.Dimension(100, 20));
243
                        btnConnect.setBounds(366, 50, 100, 20);
244
                        btnConnect.setText(PluginServices.getText(this, "connect"));
245
                        btnConnect.addActionListener(new java.awt.event.ActionListener() {
246
                                public void actionPerformed(java.awt.event.ActionEvent e) {
247
                                        wfsParamsPanel.cleanupWizard();
248
                                        connected = false;
249
                                        rellenarControles();
250
                                }
251
                        });
252
                }
253

    
254
                return btnConnect;
255
        }
256

    
257
        /**
258
         * This method initializes jPanel
259
         * 
260
         * @return javax.swing.JPanel
261
         */
262
        private javax.swing.JPanel getJPanel() {
263
                if (jPanel == null) {
264
                        jPanel = new javax.swing.JPanel();
265
                        jPanel.setLayout(null);
266
                        jPanel.setPreferredSize(new java.awt.Dimension(470, 130));
267
                        jPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(null,
268
                                        PluginServices.getText(this, "descripcion"),
269
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
270
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null,
271
                                        null));
272
                        jPanel.setBounds(2, 96, 477, 324);
273
                        jPanel.add(getJLabel1(), null);
274
                        jPanel.add(getLblTitle(), null);
275
                        jPanel.add(getJScrollPane(), null);
276
                }
277

    
278
                return jPanel;
279
        }
280

    
281
        /**
282
         * This method initializes jLabel1
283
         * 
284
         * @return javax.swing.JLabel
285
         */
286
        private javax.swing.JLabel getJLabel1() {
287
                if (jLabel1 == null) {
288
                        jLabel1 = new javax.swing.JLabel();
289
                        jLabel1.setText(PluginServices.getText(this, "nombre") + ":");
290
                        jLabel1.setBounds(37, 26, 40, 15);
291
                }
292

    
293
                return jLabel1;
294
        }
295

    
296
        /**
297
         * This method initializes lblTitle
298
         * 
299
         * @return javax.swing.JLabel
300
         */
301
        private javax.swing.JLabel getLblTitle() {
302
                if (lblTitle == null) {
303
                        lblTitle = new javax.swing.JLabel();
304
                        lblTitle.setText("-");
305
                        lblTitle.setPreferredSize(new java.awt.Dimension(350, 16));
306
                        lblTitle.setBounds(82, 26, 350, 16);
307
                }
308

    
309
                return lblTitle;
310
        }
311

    
312
        /**
313
         * This method initializes jScrollPane
314
         * 
315
         * @return javax.swing.JScrollPane
316
         */
317
        private javax.swing.JScrollPane getJScrollPane() {
318
                if (jScrollPane == null) {
319
                        jScrollPane = new javax.swing.JScrollPane();
320
                        jScrollPane.setViewportView(getTxtAbstract());
321
                        jScrollPane.setPreferredSize(new java.awt.Dimension(450, 60));
322
                        jScrollPane.setBounds(10, 47, 450, 267);
323
                }
324

    
325
                return jScrollPane;
326
        }
327

    
328
        /**
329
         * This method initializes txtAbstract
330
         * 
331
         * @return javax.swing.JTextArea
332
         */
333
        private javax.swing.JTextArea getTxtAbstract() {
334
                if (txtAbstract == null) {
335
                        txtAbstract = new javax.swing.JTextArea();
336
                        txtAbstract.setWrapStyleWord(true);
337
                        txtAbstract.setColumns(30);
338
                        txtAbstract.setLineWrap(true);
339
                }
340

    
341
                return txtAbstract;
342
        }
343

    
344
        /**
345
         * This method initializes panelPage1
346
         * 
347
         * @return javax.swing.JPanel
348
         */
349
        private javax.swing.JPanel getPanelPage1() {
350
                if (panelPage1 == null) {
351
                        panelPage1 = new javax.swing.JPanel();
352
                        panelPage1.setLayout(null);
353
                        panelPage1.setPreferredSize(new java.awt.Dimension(480, 220));
354
                        panelPage1.setVisible(true);
355
                        panelPage1.setBounds(15, 5, 480, 427);
356
                        panelPage1.add(getJPanel1(), null);
357
                        panelPage1.add(getJPanel(), null);
358
                }
359

    
360
                return panelPage1;
361
        }
362

    
363
        /**
364
         * This method initializes panelPage2
365
         * 
366
         * @return javax.swing.JPanel
367
         */
368
        private javax.swing.JPanel getPanelPage2() {
369
                if (wfsParamsPanel == null) {
370
                        wfsParamsPanel = new WFSParamsPanel();
371
                        wfsParamsPanel.setListenerSupport(this.listenerSupport);
372
                        wfsParamsPanel.setBounds(15, 5, 480, 428);
373
                }
374

    
375
                return wfsParamsPanel;
376
        }
377

    
378

    
379

    
380
        /**
381
         * This method initializes btnSiguiente
382
         * 
383
         * @return javax.swing.JButton
384
         */
385
        private javax.swing.JButton getBtnSiguiente() {
386
                if (btnSiguiente == null) {
387
                        btnSiguiente = new javax.swing.JButton();
388
                        btnSiguiente.setPreferredSize(new java.awt.Dimension(100, 30));
389
                        btnSiguiente.setText(PluginServices.getText(this, "siguiente"));
390
                        btnSiguiente.setBounds(395, 444, 100, 20);
391
                        btnSiguiente.addActionListener(new java.awt.event.ActionListener() {
392
                                public void actionPerformed(java.awt.event.ActionEvent e) {
393
                                        if (page > 0) {
394
                                                // si page es mayor que cero, vamos enfocando las
395
                                                // sucesivas SOLAPAS del wfsParamsPanel
396
                                                wfsParamsPanel.avanzaTab();
397
                                                page = wfsParamsPanel.getIndiceSolapaActual();
398
                                        }
399
                                        page++;
400

    
401
                                        getPanelPage1().setVisible(false);
402
                                        getPanelPage2().setVisible(true);
403
                                        activarVisualizarBotones();
404
                                }
405
                        });
406
                }
407
                return btnSiguiente;
408
        }
409

    
410
        /**
411
         * This method initializes btnAnterior
412
         * 
413
         * @return javax.swing.JButton
414
         */
415
        private javax.swing.JButton getBtnAnterior() {
416
                if (btnAnterior == null) {
417
                        btnAnterior = new javax.swing.JButton();
418
                        btnAnterior.setText(PluginServices.getText(this, "anterior"));
419
                        btnAnterior.setPreferredSize(new java.awt.Dimension(100, 30));
420
                        btnAnterior.setBounds(292, 444, 100, 20);
421
                        btnAnterior.addActionListener(new java.awt.event.ActionListener() {
422
                                public void actionPerformed(java.awt.event.ActionEvent e) {
423
                                        page --;
424
                                        if (page > 0) {
425
                                                // Tenemos que retroceder en el wfsParamsPanel
426
                                                wfsParamsPanel.retrocedeTab();
427
                                                page = wfsParamsPanel.getIndiceSolapaActual() + 1;
428
                                                activarVisualizarBotones();
429
                                        } else if (page==0){
430
                                                activarVisualizarBotones();
431
                                                page = 1;
432
                                                wfsParamsPanel.cleanupWizard();
433
                                                getLblTitle().setText("-");
434
                                                getTxtAbstract().setText("");
435
                                                wfsParamsPanel.retrocedeTab();
436
                                                getPanelPage1().setVisible(true);
437
                                                getPanelPage2().setVisible(false);
438
                                                getBtnSiguiente().setEnabled(false);
439
                                                connected = false; 
440
                                        }
441
                                        listenerSupport.callStateChanged(wfsParamsPanel.isCorretlyConfigured());
442
                                }
443
                        });
444
                }
445
                return btnAnterior;
446
        }
447

    
448
        /**
449
         * This method initializes jPanel1
450
         * 
451
         * @return javax.swing.JPanel
452
         */
453
        private javax.swing.JPanel getJPanel1() {
454
                if (jPanel1 == null) {
455
                        jPanel1 = new javax.swing.JPanel();
456
                        jPanel1.setLayout(null);
457
                        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(
458
                                        null, PluginServices.getText(this, "server"),
459
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
460
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
461
                        jPanel1.setBounds(2, 5, 477, 85);
462
                        jPanel1.add(getTxtHost(), null);
463
                        jPanel1.add(getBtnConnect(), null);
464
                }
465

    
466
                return jPanel1;
467
        }
468

    
469
        /**
470
         * Adds the gvSIG's wizard listener 
471
         * 
472
         * @param listener
473
         */
474
        public void addWizardListener(WizardListener listener) { 
475
                listenerSupport.addWizardListener(listener);
476
        }
477

    
478
        /**
479
         * Removes the gvSIG's wizard listener
480
         * 
481
         * @param listener
482
         */
483
        public void removeWizardListener(WizardListener listener) {
484
                listenerSupport.removeWizardListener(listener);
485
        }
486

    
487
        /**
488
         * Returns the Wizard's data source
489
         * 
490
         * @return
491
         */
492
        public WFSWizardData getDataSource() {
493
                return dataSource;
494
        }
495

    
496
        /**
497
         * sets the wizard's data source
498
         * 
499
         * @param source
500
         */
501
        public void setDataSource(WFSWizardData source) {
502
                dataSource = source;
503
        }
504

    
505
        /**
506
         * Returns the rectangle that contains all the others
507
         * 
508
         * Obtiene el rect?ngulo que contiene a todos los otros
509
         * 
510
         * @param rects[]  rectangulos
511
         * 
512
         * @return Rectangle2D
513
         */
514
        public static Rectangle2D getRectangle(Rectangle2D[] rects) {
515
                Rectangle2D ret = rects[0];
516

    
517
                for (int i = 1; i < rects.length; i++) {
518
                        ret.add(rects[i]);
519
                }
520

    
521
                return ret;
522
        }
523

    
524
        /**
525
         * Returns the host typed in the host text field or null if nothing is typed
526
         * or it is not a valid URL.
527
         * 
528
         * Devuelve el host que est? escrito en el cuadro de texto del host o null
529
         * en caso de que no haya nada escrito o est? mal escrito
530
         * 
531
         * @return URL del host
532
         */
533
        public URL getHost() {
534
                try {
535
                        return new URL(cmbHost.getModel().getSelectedItem().toString());
536
                } catch (MalformedURLException e) {
537
                        return null;
538
                }
539
        }
540

    
541
 
542
        public void initWizard() {
543
                setDataSource(new WFSWizardData());
544
        }
545

    
546
        public void execute() {
547
        }
548
        
549
        /* (non-Javadoc)
550
         * @see com.iver.cit.gvsig.gui.WizardPanel#getLayer()
551
         */
552
        public FLayer getLayer() {
553
                WFSWizard wfs = this;
554
//                String[] layers = wfs.getLayers();
555
                FLayer capa = null;
556
//                if (layers.length>0) {
557
//                        String layerName = wfs.getLayerName();
558
//                        String user = wfs.getUser();
559
//                        String pwd = wfs.getPassword();
560
//                        String url = wfs.getUrlConnect();
561
//                        
562
//                        boolean protocol=wfs.getProtocol();
563
//                        int numfeatures=wfs.getNumFeatures();
564
//                        int timeout=wfs.getTimeout();
565
//                        //String fields = wfs.getSqlFields();
566
//                        //String whereClause = dbWiz.getSqlWhere();
567
//            IProjection prj = getMapCtrl().getViewPort()
568
//            .getProjection();
569
//            
570
//                        
571
//                        try {
572
//                                capa = new FLyrWFS(layerName,url,user,pwd,layers,protocol,numfeatures,timeout,
573
//                                                prj);
574
//                        } catch (Exception e) {
575
//                                // TODO LWS gestionar bien este problema
576
//                                e.printStackTrace();
577
//                        }
578
//                }
579
                return capa;
580
        }
581

    
582
}