Statistics
| Revision:

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

History | View | Annotate | Download (22.1 KB)

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

    
3
import java.awt.FlowLayout;
4
import java.awt.event.KeyAdapter;
5
import java.awt.event.KeyEvent;
6
import java.awt.geom.Rectangle2D;
7
import java.net.MalformedURLException;
8
import java.net.URL;
9
import java.util.prefs.Preferences;
10

    
11
import javax.swing.DefaultComboBoxModel;
12
import org.gvsig.gui.beans.swing.JButton;
13
import javax.swing.JCheckBox;
14
import javax.swing.JLabel;
15
import javax.swing.JPanel;
16

    
17
import com.iver.andami.PluginServices;
18
import com.iver.andami.persistence.serverData.ServerDataPersistence;
19
import com.iver.cit.gvsig.fmap.drivers.wfs.FMapWFSDriver;
20
import com.iver.cit.gvsig.fmap.layers.FLayer;
21
import com.iver.cit.gvsig.fmap.layers.FLyrWFSFactory;
22
import com.iver.cit.gvsig.gui.WizardPanel;
23
import com.iver.cit.gvsig.gui.panels.WFSParamsPanel;
24
import com.iver.utiles.NotExistInXMLEntity;
25
import com.iver.utiles.XMLEntity;
26
import com.iver.utiles.swing.jcomboServer.JComboServer;
27
import com.iver.utiles.swing.jcomboServer.ServerData;
28

    
29
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
30
 *
31
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
32
 *
33
 * This program is free software; you can redistribute it and/or
34
 * modify it under the terms of the GNU General Public License
35
 * as published by the Free Software Foundation; either version 2
36
 * of the License, or (at your option) any later version.
37
 *
38
 * This program is distributed in the hope that it will be useful,
39
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
40
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
41
 * GNU General Public License for more details.
42
 *
43
 * You should have received a copy of the GNU General Public License
44
 * along with this program; if not, write to the Free Software
45
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
46
 *
47
 * For more information, contact:
48
 *
49
 *  Generalitat Valenciana
50
 *   Conselleria d'Infraestructures i Transport
51
 *   Av. Blasco Ib??ez, 50
52
 *   46010 VALENCIA
53
 *   SPAIN
54
 *
55
 *      +34 963862235
56
 *   gvsig@gva.es
57
 *      www.gvsig.gva.es
58
 *
59
 *    or
60
 *
61
 *   IVER T.I. S.A
62
 *   Salamanca 50
63
 *   46005 Valencia
64
 *   Spain
65
 *
66
 *   +34 963163400
67
 *   dac@iver.es
68
 */
