Statistics
| Revision:

svn-gvsig-desktop / branches / v2_0_0_prep / extensions / extWFS2 / src / com / iver / cit / gvsig / gui / wizards / WFSWizard.java @ 29209

History | View | Annotate | Download (24.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 javax.swing.JCheckBox;
13
import javax.swing.JLabel;
14
import javax.swing.JOptionPane;
15
import javax.swing.JPanel;
16
import javax.swing.JTabbedPane;
17
import javax.swing.event.ChangeEvent;
18
import javax.swing.event.ChangeListener;
19

    
20
import org.cresques.cts.IProjection;
21
import org.gvsig.fmap.crs.CRSFactory;
22
import org.gvsig.fmap.dal.DALLocator;
23
import org.gvsig.fmap.dal.DataManager;
24
import org.gvsig.fmap.dal.DataStoreParameters;
25
import org.gvsig.fmap.dal.serverexplorer.wfs.WFSServerExplorer;
26
import org.gvsig.fmap.dal.serverexplorer.wfs.WFSServerExplorerParameters;
27
import org.gvsig.fmap.mapcontext.MapContext;
28
import org.gvsig.fmap.mapcontext.layers.FLayer;
29
import org.gvsig.gui.beans.Messages;
30
import org.gvsig.gui.beans.panelGroup.PanelGroupManager;
31
import org.gvsig.gui.beans.swing.JButton;
32
import org.gvsig.tools.exception.BaseException;
33

    
34
import com.iver.andami.PluginServices;
35
import com.iver.andami.messages.NotificationManager;
36
import com.iver.andami.persistence.serverData.ServerDataPersistence;
37
import com.iver.cit.gvsig.gui.WizardPanel;
38
import com.iver.cit.gvsig.gui.panels.WFSParamsPanel;
39
import com.iver.cit.gvsig.panelGroup.loaders.PanelGroupLoaderFromExtensionPoint;
40
import com.iver.utiles.NotExistInXMLEntity;
41
import com.iver.utiles.XMLEntity;
42
import com.iver.utiles.swing.jcomboServer.JComboServer;
43
import com.iver.utiles.swing.jcomboServer.ServerData;
44

    
45
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
46
 *
47
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
48
 *
49
 * This program is free software; you can redistribute it and/or
50
 * modify it under the terms of the GNU General Public License
51
 * as published by the Free Software Foundation; either version 2
52
 * of the License, or (at your option) any later version.
53
 *
54
 * This program is distributed in the hope that it will be useful,
55
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
56
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
57
 * GNU General Public License for more details.
58
 *
59
 * You should have received a copy of the GNU General Public License
60
 * along with this program; if not, write to the Free Software
61
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
62
 *
63
 * For more information, contact:
64
 *
65
 *  Generalitat Valenciana
66
 *   Conselleria d'Infraestructures i Transport
67
 *   Av. Blasco Ib??ez, 50
68
 *   46010 VALENCIA
69
 *   SPAIN
70
 *
71
 *      +34 963862235
72
 *   gvsig@gva.es
73
 *      www.gvsig.gva.es
74
 *
75
 *    or
76
 *
77
 *   IVER T.I. S.A
78
 *   Salamanca 50
79
 *   46005 Valencia
80
 *   Spain
81
 *
82
 *   +34 963163400
83
 *   dac@iver.es
84
 */
85
/* CVS MESSAGES:
86
 *
87
 * $Id: WFSWizard.java 24753 2008-11-04 15:21:32Z jpiera $
88
 * $Log$
89
 * Revision 1.24  2007-02-09 14:12:38  jorpiell
90
 * Soporte para WFS 1.1 y WFS-T
91
 *
92
 * Revision 1.23  2007/01/24 13:34:17  ppiqueras
93
 * Reencuadrado JScrollPane de descripci?n de conexi?n.
94
 *
95
 * Revision 1.22  2006/12/12 10:24:45  ppiqueras
96
 * 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'.
97
 *
98
 * Revision 1.21  2006/12/11 11:00:52  ppiqueras
99
 * - Quitado el "Enter" asociado a los botones "Siguiente" y "Anterior"
100
 *
101
 * Revision 1.20  2006/12/05 09:22:59  ppiqueras
102
 * Que con la tecla "Enter" permita hacer lo mismo que pulsando con el rat?n sobre los botones "Conectar", "Siguiente" y "Anterior" en WFS.
103
 *
104
 * Revision 1.19  2006/10/31 09:38:15  jorpiell
105
 * 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
106
 *
107
 * Revision 1.18  2006/10/27 06:44:56  jorpiell
108
 * Se han cambiado algunas etiquetas de texto que sal?an recortadas
109
 *
110
 * Revision 1.17  2006/10/10 12:55:06  jorpiell
111
 * Se ha a?adido el soporte de features complejas
112
 *
113
 * Revision 1.16  2006/10/02 09:09:45  jorpiell
114
 * Cambios del 10 copiados al head
115
 *
116
 * Revision 1.14.2.3  2006/09/29 14:12:53  luisw2
117
 * CRSFactory.getCRS substitutes ProjectionPool.get
118
 *
119
 * Revision 1.14.2.2  2006/09/28 08:54:01  jorpiell
120
 * Ya se puede reproyectar
121
 *
122
 * Revision 1.14.2.1  2006/09/27 11:12:14  jorpiell
123
 * Hay que comprobar que se han devuelto un n?mero de features menor que el n?mero m?ximo permitido
124
 *
125
 * Revision 1.14  2006/09/03 13:25:04  jorpiell
126
 * Los servidores se guardan ahora en el plugin-persistence como WFS
127
 *
128
 * Revision 1.13  2006/08/30 07:42:29  jorpiell
129
 * Se le asigna a la capa creada una proyecci?n concreta. Si esto no se hace, al exportar a postigis se produce un error.
130
 *
131
 * Revision 1.12  2006/07/21 11:50:31  jaume
132
 * improved appearance
133
 *
134
 * Revision 1.11  2006/07/11 11:55:41  jorpiell
135
 * Se ha a?adido el fallo de tipo de dato en el log
136
 *
137
 * Revision 1.10  2006/06/15 11:17:06  jorpiell
138
 * 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
139
 *
140
 * Revision 1.9  2006/06/14 08:46:24  jorpiell
141
 * Se tiene en cuanta la opcion para refrescar las capabilities
142
 *
143
 * Revision 1.8  2006/05/25 16:22:59  jorpiell
144
 * Se limpia el panel cada vez que se conecta con un servidor distinto
145
 *
146
 * Revision 1.7  2006/05/25 16:01:51  jorpiell
147
 * Se ha a?adido la funcionalidad para eliminar el namespace de los tipos de atributos
148
 *
149
 * Revision 1.6  2006/05/25 10:29:07  jorpiell
150
 * A?adido el checkbox para que se  haga uso de la cache
151
 *
152
 * Revision 1.5  2006/05/24 12:08:53  jorpiell
153
 * Cambiado el nombre de la pesta?a a WFS
154
 *
155
 * Revision 1.4  2006/05/23 13:21:59  jorpiell
156
 * Si hay alg?n problema en la carga se muestra un mensaje de error
157
 *
158
 * Revision 1.3  2006/05/23 08:09:53  jorpiell
159
 * 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
160
 *
161
 * Revision 1.2  2006/05/19 12:58:03  jorpiell
162
 * Modificados algunos paneles
163
 *
164
 * Revision 1.1  2006/04/19 12:50:16  jorpiell
165
 * Primer commit de la aplicaci?n. Se puede hacer un getCapabilities y ver el mensaje de vienvenida del servidor
166
 *
167
 *
168
 */
169

    
170
/**
171
 * <p>Wizard that allows add a new WFS layer.</p>
172
 * 
173
 * @author Jorge Piera Llodr? (piera_jor@gva.es)
174
 * @author Pablo Piqueras Bartolom? (pablo.piqueras@iver.es)
175
 */
176
public class WFSWizard extends WizardPanel {
177
        private int page;
178
        private boolean connected = false;
179
        private JComboServer cmbHost = null;
180
        private JButton btnConnect = null;
181
        private javax.swing.JPanel jPanel = null;
182
        private javax.swing.JLabel jLabel1 = null;
183
        private javax.swing.JLabel lblTitle = null;
184
        private javax.swing.JScrollPane jScrollPane = null;
185
        private javax.swing.JTextArea txtAbstract = null;
186
        private javax.swing.JPanel panelPage1 = null;
187
        private javax.swing.JPanel pnlName = null;
188
        private JButton btnSiguiente = null;
189
        private JButton btnAnterior = null;
190
        private javax.swing.JPanel jPanel1 = null;
191
        private WFSParamsPanel wfsParamsPanel = null;
192
        private WFSServerExplorer serverExplorer = null;
193
        private JLabel lblServerType = null;
194
        private JLabel lblServerTypeValue = null;
195
        private JCheckBox chkCaching = null;
196
        private static Preferences fPrefs = Preferences.userRoot().node( "gvsig.wfs-wizard" );
197
        private boolean refreshing = fPrefs.getBoolean("refresh_capabilities", false);
198
        private final String wfs_properties_extensionpoint_name = "WFSPropertiesDialog";
199

    
200
        /**
201
         * This is the default constructor
202
         */
203
        public WFSWizard() {
204
                super();
205
                initialize();
206
        }
207

    
208
        /**
209
         * This method initializes this
210
         */
211
        private void initialize() {
212
                setTabName(PluginServices.getText(this, "WFS"));
213

    
214
                lblServerType = new JLabel();
215
                lblServerType.setBounds(20, 444, 100, 20);
216
                lblServerType.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
217
                lblServerType.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
218
                lblServerType.setFont(new java.awt.Font("Arial", java.awt.Font.PLAIN, 11));
219
                lblServerType.setText(PluginServices.getText(this, "server_type")+":");
220
                lblServerTypeValue = new JLabel();
221
                lblServerTypeValue.setBounds(128, 444, 148, 20);
222
                lblServerTypeValue.setFont(new java.awt.Font("Arial", java.awt.Font.BOLD, 11));
223
                lblServerTypeValue.setText("-");
224

    
225
                this.setLayout(null);
226
//                this.setPreferredSize(new java.awt.Dimension(750, 320));
227
//                this.setPreferredSize(new Dimension(750, 320));
228
                this.setVisible(true);
229
//                this.setSize(518, 468);
230

    
231
                this.add(getPanelPage1(), null);
232
                page = 0;
233
                this.add(getPanelPage2(), null);
234
        
235
                this.add(getBtnAnterior(), null);
236
                this.add(getBtnSiguiente(), null);
237

    
238
                this.add(lblServerType, null);
239
                this.add(lblServerTypeValue, null);
240

    
241
                uptateNavigatingButtons();
242
        }
243

    
244
        /**
245
         * Adds the host addres to a persistent data storage.
246
         *
247
         * @param host the host of the server
248
         */
249
        private void addHost(String host) {
250
                host = host.trim();
251
                ServerDataPersistence persistence = new ServerDataPersistence(this,ServerData.SERVER_TYPE_WFS);
252
                persistence.addServerData(new ServerData(host, ServerData.SERVER_TYPE_WFS));
253
        }
254

    
255
        /**
256
         * Fills up the initial WCSWizard controls.
257
         *
258
         * jaume
259
         */
260
        private void rellenarControles() throws Exception{
261
                try {
262
                        String url = cmbHost.getModel().getSelectedItem().toString();
263
                                                
264
                        DataManager dataManager = DALLocator.getDataManager();
265
                        //Create the server explorer parameters
266
                        WFSServerExplorerParameters parameters = 
267
                                (WFSServerExplorerParameters) dataManager
268
                                        .createServerExplorerParameters(WFSServerExplorer.NAME);                        
269
                        parameters.setUrl(url);
270
                        addHost(url);
271
                        //Create the server explorer
272
                        serverExplorer = (WFSServerExplorer)dataManager.createServerExplorer(parameters);
273
                        
274
                        //Update the forms
275
                        getLblTitle().setText(serverExplorer.getTitle());
276
                        getTxtAbstract().setText(serverExplorer.getAbstract());
277
                        lblServerTypeValue.setText(serverExplorer.getServerType());
278
                        wfsParamsPanel.setServerExplorer(serverExplorer);
279
                        connected = true;
280
                } catch(Exception e) {                                
281
                        throw e;
282
                }
283
        }
284

    
285
        /**
286
         * Enables or disables the Next and Previous buttons according with the current
287
         * page and the enabled pages.
288
         */
289
        private void uptateNavigatingButtons() {
290
                if (page == 0) {
291
                        getBtnAnterior().setEnabled(false);
292
                        getBtnSiguiente().setVisible(true);
293
                        getBtnSiguiente().setEnabled(false);
294
                }
295
                else {
296
                        short tabIndex = (short) wfsParamsPanel.getSelectedIndex();
297
                        
298
                        getBtnAnterior().setEnabled(true);
299
                        if (wfsParamsPanel.nextPageEnabled() == -1) {
300
                            getBtnSiguiente().setEnabled(false);
301
                            
302
                            if (tabIndex == (wfsParamsPanel.getPanelInGUICount() -1))
303
                                        getBtnSiguiente().setVisible(false);
304
                        }
305
                        else {
306
                                getBtnSiguiente().setVisible(true);
307
                                getBtnSiguiente().setEnabled(true);
308
                        }
309
                }
310
        }
311

    
312
        /**
313
         * This method initializes txtHost from the persistent data storage
314
         *
315
         * @return javax.swing.JTextField
316
         */
317
        private javax.swing.JComboBox getTxtHost() {
318
                if (cmbHost == null) {
319
                        cmbHost = new JComboServer();
320
                        cmbHost.setModel(new DefaultComboBoxModel());
321
                        cmbHost.setPreferredSize(new java.awt.Dimension(350, 20));
322
                        cmbHost.setBounds(11, 26, 454, 20);
323
                        cmbHost.setEditable(true);
324

    
325
                        ServerDataPersistence persistence = new ServerDataPersistence(this,ServerData.SERVER_TYPE_WFS);
326
                        ServerData[] servers = persistence.getArrayOfServerData();
327

    
328
                        if (servers.length == 0){
329
                                PluginServices ps = PluginServices.getPluginServices(this);
330
                                XMLEntity xml = ps.getPersistentXML();
331
                                try {
332
                                        String[] oldServers = xml.getStringArrayProperty("wfs-servers");
333
                                        servers = new ServerData[oldServers.length];
334
                                        for (int i=0; i<oldServers.length; i++) {
335
                                                servers[i] = new ServerData(oldServers[i],ServerData.SERVER_TYPE_WMS);
336
                                        }
337
                                        xml.remove("wfs-servers");
338
                                        ps.setPersistentXML(xml);
339
                                } catch (NotExistInXMLEntity e) {
340
                                        // Old servers doesn't exist
341
                                        servers = new ServerData[2];
342
                                        servers[0] = new ServerData("http://www2.dmsolutions.ca/cgi-bin/mswfs_gmap",ServerData.SERVER_TYPE_WFS);
343
                                        servers[1] = new ServerData("http://www.idee.es/IDEE-WFS/ogcwebservice",ServerData.SERVER_TYPE_WFS);
344
                                }
345

    
346
                                for (int i = 0; i < servers.length; i++){
347
                                        persistence.addServerData(servers[i]);
348
                                }
349
                                persistence.setPersistent();
350
                        }
351

    
352
                        cmbHost.setServerList(servers);
353

    
354
                        // Allows that user can start the connection to the written server pressing the 'Enter' key
355
                        cmbHost.getEditor().getEditorComponent().addKeyListener(new KeyAdapter() {
356
                                /*
357
                                 * (non-Javadoc)
358
                                 * @see java.awt.event.KeyAdapter#keyReleased(java.awt.event.KeyEvent)
359
                                 */
360
                                public void keyReleased(KeyEvent e) {
361
                                        if (e.getKeyCode() == KeyEvent.VK_ENTER) {
362
                                                getBtnConnect().doClick();
363
                                        }
364
                                }
365
                        });
366
                }
367
                return cmbHost;
368
        }
369

    
370
        /**
371
         * This method initializes btnDetalles
372
         *
373
         * @return JButton
374
         */
375
        private JButton getBtnConnect() {
376
                if (btnConnect == null) {
377
                        btnConnect = new JButton();
378
                        btnConnect.setPreferredSize(new java.awt.Dimension(100, 20));
379
                        btnConnect.setBounds(366, 50, 100, 20);
380
                        btnConnect.setText(PluginServices.getText(this, "connect"));
381
                        btnConnect.addActionListener(new java.awt.event.ActionListener() {
382
                                public void actionPerformed(java.awt.event.ActionEvent e) {
383
                                        btnConnect.setEnabled(false); // This avoids multiple contiguous actions
384

    
385
                                        try {
386
                                                rellenarControles();
387
                                                wfsParamsPanel.refreshCapabilitiesInfo();
388
                                                wfsParamsPanel.refreshWFSSelectFeaturePanel();
389
                                                wfsParamsPanel.enableDefaultTabs(false);
390
                                                btnConnect.setEnabled(true); // This avoids multiple contiguous actions
391
                                                
392
                                                getBtnSiguiente().setEnabled(true);
393
                                                getBtnSiguiente().requestFocus(); // Sets focus to the 'next' button
394
                                        }
395
                                        catch(Exception e1) {
396
                                                JOptionPane.showMessageDialog(null, 
397
                                                                Messages.getText("invalid_url"), 
398
                                                                Messages.getText("warning"),
399
                                                                JOptionPane.WARNING_MESSAGE);
400
                                                btnConnect.setEnabled(true); 
401
                                        }
402
                                }
403
                        });
404

    
405
                        // If user press the 'Enter' key -> advance
406
                        btnConnect.addKeyListener(new KeyAdapter() {
407
                                /*
408
                                 *  (non-Javadoc)
409
                                 * @see java.awt.event.KeyListener#keyReleased(java.awt.event.KeyEvent)
410
                                 */
411
                                public void keyReleased(KeyEvent e) {
412
                                        if (e.getKeyCode() == KeyEvent.VK_ENTER) {
413
                                                btnConnect.doClick();
414
                                        }
415
                                }
416
                        });
417
                }
418

    
419
                return btnConnect;
420
        }
421

    
422
        /**
423
         * This method initializes jPanel
424
         *
425
         * @return javax.swing.JPanel
426
         */
427
        private javax.swing.JPanel getJPanel() {
428
                if (jPanel == null) {
429
                        jPanel = new javax.swing.JPanel();
430
                        jPanel.setLayout(null);
431
                        jPanel.setPreferredSize(new java.awt.Dimension(470, 130));
432
                        jPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(null,
433
                                        PluginServices.getText(this, "descripcion"),
434
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
435
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null,
436
                                        null));
437
                        jPanel.setBounds(2, 96, 477, 324);
438
                        jPanel.add(getJScrollPane(), null);
439
                        jPanel.add(getPnlName(), null);
440
                }
441

    
442
                return jPanel;
443
        }
444

    
445
        /**
446
         * This method initializes pnlName
447
         *
448
         * @return javax.swing.JPanel
449
         */
450
        private JPanel getPnlName() {
451
                if (pnlName == null) {
452
                        pnlName = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 0));
453
                        pnlName.setBounds(new java.awt.Rectangle(9,19,452,24));
454
                        pnlName.add(getJLabel1(), null);
455
                        pnlName.add(getLblTitle(), null);
456
                }
457
                return pnlName;
458
        }
459

    
460
        /**
461
         * This method initializes jLabel1
462
         *
463
         * @return javax.swing.JLabel
464
         */
465
        private javax.swing.JLabel getJLabel1() {
466
                if (jLabel1 == null) {
467
                        jLabel1 = new javax.swing.JLabel();
468
                        jLabel1.setText(PluginServices.getText(this, "nombre") + ":");
469
                        jLabel1.setBounds(15, 26, 65, 15);
470
                }
471

    
472
                return jLabel1;
473
        }
474

    
475
        /**
476
         * This method initializes lblTitle
477
         *
478
         * @return javax.swing.JLabel
479
         */
480
        private javax.swing.JLabel getLblTitle() {
481
                if (lblTitle == null) {
482
                        lblTitle = new javax.swing.JLabel();
483
                        lblTitle.setText("-");
484
                        lblTitle.setPreferredSize(new java.awt.Dimension(350, 16));
485
                        lblTitle.setBounds(82, 26, 350, 16);
486
                }
487

    
488
                return lblTitle;
489
        }
490

    
491
        /**
492
         * This method initializes jScrollPane
493
         *
494
         * @return javax.swing.JScrollPane
495
         */
496
        private javax.swing.JScrollPane getJScrollPane() {
497
                if (jScrollPane == null) {
498
                        jScrollPane = new javax.swing.JScrollPane();
499
                        jScrollPane.setViewportView(getTxtAbstract());
500
                        jScrollPane.setPreferredSize(new java.awt.Dimension(450, 60));
501
                        jScrollPane.setBounds(10, 47, 457, 267);
502
                }
503

    
504
                return jScrollPane;
505
        }