69
/* CVS MESSAGES:
70
 *
71
 * $Id: WFSWizard.java 17593 2007-12-18 13:08:46Z jpiera $
72
 * $Log$
73
 * Revision 1.24  2007-02-09 14:12:38  jorpiell
74
 * Soporte para WFS 1.1 y WFS-T
75
 *
76
 * Revision 1.23  2007/01/24 13:34:17  ppiqueras
77
 * Reencuadrado JScrollPane de descripci?n de conexi?n.
78
 *
79
 * Revision 1.22  2006/12/12 10:24:45  ppiqueras
80
 * Nueva funcionalidad: Pulsando doble 'click' sobre una capa de un servidor, se carga (igual que antes), pero adem?s se avanza a la siguiente pesta?a sin tener que pulsar el bot?n 'Siguiente'.
81
 *
82
 * Revision 1.21  2006/12/11 11:00:52  ppiqueras
83
 * - Quitado el "Enter" asociado a los botones "Siguiente" y "Anterior"
84
 *
85
 * Revision 1.20  2006/12/05 09:22:59  ppiqueras
86
 * Que con la tecla "Enter" permita hacer lo mismo que pulsando con el rat?n sobre los botones "Conectar", "Siguiente" y "Anterior" en WFS.
87
 *
88
 * Revision 1.19  2006/10/31 09:38:15  jorpiell
89
 * Se ha creado una factoria para crear la capa. De ese modo no se repite c?digo desde le panel de propiedades y desde el panel de la capa
90
 *
91
 * Revision 1.18  2006/10/27 06:44:56  jorpiell
92
 * Se han cambiado algunas etiquetas de texto que sal?an recortadas
93
 *
94
 * Revision 1.17  2006/10/10 12:55:06  jorpiell
95
 * Se ha a?adido el soporte de features complejas
96
 *
97
 * Revision 1.16  2006/10/02 09:09:45  jorpiell
98
 * Cambios del 10 copiados al head
99
 *
100
 * Revision 1.14.2.3  2006/09/29 14:12:53  luisw2
101
 * CRSFactory.getCRS substitutes ProjectionPool.get
102
 *
103
 * Revision 1.14.2.2  2006/09/28 08:54:01  jorpiell
104
 * Ya se puede reproyectar
105
 *
106
 * Revision 1.14.2.1  2006/09/27 11:12:14  jorpiell
107
 * Hay que comprobar que se han devuelto un n?mero de features menor que el n?mero m?ximo permitido
108
 *
109
 * Revision 1.14  2006/09/03 13:25:04  jorpiell
110
 * Los servidores se guardan ahora en el plugin-persistence como WFS
111
 *
112
 * Revision 1.13  2006/08/30 07:42:29  jorpiell
113
 * Se le asigna a la capa creada una proyecci?n concreta. Si esto no se hace, al exportar a postigis se produce un error.
114
 *
115
 * Revision 1.12  2006/07/21 11:50:31  jaume
116
 * improved appearance
117
 *
118
 * Revision 1.11  2006/07/11 11:55:41  jorpiell
119
 * Se ha a?adido el fallo de tipo de dato en el log
120
 *
121
 * Revision 1.10  2006/06/15 11:17:06  jorpiell
122
 * Se ha encontrado la forma de comprobar cuando se prodicia un error de parseo al hacer un hasnext (en la feature). Se atrapa y se lanza la excepci?n hacia arriba
123
 *
124
 * Revision 1.9  2006/06/14 08:46:24  jorpiell
125
 * Se tiene en cuanta la opcion para refrescar las capabilities
126
 *
127
 * Revision 1.8  2006/05/25 16:22:59  jorpiell
128
 * Se limpia el panel cada vez que se conecta con un servidor distinto
129
 *
130
 * Revision 1.7  2006/05/25 16:01:51  jorpiell
131
 * Se ha a?adido la funcionalidad para eliminar el namespace de los tipos de atributos
132
 *
133
 * Revision 1.6  2006/05/25 10:29:07  jorpiell
134
 * A?adido el checkbox para que se  haga uso de la cache
135
 *
136
 * Revision 1.5  2006/05/24 12:08:53  jorpiell
137
 * Cambiado el nombre de la pesta?a a WFS
138
 *
139
 * Revision 1.4  2006/05/23 13:21:59  jorpiell
140
 * Si hay alg?n problema en la carga se muestra un mensaje de error
141
 *
142
 * Revision 1.3  2006/05/23 08:09:53  jorpiell
143
 * Se ha cambiado la forma en la que se leian los valores seleccionados en los paneles y se ha cambiado el comportamiento de los botones
144
 *
145
 * Revision 1.2  2006/05/19 12:58:03  jorpiell
146
 * Modificados algunos paneles
147
 *
148
 * Revision 1.1  2006/04/19 12:50:16  jorpiell
149
 * Primer commit de la aplicaci?n. Se puede hacer un getCapabilities y ver el mensaje de vienvenida del servidor
150
 *
151
 *
152
 */
153
/**
154
 * @author Jorge Piera Llodr? (piera_jor@gva.es)
155
 */
156
public class WFSWizard extends WizardPanel {
157
        private int page = 0;
158
        private boolean connected = false;
159
        private JComboServer cmbHost = null;
160
        private JButton btnConnect = null;
161
        private javax.swing.JPanel jPanel = null;
162
        private javax.swing.JLabel jLabel1 = null;
163
        private javax.swing.JLabel lblTitle = null;
164
        private javax.swing.JScrollPane jScrollPane = null;
165
        private javax.swing.JTextArea txtAbstract = null;
166
        private javax.swing.JPanel panelPage1 = null;
167
        private javax.swing.JPanel pnlName = null;
168
        private JButton btnSiguiente = null;
169
        private JButton btnAnterior = null;
170
        private javax.swing.JPanel jPanel1 = null;
171
        private WizardListenerSupport listenerSupport = new WizardListenerSupport();
172
        private WFSParamsPanel wfsParamsPanel = null;
173
        private WFSWizardData dataSource = null;
174
        private JLabel lblServerType = null;
175
        private JLabel lblServerTypeValue = null;
176
        private JCheckBox chkCaching = null;
177
        private static Preferences fPrefs = Preferences.userRoot().node( "gvsig.wfs-wizard" );
178
        private boolean refreshing = fPrefs.getBoolean("refresh_capabilities", false);
179

    
180
        /**
181
         * This is the default constructor
182
         */
183
        public WFSWizard() {
184
                super();
185
                initialize();
186
        }
187

    
188
        /**
189
         * This method initializes this
190
         */
191
        private void initialize() {
192
                setTabName("WFS");
193
                lblServerType = new JLabel();
194
                lblServerType.setBounds(20, 444, 100, 20);
195
                lblServerType.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
196
                lblServerType.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
197
                lblServerType.setFont(new java.awt.Font("Arial", java.awt.Font.PLAIN, 11));
198
                lblServerType.setText(PluginServices.getText(this, "server_type")+":");
199
                lblServerTypeValue = new JLabel();
200
                lblServerTypeValue.setBounds(128, 444, 148, 20);
201
                lblServerTypeValue.setFont(new java.awt.Font("Arial", java.awt.Font.BOLD, 11));
202
                lblServerTypeValue.setText("-");
203
                this.setLayout(null);
204
                this.setPreferredSize(new java.awt.Dimension(750, 320));
205
                this.setVisible(true);
206
                this.setSize(518, 468);
207
                this.add(getPanelPage1(), null);
208
                this.add(getPanelPage2(), null);
209
                this.add(getBtnAnterior(), null);
210
                this.add(getBtnSiguiente(), null);
211
                this.add(lblServerType, null);
212
                this.add(lblServerTypeValue, null);
213
                activarVisualizarBotones();
214
        }
215

    
216
        /**
217
         * Adds the host addres to a persistent data storage.
218
         *
219
         * con addHost guardamos la informaci?n del combo de servidores en un
220
         * almac?n persistente
221
         *
222
         * @param host
223
         */
224
        private void addHost(String host) {
225
                host = host.trim();
226
                ServerDataPersistence persistence = new ServerDataPersistence(this,ServerData.SERVER_TYPE_WFS);
227
                persistence.addServerData(new ServerData(host, ServerData.SERVER_TYPE_WFS));
228
        }
229

    
230
        /**
231
         * Fills up the initial WCSWizard controls.
232
         *
233
         * Rellena los primeros controles del WCS Wizard
234
         *
235
         * jaume
236
         */
237
        private void rellenarControles() {
238
                try {
239
                        String host = cmbHost.getModel().getSelectedItem().toString();
240

    
241
                        dataSource.setHost(new URL(host), refreshing);
242
                        addHost(host);
243
                        getLblTitle().setText(dataSource.getTitle());
244
                        getTxtAbstract().setText(dataSource.getAbstract());
245
                        lblServerTypeValue.setText(dataSource.getServerType());
246
                        wfsParamsPanel.setWizardData(dataSource);
247
                        connected = true;
248
                        activarVisualizarBotones();
249
                } catch (Exception e) {
250
                        listenerSupport.callError(e);
251
                        e.printStackTrace();
252
                }
253
        }
254

    
255
        /**
256
         * Enables or disables the Next and Previous buttons according with the current
257
         * page and the enabled pages.
258
         */
259
        private void activarVisualizarBotones() {
260
                if (page == 0) {
261
                        getBtnAnterior().setEnabled(false);
262
                        getBtnSiguiente().setVisible(true);
263
                        if (connected) {
264
                                getBtnSiguiente().setEnabled(true);
265
                        } else {
266
                                getBtnSiguiente().setEnabled(false);
267
                        }
268
                } else if (page < wfsParamsPanel.getNumTabs()) {
269
                        getBtnSiguiente().setEnabled(true);
270
                        getBtnSiguiente().setVisible(true);
271
                        getBtnAnterior().setEnabled(true);
272
                        getBtnAnterior().setVisible(true);
273
                        if (wfsParamsPanel.nextPageEnabled()==-1){
274
                            getBtnSiguiente().setEnabled(false);
275
                        }
276
                        listenerSupport.callStateChanged(wfsParamsPanel.isCorretlyConfigured());
277
                } else if (page == wfsParamsPanel.getNumTabs()) {
278
                        getBtnSiguiente().setVisible(false);
279
                        getBtnSiguiente().setEnabled(false);
280
                        listenerSupport.callStateChanged(wfsParamsPanel
281
                                        .isCorretlyConfigured());
282
                }
283

    
284
        }
285

    
286

    
287

    
288
        /**
289
         * This method initializes txtHost from the persistent data storage
290
         *
291
         * @return javax.swing.JTextField
292
         */
293
        private javax.swing.JComboBox getTxtHost() {
294
                if (cmbHost == null) {
295
                        cmbHost = new JComboServer();
296
                        cmbHost.setModel(new DefaultComboBoxModel());
297
                        cmbHost.setPreferredSize(new java.awt.Dimension(350, 20));
298
                        cmbHost.setBounds(11, 26, 454, 20);
299
                        cmbHost.setEditable(true);
300

    
301
                        ServerDataPersistence persistence = new ServerDataPersistence(this,ServerData.SERVER_TYPE_WFS);
302
                        ServerData[] servers = persistence.getArrayOfServerData();
303

    
304
                        if (servers.length == 0){
305
                                PluginServices ps = PluginServices.getPluginServices(this);
306
                                XMLEntity xml = ps.getPersistentXML();
307
                                try {
308
                                        String[] oldServers = xml.getStringArrayProperty("wfs-servers");
309
                                        servers = new ServerData[oldServers.length];
310
                                        for (int i=0; i<oldServers.length; i++) {
311
                                                servers[i] = new ServerData(oldServers[i],ServerData.SERVER_TYPE_WMS);
312
                                        }
313
                                        xml.remove("wfs-servers");
314
                                        ps.setPersistentXML(xml);
315
                                } catch (NotExistInXMLEntity e) {
316
                                        // Old servers doesn't exist
317
                                        servers = new ServerData[2];
318
                                        servers[0] = new ServerData("http://www2.dmsolutions.ca/cgi-bin/mswfs_gmap",ServerData.SERVER_TYPE_WFS);
319
                                        servers[1] = new ServerData("http://www.idee.es/IDEE-WFS/ogcwebservice",ServerData.SERVER_TYPE_WFS);
320
                                }
321

    
322
                                for (int i=0 ; i<servers.length ; i++){
323
                                        persistence.addServerData(servers[i]);
324
                                }
325
                                persistence.setPersistent();
326
                        }
327

    
328
                        cmbHost.setServerList(servers);
329

    
330
                        // Allows that user can start the connection to the written server pressing the 'Enter' key
331
                        cmbHost.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() {
332
                                /*
333
                                 * (non-Javadoc)
334
                                 * @see java.awt.event.KeyAdapter#keyReleased(java.awt.event.KeyEvent)
335
                                 */
336
                                public void keyReleased(KeyEvent e) {
337
                                        if (e.getKeyCode() == KeyEvent.VK_ENTER) {
338
                                                rellenarControles();
339
                                                getBtnSiguiente().requestFocus(); // Sets focus to the 'next' button
340
                                        }
341
                                }
342
                        });
343
                }
344
                return cmbHost;
345
        }