506

    
507
        /**
508
         * This method initializes txtAbstract
509
         *
510
         * @return javax.swing.JTextArea
511
         */
512
        private javax.swing.JTextArea getTxtAbstract() {
513
                if (txtAbstract == null) {
514
                        txtAbstract = new javax.swing.JTextArea();
515
                        txtAbstract.setWrapStyleWord(true);
516
                        txtAbstract.setColumns(30);
517
                        txtAbstract.setLineWrap(true);
518
                }
519

    
520
                return txtAbstract;
521
        }
522

    
523
        /**
524
         * This method initializes panelPage1
525
         *
526
         * @return javax.swing.JPanel
527
         */
528
        private javax.swing.JPanel getPanelPage1() {
529
                if (panelPage1 == null) {
530
                        panelPage1 = new javax.swing.JPanel();
531
                        panelPage1.setLayout(null);
532
                        panelPage1.setPreferredSize(new java.awt.Dimension(480, 220));
533
                        panelPage1.setVisible(true);
534
                        panelPage1.setBounds(15, 5, 480, 427);
535
                        panelPage1.add(getJPanel1(), null);
536
                        panelPage1.add(getJPanel(), null);
537
                }
538

    
539
                return panelPage1;
540
        }
541

    
542
        /**
543
         * This method initializes panelPage2
544
         *
545
         * @return javax.swing.JPanel
546
         */
547
        private javax.swing.JPanel getPanelPage2() {
548
                if (wfsParamsPanel == null) {
549

    
550
                        try {
551
                                PanelGroupManager manager = PanelGroupManager.getManager();
552
                                manager.registerPanelGroup(WFSParamsPanel.class);
553
                                manager.setDefaultType(WFSParamsPanel.class);
554

    
555
                                // Initially there is no layer
556
                                wfsParamsPanel = (WFSParamsPanel) manager.getPanelGroup(null);
557
                                wfsParamsPanel.setBounds(4, 9, 502, 423);
558
                                wfsParamsPanel.loadPanels(new PanelGroupLoaderFromExtensionPoint(wfs_properties_extensionpoint_name));
559
                                wfsParamsPanel.addChangeListener(new ChangeListener() {
560
                                // This method is called whenever the selected tab changes
561
                                public void stateChanged(ChangeEvent evt) {
562
                                    JTabbedPane pane = (JTabbedPane)evt.getSource();
563

    
564
                                    // Update the navigation buttons
565
                                    uptateNavigatingButtons();
566
                                }
567
                            });
568
                        } catch (BaseException bE) {
569
                                NotificationManager.showMessageError(bE.getLocalizedMessageStack(), bE);
570
                        } catch (Exception e) {
571
                                NotificationManager.showMessageError(e.getLocalizedMessage(), e);
572
                        }
573
                }
574

    
575
                return wfsParamsPanel;
576
        }