346

    
347

    
348
        /**
349
         * This method initializes btnDetalles
350
         *
351
         * @return JButton
352
         */
353
        private JButton getBtnConnect() {
354
                if (btnConnect == null) {
355
                        btnConnect = new JButton();
356
                        btnConnect.setPreferredSize(new java.awt.Dimension(100, 20));
357
                        btnConnect.setBounds(366, 50, 100, 20);
358
                        btnConnect.setText(PluginServices.getText(this, "connect"));
359
                        btnConnect.addActionListener(new java.awt.event.ActionListener() {
360
                                public void actionPerformed(java.awt.event.ActionEvent e) {
361
                                        btnConnect.setEnabled(false); // This avoids multiple contiguous actions
362
                                        rellenarControles();
363
                                        btnConnect.setEnabled(true); // This avoids multiple contiguous actions
364
                                        wfsParamsPanel.enableDefaultTabs(false);
365
                                        wfsParamsPanel.refreshCapabilitiesInfo();
366
                                }
367
                        });
368

    
369
                        // If user press the 'Enter' key -> advance
370
                        btnConnect.addKeyListener(new KeyAdapter() {
371
                                /*
372
                                 *  (non-Javadoc)
373
                                 * @see java.awt.event.KeyListener#keyReleased(java.awt.event.KeyEvent)
374
                                 */
375
                                public void keyReleased(KeyEvent e) {
376
                                        // TODO Auto-generated method stub
377
                                        if (e.getKeyCode() == KeyEvent.VK_ENTER) {
378
                                                btnConnect.doClick();
379
                                                getBtnSiguiente().requestFocus();
380
                                        }
381
                                }
382
                        });
383
                }
384

    
385
                return btnConnect;
386
        }