577

    
578
        /**
579
         * This method initializes btnSiguiente
580
         *
581
         * @return JButton
582
         */
583
        private JButton getBtnSiguiente() {
584
                if (btnSiguiente == null) {
585
                        btnSiguiente = new JButton();
586
                        btnSiguiente.setPreferredSize(new java.awt.Dimension(100, 30));
587
                        btnSiguiente.setBounds(395, 444, 100, 20);
588
                        btnSiguiente.setText(PluginServices.getText(this, "siguiente"));
589
                        btnSiguiente.addActionListener(new java.awt.event.ActionListener() {
590
                                public void actionPerformed(java.awt.event.ActionEvent e) {
591
                                        if (page == 0) {
592
                                                page = 1;
593
                                                getPanelPage1().setVisible(false);
594
                                                getPanelPage2().setVisible(true);
595
                                        }
596
                                        else {
597
                                                wfsParamsPanel.goToNextTab();
598
                                        }
599

    
600
                                        uptateNavigatingButtons();
601
                                }
602
                        });
603
                }
604
                return btnSiguiente;
605
        }
606

    
607
        /**
608
         * This method initializes btnAnterior
609
         *
610
         * @return JButton
611
         */
612
        private JButton getBtnAnterior() {
613
                if (btnAnterior == null) {
614
                        btnAnterior = new JButton();
615
                        btnAnterior.setBounds(292, 444, 100, 20);
616
                        btnAnterior.setText(PluginServices.getText(this, "anterior"));
617
                        btnAnterior.setPreferredSize(new java.awt.Dimension(100, 30));
618
                        btnAnterior.addActionListener(new java.awt.event.ActionListener() {
619
                                public void actionPerformed(java.awt.event.ActionEvent e) {
620
                                        int tabIndex = wfsParamsPanel.getSelectedIndex();
621
                                        
622
                                        if (page == 1) {
623
                                                if (tabIndex == 0) {
624
                                                        page = 0;
625
                                                        connected = false;
626

    
627
                                                        wfsParamsPanel.enableDefaultTabs(false);
628
                                                        getLblTitle().setText("-");
629
                                                        getTxtAbstract().setText("");
630

    
631

    
632
                                                        getPanelPage2().setVisible(false);
633
                                                        getPanelPage1().setVisible(true);
634
                                                }
635
                                                else {
636
                                                        wfsParamsPanel.goToPreviousTab();        
637
                                                }
638
                                        }
639
                                        else {
640
                                                
641
                                        }
642
                                        
643
                                        uptateNavigatingButtons();
644
                                }
645
                        });
646
                }
647
                return btnAnterior;
648
        }
649

    
650
        /**
651
         * This method initializes jPanel1
652
         *
653
         * @return javax.swing.JPanel
654
         */
655
        private javax.swing.JPanel getJPanel1() {
656
                if (jPanel1 == null) {
657
                        jPanel1 = new javax.swing.JPanel();
658
                        jPanel1.setLayout(null);
659
                        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(
660
                                        null, PluginServices.getText(this, "server"),
661
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
662
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
663
                        jPanel1.setBounds(2, 5, 477, 85);
664
                        jPanel1.add(getTxtHost(), null);
665
                        jPanel1.add(getBtnConnect(), null);
666
                        jPanel1.add(getChkCaching(), null);
667
                }
668

    
669
                return jPanel1;
670
        }
671

    
672
        /**
673
         * Returns the wizard's data source
674
         *
675
         * @return the wizard's data source
676
         */
677
        public WFSServerExplorer getServerExplorer() {
678
                return serverExplorer;
679
        }
680

    
681

    
682
        /**
683
         * Returns the rectangle that contains all the others
684
         *
685
         * @param rects[] rectangles with its positions and dimensions
686
         *
687
         * @return Rectangle2D the rectangle that contains all the others
688
         */
689
        public static Rectangle2D getRectangle(Rectangle2D[] rects) {
690
                Rectangle2D ret = rects[0];
691

    
692
                for (int i = 1; i < rects.length; i++) {
693
                        ret.add(rects[i]);
694
                }
695

    
696
                return ret;
697
        }
698

    
699
        /**
700
         * Returns the host typed in the host text field or null if nothing is typed
701
         * or it is not a valid URL.
702
         *
703
         * @return URL del host
704
         */
705
        public URL getHost() {
706
                try {
707
                        return new URL(cmbHost.getModel().getSelectedItem().toString());
708
                } catch (MalformedURLException e) {
709
                        return null;
710
                }
711
        }
712

    
713
        /*
714
         * (non-Javadoc)
715
         * @see com.iver.cit.gvsig.gui.WizardPanel#initWizard()
716
         */
717
        public void initWizard() {
718
                //setServerExplorer(new WFSWizardData());
719
        }
720

    
721
        /*
722
         * (non-Javadoc)
723
         * @see com.iver.cit.gvsig.gui.WizardPanel#execute()
724
         */
725
        public void execute() {
726
                FLayer layer = wfsParamsPanel.getLayer();
727
                IProjection projection = wfsParamsPanel.getSelectedFeatureProjection();
728
                if (projection == null){
729
                        projection = getMapCtrl().getProjection();
730
                }
731
                layer.setProjection(projection);
732
                MapContext mapContext = this.getMapCtrl().getMapContext();
733
                mapContext.getLayers().addLayer(layer);
734
        }        
735

    
736
        /**
737
         * This method initializes chkCaching
738
         *
739
         * @return javax.swing.JCheckBox
740
         */
741
        private JCheckBox getChkCaching() {
742
                if (chkCaching == null) {
743
                        chkCaching = new JCheckBox();
744
                        chkCaching.setBounds(7, 51, 349, 20);
745
                        chkCaching.setText(PluginServices.getText(this, "refresh_capabilities"));
746
                        chkCaching.setToolTipText(PluginServices.getText(this, "refresh_capabilities_tooltip"));
747
                        chkCaching.setSelected(refreshing);
748
                        chkCaching.addItemListener(new java.awt.event.ItemListener() {
749
                                public void itemStateChanged(java.awt.event.ItemEvent e) {
750
                                        refreshing = chkCaching.isSelected();
751
                                }
752
                        });
753
                        chkCaching.addActionListener(new java.awt.event.ActionListener() {
754
                                public void actionPerformed(java.awt.event.ActionEvent e) {
755
                                        chkCaching.setEnabled(false); // This avoids multiple contiguous actions
756
                                        fPrefs.putBoolean("refresh_capabilities", chkCaching.isSelected());
757
                                        chkCaching.setEnabled(true); // This avoids multiple contiguous actions
758
                                }
759
                        });
760

    
761
                }
762
                return chkCaching;
763
        }
764

    
765
        /**
766
         * This method makes the 'btnSiguiente' to be clicked
767
         */
768
        public void doClickOnNextButton() {
769
                getBtnSiguiente().doClick();
770
        }
771

    
772
        /* (non-Javadoc)
773
         * @see com.iver.cit.gvsig.gui.WizardPanel#getParameters()
774
         */
775
        public DataStoreParameters[] getParameters() {
776
                // TODO Auto-generated method stub
777
                return null;
778
        }
779
}