387

    
388
        /**
389
         * This method initializes jPanel
390
         *
391
         * @return javax.swing.JPanel
392
         */
393
        private javax.swing.JPanel getJPanel() {
394
                if (jPanel == null) {
395
                        jPanel = new javax.swing.JPanel();
396
                        jPanel.setLayout(null);
397
                        jPanel.setPreferredSize(new java.awt.Dimension(470, 130));
398
                        jPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(null,
399
                                        PluginServices.getText(this, "descripcion"),
400
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
401
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null,
402
                                        null));
403
                        jPanel.setBounds(2, 96, 477, 324);
404
                        jPanel.add(getJScrollPane(), null);
405
                        jPanel.add(getPnlName(), null);
406
                }
407

    
408
                return jPanel;
409
        }
410

    
411
        /**
412
         * This method initializes pnlName
413
         *
414
         * @return javax.swing.JPanel
415
         */
416
        private JPanel getPnlName() {
417
                if (pnlName == null) {
418
                        pnlName = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 0));
419
                        pnlName.setBounds(new java.awt.Rectangle(9,19,452,24));
420
                        pnlName.add(getJLabel1(), null);
421
                        pnlName.add(getLblTitle(), null);
422
                }
423
                return pnlName;
424
        }
425

    
426
        /**
427
         * This method initializes jLabel1
428
         *
429
         * @return javax.swing.JLabel
430
         */
431
        private javax.swing.JLabel getJLabel1() {
432
                if (jLabel1 == null) {
433
                        jLabel1 = new javax.swing.JLabel();
434
                        jLabel1.setText(PluginServices.getText(this, "nombre") + ":");
435
                        jLabel1.setBounds(15, 26, 65, 15);
436
                }
437

    
438
                return jLabel1;
439
        }
440

    
441
        /**
442
         * This method initializes lblTitle
443
         *
444
         * @return javax.swing.JLabel
445
         */
446
        private javax.swing.JLabel getLblTitle() {
447
                if (lblTitle == null) {
448
                        lblTitle = new javax.swing.JLabel();
449
                        lblTitle.setText("-");
450
                        lblTitle.setPreferredSize(new java.awt.Dimension(350, 16));
451
                        lblTitle.setBounds(82, 26, 350, 16);
452
                }
453

    
454
                return lblTitle;
455
        }
456

    
457
        /**
458
         * This method initializes jScrollPane
459
         *
460
         * @return javax.swing.JScrollPane
461
         */
462
        private javax.swing.JScrollPane getJScrollPane() {
463
                if (jScrollPane == null) {
464
                        jScrollPane = new javax.swing.JScrollPane();
465
                        jScrollPane.setViewportView(getTxtAbstract());
466
                        jScrollPane.setPreferredSize(new java.awt.Dimension(450, 60));
467
                        jScrollPane.setBounds(10, 47, 457, 267);
468
                }
469

    
470
                return jScrollPane;
471
        }
472

    
473
        /**
474
         * This method initializes txtAbstract
475
         *
476
         * @return javax.swing.JTextArea
477
         */
478
        private javax.swing.JTextArea getTxtAbstract() {
479
                if (txtAbstract == null) {
480
                        txtAbstract = new javax.swing.JTextArea();
481
                        txtAbstract.setWrapStyleWord(true);
482
                        txtAbstract.setColumns(30);
483
                        txtAbstract.setLineWrap(true);
484
                }
485

    
486
                return txtAbstract;
487
        }
488

    
489
        /**
490
         * This method initializes panelPage1
491
         *
492
         * @return javax.swing.JPanel
493
         */
494
        private javax.swing.JPanel getPanelPage1() {
495
                if (panelPage1 == null) {
496
                        panelPage1 = new javax.swing.JPanel();
497
                        panelPage1.setLayout(null);
498
                        panelPage1.setPreferredSize(new java.awt.Dimension(480, 220));
499
                        panelPage1.setVisible(true);
500
                        panelPage1.setBounds(15, 5, 480, 427);
501
                        panelPage1.add(getJPanel1(), null);
502
                        panelPage1.add(getJPanel(), null);
503
                }
504

    
505
                return panelPage1;
506
        }
507

    
508
        /**
509
         * This method initializes panelPage2
510
         *
511
         * @return javax.swing.JPanel
512
         */
513
        private javax.swing.JPanel getPanelPage2() {
514
                if (wfsParamsPanel == null) {
515
                        wfsParamsPanel = new WFSParamsPanel();
516
                        wfsParamsPanel.setListenerSupport(this.listenerSupport);
517
                        wfsParamsPanel.setBounds(0, 5, 510, 428);
518
                        wfsParamsPanel.getJTabbedPane().addMouseListener(
519
                                        new java.awt.event.MouseAdapter() {
520
                                                public void mouseClicked(java.awt.event.MouseEvent e) {
521
                                                        page = wfsParamsPanel.currentPage() + 1;
522
                                                        activarVisualizarBotones();
523
                                                }
524
                                        });
525
                }
526

    
527
                return wfsParamsPanel;
528
        }
529

    
530

    
531

    
532
        /**
533
         * This method initializes btnSiguiente
534
         *
535
         * @return JButton
536
         */
537
        private JButton getBtnSiguiente() {
538
                if (btnSiguiente == null) {
539
                        btnSiguiente = new JButton();
540
                        btnSiguiente.setPreferredSize(new java.awt.Dimension(100, 30));
541
                        btnSiguiente.setBounds(395, 444, 100, 20);
542
                        btnSiguiente.setText(PluginServices.getText(this, "siguiente"));
543
                        btnSiguiente.addActionListener(new java.awt.event.ActionListener() {
544
                                public void actionPerformed(java.awt.event.ActionEvent e) {
545
                                        if (page > 0) {
546
                                                // si page es mayor que cero, vamos enfocando las
547
                                                // sucesivas SOLAPAS del wfsParamsPanel
548
                                                wfsParamsPanel.avanzaTab();
549
                                                page = wfsParamsPanel.getSelectedIndex();
550
                                        }
551
                                        page++;
552

    
553
                                        getPanelPage1().setVisible(false);
554
                                        getPanelPage2().setVisible(true);
555
                                        activarVisualizarBotones();
556
                                }
557
                        });
558
                }
559
                return btnSiguiente;
560
        }
561

    
562
        /**
563
         * This method initializes btnAnterior
564
         *
565
         * @return JButton
566
         */
567
        private JButton getBtnAnterior() {
568
                if (btnAnterior == null) {
569
                        btnAnterior = new JButton();
570
                        btnAnterior.setBounds(292, 444, 100, 20);
571
                        btnAnterior.setText(PluginServices.getText(this, "anterior"));
572
                        btnAnterior.setPreferredSize(new java.awt.Dimension(100, 30));
573
                        btnAnterior.addActionListener(new java.awt.event.ActionListener() {
574
                                public void actionPerformed(java.awt.event.ActionEvent e) {
575
                                        page --;
576
                                        if (page > 0) {
577
                                                // Tenemos que retroceder en el wfsParamsPanel
578
                                                wfsParamsPanel.retrocedeTab();
579
                                                page = wfsParamsPanel.getSelectedIndex() + 1;
580
                                                activarVisualizarBotones();
581
                                        } else if (page==0){
582
                                                activarVisualizarBotones();
583
                                                page = 1;
584
                                                wfsParamsPanel.enableDefaultTabs(false);
585
                                                getLblTitle().setText("-");
586
                                                getTxtAbstract().setText("");
587
                                                wfsParamsPanel.retrocedeTab();
588
                                                getPanelPage1().setVisible(true);
589
                                                getPanelPage2().setVisible(false);
590
                                                getBtnSiguiente().setEnabled(false);
591
                                                connected = false;
592
                                        }
593
                                        listenerSupport.callStateChanged(wfsParamsPanel.isCorretlyConfigured());
594
                                }
595
                        });
596
                }
597
                return btnAnterior;
598
        }
599

    
600
        /**
601
         * This method initializes jPanel1
602
         *
603
         * @return javax.swing.JPanel
604
         */
605
        private javax.swing.JPanel getJPanel1() {
606
                if (jPanel1 == null) {
607
                        jPanel1 = new javax.swing.JPanel();
608
                        jPanel1.setLayout(null);
609
                        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(
610
                                        null, PluginServices.getText(this, "server"),
611
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
612
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
613
                        jPanel1.setBounds(2, 5, 477, 85);
614
                        jPanel1.add(getTxtHost(), null);
615
                        jPanel1.add(getBtnConnect(), null);
616
                        jPanel1.add(getChkCaching(), null);
617
                }
618

    
619
                return jPanel1;
620
        }
621

    
622
        /**
623
         * Adds the gvSIG's wizard listener
624
         *
625
         * @param listener
626
         */
627
        public void addWizardListener(WizardListener listener) {
628
                listenerSupport.addWizardListener(listener);
629
        }
630

    
631
        /**
632
         * Removes the gvSIG's wizard listener
633
         *
634
         * @param listener
635
         */
636
        public void removeWizardListener(WizardListener listener) {
637
                listenerSupport.removeWizardListener(listener);
638
        }
639

    
640
        /**
641
         * Returns the Wizard's data source
642
         *
643
         * @return
644
         */
645
        public WFSWizardData getDataSource() {
646
                return dataSource;
647
        }
648

    
649
        /**
650
         * sets the wizard's data source
651
         *
652
         * @param source
653
         */
654
        public void setDataSource(WFSWizardData source) {
655
                dataSource = source;
656
        }
657

    
658
        /**
659
         * Returns the rectangle that contains all the others
660
         *
661
         * Obtiene el rect?ngulo que contiene a todos los otros
662
         *
663
         * @param rects[]  rectangulos
664
         *
665
         * @return Rectangle2D
666
         */
667
        public static Rectangle2D getRectangle(Rectangle2D[] rects) {
668
                Rectangle2D ret = rects[0];
669

    
670
                for (int i = 1; i < rects.length; i++) {
671
                        ret.add(rects[i]);
672
                }
673

    
674
                return ret;
675
        }
676

    
677
        /**
678
         * Returns the host typed in the host text field or null if nothing is typed
679
         * or it is not a valid URL.
680
         *
681
         * Devuelve el host que est? escrito en el cuadro de texto del host o null
682
         * en caso de que no haya nada escrito o est? mal escrito
683
         *
684
         * @return URL del host
685
         */
686
        public URL getHost() {
687
                try {
688
                        return new URL(cmbHost.getModel().getSelectedItem().toString());
689
                } catch (MalformedURLException e) {
690
                        return null;
691
                }
692
        }
693

    
694

    
695
        public void initWizard() {
696
                setDataSource(new WFSWizardData());
697
        }
698

    
699
        public void execute() {
700
        }
701

    
702
        /* (non-Javadoc)
703
         * @see com.iver.cit.gvsig.gui.WizardPanel#getLayer()
704
         */
705
        public FLayer getLayer() {
706
                FLayer layer = wfsParamsPanel.getLayer();
707
                URL host = getHost();
708
                String onlineResource = dataSource.getOnlineResource();
709
                FMapWFSDriver driver = dataSource.getDriver();
710
                return new FLyrWFSFactory().getFLyrWFS(layer,host,onlineResource,driver,true,true);
711
        }
712

    
713
        /**
714
         * This method initializes chkCaching
715
         *
716
         * @return javax.swing.JCheckBox
717
         */
718
        private JCheckBox getChkCaching() {
719
                if (chkCaching == null) {
720
                        chkCaching = new JCheckBox();
721
                        chkCaching.setBounds(7, 51, 349, 20);
722
                        chkCaching.setText(PluginServices.getText(this, "refresh_capabilities"));
723
                        chkCaching.setToolTipText(PluginServices.getText(this, "refresh_capabilities_tooltip"));
724
                        chkCaching.setSelected(refreshing);
725
                        chkCaching.addItemListener(new java.awt.event.ItemListener() {
726
                                public void itemStateChanged(java.awt.event.ItemEvent e) {
727
                                        refreshing = chkCaching.isSelected();
728
                                }
729
                        });
730
                        chkCaching.addActionListener(new java.awt.event.ActionListener() {
731
                                public void actionPerformed(java.awt.event.ActionEvent e) {
732
                                        chkCaching.setEnabled(false); // This avoids multiple contiguous actions
733
                                        fPrefs.putBoolean("refresh_capabilities", chkCaching.isSelected());
734
                                        chkCaching.setEnabled(true); // This avoids multiple contiguous actions
735
                                }
736
                        });
737

    
738
                }
739
                return chkCaching;
740
        }
741

    
742
        /**
743
         * This method makes the 'btnSiguiente' to be clicked
744
         */
745
        public void doClickOnNextButton() {
746
                getBtnSiguiente().doClick();
747
        }
748
}