Statistics
| Revision:

svn-gvsig-desktop / trunk / extensions / extWMS / src / com / iver / cit / gvsig / gui / wizards / WMSWizard.java @ 6434

History | View | Annotate | Download (28.4 KB)

1
/* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
2
 *
3
 * Copyright (C) 2004 IVER T.I. and Generalitat Valenciana.
4
 *
5
 * This program is free software; you can redistribute it and/or
6
 * modify it under the terms of the GNU General Public License
7
 * as published by the Free Software Foundation; either version 2
8
 * of the License, or (at your option) any later version.
9
 *
10
 * This program is distributed in the hope that it will be useful,
11
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
13
 * GNU General Public License for more details.
14
 *
15
 * You should have received a copy of the GNU General Public License
16
 * along with this program; if not, write to the Free Software
17
 * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA  02111-1307,USA.
18
 *
19
 * For more information, contact:
20
 *
21
 *  Generalitat Valenciana
22
 *   Conselleria d'Infraestructures i Transport
23
 *   Av. Blasco Ib??ez, 50
24
 *   46010 VALENCIA
25
 *   SPAIN
26
 *
27
 *      +34 963862235
28
 *   gvsig@gva.es
29
 *      www.gvsig.gva.es
30
 *
31
 *    or
32
 *
33
 *   IVER T.I. S.A
34
 *   Salamanca 50
35
 *   46005 Valencia
36
 *   Spain
37
 *
38
 *   +34 963163400
39
 *   dac@iver.es
40
 */
41
package com.iver.cit.gvsig.gui.wizards;
42

    
43
import java.awt.Component;
44
import java.awt.Dimension;
45
import java.awt.FlowLayout;
46
import java.awt.geom.Rectangle2D;
47
import java.net.MalformedURLException;
48
import java.net.URL;
49
import java.util.Hashtable;
50
import java.util.Vector;
51
import java.util.prefs.Preferences;
52

    
53
import javax.swing.DefaultComboBoxModel;
54
import javax.swing.JCheckBox;
55
import javax.swing.JLabel;
56
import javax.swing.JOptionPane;
57
import javax.swing.JPanel;
58
import javax.swing.tree.TreePath;
59

    
60
import org.apache.log4j.Logger;
61

    
62
import com.iver.andami.PluginServices;
63
import com.iver.andami.persistence.serverData.ServerDataPersistence;
64
import com.iver.cit.gvsig.fmap.drivers.wms.FMapWMSDriver;
65
import com.iver.cit.gvsig.fmap.exceptions.CannotReprojectException;
66
import com.iver.cit.gvsig.fmap.layers.FLayer;
67
import com.iver.cit.gvsig.fmap.layers.FLayers;
68
import com.iver.cit.gvsig.fmap.layers.FLyrWMS;
69
import com.iver.cit.gvsig.fmap.layers.WMSLayerNode;
70
import com.iver.cit.gvsig.gui.WizardPanel;
71
import com.iver.cit.gvsig.gui.panels.LayerTree;
72
import com.iver.cit.gvsig.gui.panels.WMSParamsPanel;
73
import com.iver.utiles.NotExistInXMLEntity;
74
import com.iver.utiles.XMLEntity;
75
import com.iver.utiles.swing.jcomboServer.JComboServer;
76
import com.iver.utiles.swing.jcomboServer.ServerData;
77

    
78

    
79
/**
80
 * The WMS properties container panel.
81
 *
82
 * @author Jaume Dominguez Faus
83
 */
84
public class WMSWizard extends WizardPanel {
85
        private static Logger logger = Logger.getLogger(WMSWizard.class.getName());
86
        protected int page;
87
        protected boolean connected = false;
88
        private JComboServer cmbHost = null;
89
        private org.gvsig.gui.beans.swing.JButton btnConnect = null;
90
        private javax.swing.JPanel jPanel = null;
91
        private javax.swing.JLabel jLabel1 = null;
92
        private javax.swing.JLabel lblTitle = null;
93
        private javax.swing.JScrollPane jScrollPane = null;
94
        private javax.swing.JTextArea txtAbstract = null;
95
        private javax.swing.JPanel panelPage1 = null;
96
        private org.gvsig.gui.beans.swing.JButton btnSiguiente = null;
97
        private org.gvsig.gui.beans.swing.JButton btnAnterior = null;
98
        private javax.swing.JPanel jPanel1 = null;
99
        protected WizardListenerSupport listenerSupport = new WizardListenerSupport();
100
        protected WMSWizardData dataSource;
101
        protected WMSParamsPanel wmsParamsPanel = null;
102
        protected JLabel lblServerType = null;
103
        protected JLabel lblServerTypeValue = null;
104
        private JCheckBox chkCaching = null;
105
        private static Preferences fPrefs = Preferences.userRoot().node( "gvsig.wms-wizard" );
106
        private boolean refreshing = fPrefs.getBoolean("refresh_capabilities", false);
107
        protected int firstPage;
108
        private JPanel pnlName = null;
109

    
110
        public WMSWizard (WMSParamsPanel params){
111

    
112
                super();
113
                firstPage = 1;
114
                page = firstPage;
115
                this.wmsParamsPanel = params;
116
                this.dataSource = wmsParamsPanel.dataSource;
117

    
118
                setTabName("WMS");
119
                lblServerType = new JLabel();
120
                lblServerType.setBounds(20, 444, 100, 20);
121
                lblServerType.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
122
                lblServerType.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
123
                lblServerType.setFont(new java.awt.Font("Arial", java.awt.Font.PLAIN, 11));
124
                lblServerType.setText(PluginServices.getText(this, "server_type")+":");
125
                lblServerTypeValue = new JLabel();
126
                lblServerTypeValue.setBounds(128, 444, 148, 20);
127
                lblServerTypeValue.setFont(new java.awt.Font("Arial", java.awt.Font.BOLD, 11));
128
                lblServerTypeValue.setText("-");
129
                this.setSize(510, 468);
130
                this.setLayout(null);
131
                this.setPreferredSize(new java.awt.Dimension(750, 420));
132
                this.setVisible(true);
133

    
134
                wmsParamsPanel.setListenerSupport(this.listenerSupport);
135
                wmsParamsPanel.setBounds(15, 5, 480, 428);
136
                wmsParamsPanel.getJTabbedPane().addMouseListener(
137
                                new java.awt.event.MouseAdapter() {
138
                                        public void mouseClicked(java.awt.event.MouseEvent e) {
139
                                                page = wmsParamsPanel.currentPage() + 1;
140
                                                activarVisualizarBotones();
141
                                        }
142
                                });
143
                this.add(wmsParamsPanel, null);
144
                this.add(lblServerType, null);
145
                this.add(lblServerTypeValue, null);
146
                getPanelPage2().setVisible(true);
147
                connected = true;
148
        }
149

    
150
        /**
151
         * This is the default constructor
152
         */
153
        public WMSWizard() {
154
                super();
155
                firstPage = 0;
156
                page = firstPage;
157
                initialize();
158
        }
159
        /**
160
         * This method initializes this
161
         */
162
        private void initialize() {
163
                setTabName("WMS");
164

    
165
                lblServerType = new JLabel();
166
                lblServerType.setBounds(20, 444, 100, 20);
167
                lblServerType.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
168
                lblServerType.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
169
                lblServerType.setFont(new java.awt.Font("Arial", java.awt.Font.PLAIN, 11));
170
                lblServerType.setText(PluginServices.getText(this, "server_type")+":");
171
                lblServerTypeValue = new JLabel();
172
                lblServerTypeValue.setBounds(128, 444, 148, 20);
173
                lblServerTypeValue.setFont(new java.awt.Font("Arial", java.awt.Font.BOLD, 11));
174
                lblServerTypeValue.setText("-");
175
                this.setSize(510, 468);
176
                this.setLayout(null);
177
                this.setPreferredSize(new java.awt.Dimension(750, 420));
178
                this.setVisible(true);
179
                this.add(getPanelPage1(), null);
180
                this.add(getPanelPage2(), null);
181
                this.add(getBtnAnterior(), null);
182
                this.add(getBtnSiguiente(), null);
183
                this.add(lblServerType, null);
184
                this.add(lblServerTypeValue, null);
185
                activarVisualizarBotones();
186
        }
187

    
188

    
189
        protected JPanel getPanelPage2(){
190
                if (wmsParamsPanel == null){
191
                        wmsParamsPanel = new WMSParamsPanel();
192
                        wmsParamsPanel.setListenerSupport(this.listenerSupport);
193
                        wmsParamsPanel.setBounds(15, 5, 480, 428);
194
                        wmsParamsPanel.getJTabbedPane().addMouseListener(
195
                                        new java.awt.event.MouseAdapter() {
196
                                                public void mouseClicked(java.awt.event.MouseEvent e) {
197
                                                        page = wmsParamsPanel.currentPage() + 1;
198
                                                        activarVisualizarBotones();
199
                                                }
200
                                        });
201
                }
202
                return wmsParamsPanel;
203
        }
204
        /**
205
         * DOCUMENT ME!
206
         *
207
         * @param host DOCUMENT ME!
208
         */
209
        private void addHost(String host) {
210
                host = host.trim();
211

    
212
//                DefaultComboBoxModel model = (DefaultComboBoxModel) getTxtHost()
213
//                .getModel();
214

    
215
//                if (model.getIndexOf(host) < 0) {
216
//                model.addElement(host);
217

    
218
//                PluginServices ps = PluginServices.getPluginServices(this);
219
//                XMLEntity xml = ps.getPersistentXML();
220

    
221
//                try {
222
//                String[] servers = xml.getStringArrayProperty("wms-servers");
223
//                String[] newServers = new String[servers.length + 1];
224
//                System.arraycopy(servers, 0, newServers, 0, servers.length);
225
//                newServers[servers.length] = host;
226
//                xml.putProperty("wms-servers", newServers);
227
//                } catch (NotExistInXMLEntity e) {
228
//                xml.putProperty("wms-servers", new String[] { host });
229
//                }
230

    
231
//                ps.setPersistentXML(xml);
232
//                }
233

    
234
                ServerDataPersistence persistence = new ServerDataPersistence(this,ServerData.SERVER_TYPE_WMS);
235
                persistence.addServerData(new ServerData(host, ServerData.SERVER_TYPE_WMS));
236

    
237

    
238
        }
239

    
240
        /**
241
         * DOCUMENT ME!
242
         */
243
        private void rellenarControles() {
244
                try {
245
                        String host = cmbHost.getModel().getSelectedItem().toString();
246

    
247
                        dataSource.setHost(new URL(host), refreshing);
248
                        lblTitle.setText(dataSource.getTitle());
249
                        lblServerTypeValue.setText(dataSource.getServerType());
250
                        txtAbstract.setText(dataSource.getAbstract());
251

    
252
                        addHost(host);
253
                        wmsParamsPanel.setWizardData(dataSource);
254
                        connected = true;
255
                        activarVisualizarBotones();
256
                } catch (Exception e) {
257
                        listenerSupport.callError(e);
258
                        e.printStackTrace();
259
                }
260
        }
261

    
262
        /**
263
         * DOCUMENT ME!
264
         */
265
        protected void activarVisualizarBotones() {
266
                if (page == firstPage) {
267
                        getBtnAnterior().setEnabled(false);
268
                        getBtnSiguiente().setVisible(true);
269

    
270
                        if (connected) {
271
                                getBtnSiguiente().setEnabled(true);
272
                        } else {
273
                                getBtnSiguiente().setEnabled(false);
274
                        }
275
                } else if (page < wmsParamsPanel.getNumTabs()) {
276
                        getBtnSiguiente().setEnabled(true);
277
                        getBtnSiguiente().setVisible(true);
278
                        getBtnAnterior().setEnabled(true);
279
                        getBtnAnterior().setVisible(true);
280
                        if (wmsParamsPanel.nextEnabledPage()==-1){
281
                                getBtnSiguiente().setEnabled(false);
282
                        }
283
                        listenerSupport.callStateChanged(wmsParamsPanel.isCorrectlyConfigured());
284
                } else if (page == wmsParamsPanel.getNumTabs()) {
285
                        getBtnSiguiente().setVisible(false);
286
                        getBtnSiguiente().setEnabled(false);
287
                        listenerSupport.callStateChanged(wmsParamsPanel
288
                                        .isCorrectlyConfigured());
289
                }
290
        }
291

    
292
        /**
293
         * This method initializes txtHost
294
         *
295
         * @return javax.swing.JTextField
296
         */
297
        private javax.swing.JComboBox getTxtHost() {
298
                if (cmbHost == null) {
299
                        cmbHost = new JComboServer();
300
                        cmbHost.setModel(new DefaultComboBoxModel());
301
                        cmbHost.setPreferredSize(new java.awt.Dimension(350, 20));
302
                        cmbHost.setBounds(11, 26, 454, 20);
303
                        cmbHost.setEditable(true);
304

    
305
                        ServerDataPersistence persistence = new ServerDataPersistence(this,ServerData.SERVER_TYPE_WMS);
306
                        ServerData[] servers = persistence.getArrayOfServerData();
307

    
308
                        if (servers.length == 0){
309
                                PluginServices ps = PluginServices.getPluginServices(this);
310
                                XMLEntity xml = ps.getPersistentXML();
311
                                try {
312
                                        String[] oldServers = xml.getStringArrayProperty("wms-servers");
313
                                        servers = new ServerData[oldServers.length];
314
                                        for (int i=0; i<oldServers.length; i++) {
315
                                                servers[i] = new ServerData(oldServers[i],ServerData.SERVER_TYPE_WMS);
316
                                        }
317
                                        xml.remove("wms-servers");
318
                                        ps.setPersistentXML(xml);
319
                                } catch (NotExistInXMLEntity e) {
320
                                        // Old servers doesn't exist
321
                                        servers = new ServerData[12];
322
                                        servers[0] = new ServerData("http://www.idee.es/wms/IDEE-Base/IDEE-Base",ServerData.SERVER_TYPE_WMS);
323
                                        servers[1] = new ServerData("http://wms.jpl.nasa.gov/wms.cgi",ServerData.SERVER_TYPE_WMS);
324
                                        servers[2] = new ServerData("http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?",ServerData.SERVER_TYPE_WMS);
325
                                        servers[3] = new ServerData("http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_patricova",ServerData.SERVER_TYPE_WMS);
326
                                        servers[4] = new ServerData("http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_parque_fondo_prug",ServerData.SERVER_TYPE_WMS);
327
                                        servers[5] = new ServerData("http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_pgof",ServerData.SERVER_TYPE_WMS);
328
                                        servers[6] = new ServerData("http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_urbanismo_tematicos",ServerData.SERVER_TYPE_WMS);
329
                                        servers[7] = new ServerData("http://onearth.jpl.nasa.gov/wms.cgi",ServerData.SERVER_TYPE_WMS);
330
                                        servers[8] = new ServerData("http://www.demis.nl/wms/wms.asp?WMS=WorldMap",ServerData.SERVER_TYPE_WMS);
331
                                        servers[9] = new ServerData("http://aes.gsfc.nasa.gov/cgi-bin/wms",ServerData.SERVER_TYPE_WMS);
332
                                        servers[10] = new ServerData("http://mapas.euitto.upm.es/cgi-bin/cnauticas",ServerData.SERVER_TYPE_WMS);
333
                                        servers[11] = new ServerData("http://ovc.catastro.meh.es/Cartografia/WMS/ServidorWMS.aspx", ServerData.SERVER_TYPE_WMS);
334
                                }
335

    
336
                                for (int i=0 ; i<servers.length ; i++){
337
                                        persistence.addServerData(servers[i]);
338
                                }
339
                                persistence.setPersistent();
340
                        }
341

    
342
                        cmbHost.setServerList(servers);
343

    
344

    
345
//                        XMLEntity xml = PluginServices.getPluginServices(this)
346
//                        .getPersistentXML();
347
//                        if (xml == null)
348
//                        xml = new XMLEntity();
349

    
350
//                        if (!xml.contains("wms-servers")) {
351
//                        String[] servers = new String[11];
352
//                        // Begining of rubbish code
353
//                        //
354
//                        // The following block should not exist and it only will live in the
355
//                        // 0.6 version. It fixes an error that has been happening since the 0.4 version
356
//                        // and recovers the user's server data from the wrong location that has been used to use.
357
//                        // This code will be removed from the 0.7 version
358
//                        boolean bool = false;
359
//                        {
360
//                        Class gvSIGClass = AddLayer.class; // for example... (we only need to use a class that has been loaded by gvSIG's class loader
361
//                        XMLEntity xml2 = PluginServices.getPluginServices(PluginServices.getExtension(gvSIGClass)).getPersistentXML();
362
//                        if (xml2.contains("wms-servers")) {
363
//                        String oldServers[] = xml2.getStringArrayProperty("wms-servers");
364
//                        servers = new String[servers.length+oldServers.length];
365
//                        for (int i = 0; i < oldServers.length; i++) {
366
//                        servers[oldServers.length+i] = oldServers[i];
367
//                        }
368
//                        xml2.remove("wms-servers");
369
//                        bool = true;
370
//                        }
371
//                        }
372
//                        if (!bool) {
373
//                        // end of the rubbish code (don't forget to remove the closing bracket)
374

    
375
//                        servers[0] = "http://www.idee.es/wms/IDEE-Base/IDEE-Base";
376
//                        servers[1] = "http://wms.jpl.nasa.gov/wms.cgi";
377
//                        servers[2] = "http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?";
378
//                        servers[3] = "http://demo.deegree.org:8080/deegree/wms";
379
//                        servers[4] = "http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_patricova";
380
//                        servers[5] = "http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_parque_fondo_prug";
381
//                        servers[6] = "http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_pgof";
382
//                        servers[7] = "http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_urbanismo_tematicos";
383
//                        servers[8] = "http://onearth.jpl.nasa.gov/wms.cgi";
384
//                        servers[9] = "http://www.demis.nl/wms/wms.asp?WMS=WorldMap";
385
//                        servers[9] = "http://aes.gsfc.nasa.gov/cgi-bin/wms";
386
//                        servers[10]= "http://mapas.euitto.upm.es/cgi-bin/cnauticas";
387

    
388
//                        } // this bracket will be removed too in version <= 0.7
389
//                        xml.putProperty("wms-servers", servers);
390
//                        }
391
//                        try {
392
//                        String[] servers = xml.getStringArrayProperty("wms-servers");
393
//                        for (int i = 0; i < servers.length; i++) {
394
//                        ((DefaultComboBoxModel) cmbHost.getModel()).addElement(servers[i]);
395
//                        }
396
//                        } catch (NotExistInXMLEntity e) {
397
//                        }
398
                }
399

    
400
                return cmbHost;
401
        }
402

    
403

    
404
        /**
405
         * This method initializes btnDetalles
406
         *
407
         * @return javax.swing.JButton
408
         */
409
        private javax.swing.JButton getBtnConnect() {
410
                if (btnConnect == null) {
411
                        btnConnect = new org.gvsig.gui.beans.swing.JButton();
412
                        btnConnect.setPreferredSize(new java.awt.Dimension(100, 20));
413
                        btnConnect.setBounds(366, 50, 100, 20);
414
                        btnConnect.setText(PluginServices.getText(this, "conectar"));
415
                        btnConnect.addActionListener(new java.awt.event.ActionListener() {
416
                                public void actionPerformed(java.awt.event.ActionEvent e) {
417
                                        rellenarControles();
418
                                }
419
                        });
420
                }
421

    
422
                return btnConnect;
423
        }
424

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

    
441
                        jPanel.add(getJScrollPane(), null);
442
                        jPanel.add(getPnlName(), null);
443
                }
444

    
445
                return jPanel;
446
        }
447

    
448
        /**
449
         * This method initializes jLabel1
450
         *
451
         * @return javax.swing.JLabel
452
         */
453
        private javax.swing.JLabel getJLabel1() {
454
                if (jLabel1 == null) {
455
                        jLabel1 = new javax.swing.JLabel();
456
                        jLabel1.setText(PluginServices.getText(this, "name") + ":");
457
                }
458

    
459
                return jLabel1;
460
        }
461

    
462
        /**
463
         * This method initializes lblTitle
464
         *
465
         * @return javax.swing.JLabel
466
         */
467
        private javax.swing.JLabel getLblTitle() {
468
                if (lblTitle == null) {
469
                        lblTitle = new javax.swing.JLabel();
470
                        lblTitle.setText("-");
471
                }
472

    
473
                return lblTitle;
474
        }
475

    
476
        /**
477
         * This method initializes jScrollPane
478
         *
479
         * @return javax.swing.JScrollPane
480
         */
481
        private javax.swing.JScrollPane getJScrollPane() {
482
                if (jScrollPane == null) {
483
                        jScrollPane = new javax.swing.JScrollPane();
484
                        jScrollPane.setViewportView(getTxtAbstract());
485
                        jScrollPane.setPreferredSize(new java.awt.Dimension(450, 60));
486
                        jScrollPane.setBounds(10, 47, 450, 267);
487
                }
488

    
489
                return jScrollPane;
490
        }
491

    
492
        /**
493
         * This method initializes txtAbstract
494
         *
495
         * @return javax.swing.JTextArea
496
         */
497
        private javax.swing.JTextArea getTxtAbstract() {
498
                if (txtAbstract == null) {
499
                        txtAbstract = new javax.swing.JTextArea();
500
                        txtAbstract.setWrapStyleWord(true);
501
                        txtAbstract.setColumns(30);
502
                        txtAbstract.setLineWrap(true);
503
                }
504

    
505
                return txtAbstract;
506
        }
507

    
508
        /**
509
         * This method initializes panelPage1
510
         *
511
         * @return javax.swing.JPanel
512
         */
513
        private javax.swing.JPanel getPanelPage1() {
514
                if (panelPage1 == null) {
515
                        panelPage1 = new javax.swing.JPanel();
516
                        panelPage1.setLayout(null);
517
                        panelPage1.setPreferredSize(new java.awt.Dimension(480, 220));
518
                        panelPage1.setVisible(true);
519
                        panelPage1.setBounds(15, 5, 480, 427);
520
                        panelPage1.add(getJPanel1(), null);
521
                        panelPage1.add(getJPanel(), null);
522
                }
523

    
524
                return panelPage1;
525
        }
526

    
527
        /**
528
         * This method initializes btnSiguiente
529
         *
530
         * @return javax.swing.JButton
531
         */
532
        private javax.swing.JButton getBtnSiguiente() {
533
                if (btnSiguiente == null) {
534
                        btnSiguiente = new org.gvsig.gui.beans.swing.JButton();
535
                        btnSiguiente.setPreferredSize(new java.awt.Dimension(100, 30));
536
                        btnSiguiente.setBounds(395, 444, 100, 20);
537
                        btnSiguiente.setText(PluginServices.getText(this, "siguiente"));
538
                        btnSiguiente.addActionListener(new java.awt.event.ActionListener() {
539
                                public void actionPerformed(java.awt.event.ActionEvent e) {
540
                                        if (page > firstPage) {
541
                                                // si page es mayor que cero, vamos enfocando las
542
                                                // sucesivas SOLAPAS del WCSParamsPanel
543
                                                wmsParamsPanel.avanzaTab();
544
                                                page = wmsParamsPanel.currentPage();
545
                                        }
546
                                        page++;
547
                                        getPanelPage1().setVisible(false);
548
                                        getPanelPage2().setVisible(true);
549
                                        activarVisualizarBotones();
550
                                }
551
                        });
552
                }
553
                return btnSiguiente;
554
        }
555

    
556
        /**
557
         * This method initializes btnAnterior
558
         *
559
         * @return javax.swing.JButton
560
         */
561
        private javax.swing.JButton getBtnAnterior() {
562
                if (btnAnterior == null) {
563
                        btnAnterior = new org.gvsig.gui.beans.swing.JButton();
564
                        btnAnterior.setBounds(292, 444, 100, 20);
565
                        btnAnterior.setPreferredSize(new java.awt.Dimension(100, 30));
566
                        btnAnterior.setText(PluginServices.getText(this, "anterior"));
567
                        btnAnterior.addActionListener(new java.awt.event.ActionListener() {
568
                                public void actionPerformed(java.awt.event.ActionEvent e) {
569
                                        page --;
570
                                        if (page > firstPage) {
571
                                                // Tenemos que retroceder en el wcsParamsPanel
572
                                                wmsParamsPanel.retrocedeTab();
573
                                                page = wmsParamsPanel.currentPage() + 1;
574
                                                activarVisualizarBotones();
575
                                        } else if (page==firstPage){
576
                                                activarVisualizarBotones();
577
                                                page = firstPage +1;
578
                                                //wmsParamsPanel.limpiaWizard();
579
                                                getLblTitle().setText("-");
580
                                                getTxtAbstract().setText("");
581
                                                wmsParamsPanel.retrocedeTab();
582
                                                getPanelPage1().setVisible(true);
583
                                                getPanelPage2().setVisible(false);
584
                                                getBtnSiguiente().setEnabled(false);
585
                                                connected = false;
586
                                        }
587
                                        listenerSupport.callStateChanged(wmsParamsPanel.isCorrectlyConfigured());
588
                                }
589
                        });
590
                }
591

    
592
                return btnAnterior;
593
        }
594

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

    
614
                return jPanel1;
615
        }
616

    
617
        /**
618
         * DOCUMENT ME!
619
         *
620
         * @param listener
621
         */
622
        public void addWizardListener(WizardListener listener) {
623
                listenerSupport.addWizardListener(listener);
624
        }
625

    
626
        /**
627
         * DOCUMENT ME!
628
         *
629
         * @param listener
630
         */
631
        public void removeWizardListener(WizardListener listener) {
632
                listenerSupport.removeWizardListener(listener);
633
        }
634

    
635
        /**
636
         * DOCUMENT ME!
637
         *
638
         * @return
639
         */
640
//        public WMSWizardDataSource getDataSource() {
641
//        return dataSource;
642
//        }
643

    
644
        /**
645
         * DOCUMENT ME!
646
         *
647
         * @param source
648
         */
649
//        public void setDataSource(WMSWizardDataSource source) {
650
//        dataSource = source;
651
//        }
652

    
653

    
654
        /**
655
         * DOCUMENT ME!
656
         *
657
         * @return DOCUMENT ME!
658
         */
659
        public String getSRS() {
660
                return wmsParamsPanel.getSRS();
661
        }
662

    
663
        /**
664
         * DOCUMENT ME!
665
         *
666
         * @return DOCUMENT ME!
667
         */
668
        public String getFormat() {
669
                return wmsParamsPanel.getFormat();
670
        }
671

    
672
        /**
673
         * DOCUMENT ME!
674
         *
675
         * @return DOCUMENT ME!
676
         */
677
        public TreePath[] getSelectedLayers() {
678
                return wmsParamsPanel.getSelectedLayers();
679
        }
680

    
681
        /**
682
         * DOCUMENT ME!
683
         *
684
         * @return DOCUMENT ME!
685
         */
686
        public Rectangle2D getLayersRectangle() throws CannotReprojectException{
687
                return wmsParamsPanel.getLayersRectangle();
688
        }
689

    
690

    
691

    
692
        /**
693
         * Devuelve el host que est? escrito en el cuadro de texto del host o null
694
         * en caso de que no haya nada escrito o est? mal escrito
695
         *
696
         * @return URL del host
697
         */
698
        public URL getHost() {
699
                try {
700
                        if ((cmbHost == null)|| (cmbHost.getModel().getSelectedItem() == null))
701
                                return new URL(dataSource.getHost());
702
                        else
703
                                return new URL(cmbHost.getModel().getSelectedItem().toString());
704
                } catch (MalformedURLException e) {
705
                        return null;
706
                }
707
        }
708

    
709
        /**
710
         * DOCUMENT ME!
711
         *
712
         * @return Nombre de la capa que aparece en el TOC.
713
         */
714
        public String getLayerName() {
715
                return wmsParamsPanel.getLayerName();
716
        }
717

    
718

    
719
        public void initWizard() {
720
                dataSource = new WMSWizardData();
721
        }
722

    
723
        public void execute() {
724

    
725
        }
726

    
727
        /**
728
         * DOCUMENT ME!
729
         *
730
         * @return DOCUMENT ME!
731
         */
732
        protected String getLayersQuery() {
733
                return wmsParamsPanel.getLayersQuery();
734
        }
735

    
736
        //gets all the layers available in the WMS
737
        public FLayer getAllLayers(){
738
                return wmsParamsPanel.getAllLayers();
739
        }
740
        
741
        public FLayer getLayer(){
742

    
743
                return wmsParamsPanel.getLayer();
744
//                if(wmsParamsPanel.getDisagregatedLayers()){
745
//                        return getLayerTree();
746
//                }else{
747
//                        return getLayerPlain();
748
//                }
749
        }
750

    
751
//        private Object[] getFullPath(String name){
752
//                Vector path = new Vector();
753
//                WMSLayerNode layerNode;
754
//                WMSLayerNode parent;
755
//                for (int i = 0; i <wmsParamsPanel.getLstSelectedLayers().getModel().getSize(); i++) {
756
//                        layerNode = (WMSLayerNode)wmsParamsPanel.getLstSelectedLayers().getModel().getElementAt(i);
757
//                        if(layerNode.getName().compareTo( name ) == 0 ){
758
//                                path.add(layerNode);
759
//                                parent = (WMSLayerNode)layerNode.getParent().clone();
760
//                                while ( parent != null){
761
//                                        path.add(parent);
762
//                                        parent = (WMSLayerNode)parent.getParent().clone();
763
//                                }
764
//                        }
765
//                }
766
//                return path.toArray();
767
//        }
768

    
769
        /**
770
         * If user does not select the chekbox Disagregate layers, will get the layer tree in WMS
771
         * @return
772
         */
773
    protected FLayer getLayerTree() {
774
        LayerTree layerTree = wmsParamsPanel.getLayerStructure();
775
                TreePath[] selection = (TreePath[])wmsParamsPanel.getSelectedPaths().toArray(new TreePath[0]);//layerTree.getSelectionPaths();
776
                if (selection!=null){
777
                        return getSubTree((WMSLayerNode)layerTree.getModel().getRoot(), selection);
778
                }
779
                return null;
780
    }
781

    
782
    protected boolean nodeSelected(TreePath[] selection, WMSLayerNode node){
783
                for (int i = 0; i < selection.length; i++) {
784
                        Object[] components = selection[i].getPath();
785
                        for (int j=0; j < components.length ; j++)
786
                        {
787
                                if (components[j] instanceof WMSLayerNode){
788
                                        if (((WMSLayerNode)components[j]).getTitle().compareTo(node.getTitle()) == 0){
789
                                                return true;
790
                                        }
791
                                }
792
                        }
793
                }
794
                return false;
795
    }
796

    
797
        protected FLayer getSubTree(WMSLayerNode node, TreePath[] selection)
798
        {
799
                if (node.getChildren().size() > 0)
800
                {
801
                //com.iver.cit.gvsig.gui.View v = (com.iver.cit.gvsig.gui.View) PluginServices.getMDIManager().getActiveView();
802
                FLayers l = new FLayers(this.getMapCtrl().getMapContext(), null);
803
                l.setName(node.getTitle());
804
                        for(int i = 0; i < node.getChildren().size(); i++ ){
805
                                if (nodeSelected(selection, (WMSLayerNode)(node.getChildren().get(i))))
806
                                {
807
                                        FLayer lyr = getSubTree((WMSLayerNode)node.getChildren().get(i), selection);
808
                                        if(lyr != null){
809
                                                l.addLayer(lyr);
810
                                        }
811
                                }
812
                        }
813
                        return l;
814
                }
815
                else{
816
                        if (nodeSelected(selection, node))
817
                        {
818
                                FLyrWMS layer = new FLyrWMS();
819
                                layer.setHost(getHost());
820
                                try {
821
                                        layer.setFullExtent(getLayersRectangle());
822
                                } catch (CannotReprojectException e) {
823
                                        e.printStackTrace();
824
                                        return null;
825
                                }
826
                                layer.setFormat(getFormat());
827
                                layer.setLayerQuery(node.getName());
828
                        layer.setInfoLayerQuery(getQueryableLayerQuery());
829
                        layer.setSRS(getSRS());
830
                        layer.setName(node.getTitle());
831
                        layer.setWmsTransparency(getTransparency());
832
                        layer.setStyles(getStyles());
833
                        layer.setDimensions(getDimensions());
834
                        layer.setDriver(getDriver());
835
                        layer.setOnlineResources(getOnlineResources());
836
                        layer.setFixedSize(getFixedSize());
837
                        layer.setQueryable(isQueryable());
838

    
839
                        return layer;
840

    
841
                        }else{
842
                                return null;
843
                        }
844
                }
845
        }
846

    
847
        /**
848
         * If user selects the chekbox Disagregate layers, will get the selected layers rendered in one
849
         * the tree structure in WMS will be lost.
850
         * @return
851
         */
852
    protected FLayer getLayerPlain(){
853
        FLyrWMS layer = new FLyrWMS();
854
        layer.setHost(getHost());
855
        try{
856
                layer.setFullExtent(getLayersRectangle());
857
        }catch(CannotReprojectException ex)
858
        {
859
                ex.printStackTrace();
860
                JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(), ex.getMessage());
861
                return null;
862
        }
863
        layer.setFormat(getFormat());
864
        layer.setLayerQuery(getLayersQuery());
865
        layer.setInfoLayerQuery(getQueryableLayerQuery());
866
        layer.setSRS(getSRS());
867
        layer.setName(getLayerName());
868
        layer.setWmsTransparency(getTransparency());
869
        layer.setStyles(getStyles());
870
        layer.setDimensions(getDimensions());
871
        layer.setDriver(getDriver());
872
        layer.setOnlineResources(getOnlineResources());
873
        layer.setFixedSize(getFixedSize());
874
        layer.setQueryable(isQueryable());
875
        return layer;
876
    }
877

    
878
        protected boolean isQueryable() {
879
                return dataSource.isQueryable();
880
        }
881

    
882
        protected Dimension getFixedSize() {
883
                return wmsParamsPanel.getFixedSize();
884
        }
885

    
886
        private Hashtable getOnlineResources() {
887
                return wmsParamsPanel.getOnlineResources();
888
        }
889

    
890
        protected FMapWMSDriver getDriver() {
891
                return wmsParamsPanel.getDriver();
892
        }
893

    
894
        /**
895
         * @return
896
         */
897
        protected Vector getStyles() {
898
                return wmsParamsPanel.getStyles();
899
        }
900

    
901
        protected Vector getDimensions() {
902
                return wmsParamsPanel.getDimensions();
903
        }
904

    
905
        /**
906
         * @return
907
         */
908
        protected boolean getTransparency() {
909
                return wmsParamsPanel.getTransparency();
910
        }
911

    
912
        /**
913
         * DOCUMENT ME!
914
         *
915
         * @return DOCUMENT ME!
916
         */
917
        public String getQueryableLayerQuery() {
918
                return wmsParamsPanel.getQueryableLayerQuery();
919
        }
920

    
921
        /**
922
         * This method initializes chkCaching
923
         *
924
         * @return javax.swing.JCheckBox
925
         */
926
        private JCheckBox getChkCaching() {
927
                if (chkCaching == null) {
928
                        chkCaching = new JCheckBox();
929
                        chkCaching.setBounds(7, 51, 349, 20);
930
                        chkCaching.setText(PluginServices.getText(this, "refresh_capabilities"));
931
                        chkCaching.setToolTipText(PluginServices.getText(this, "refresh_capabilities_tooltip"));
932
                        chkCaching.setSelected(refreshing);
933
                        chkCaching.addItemListener(new java.awt.event.ItemListener() {
934
                                public void itemStateChanged(java.awt.event.ItemEvent e) {
935
                                        refreshing = chkCaching.isSelected();
936
                                }
937
                        });
938
                        chkCaching.addActionListener(new java.awt.event.ActionListener() {
939
                                public void actionPerformed(java.awt.event.ActionEvent e) {
940
                                        fPrefs.putBoolean("refresh_capabilities", chkCaching.isSelected());
941
                                }
942
                        });
943

    
944
                }
945
                return chkCaching;
946
        }
947

    
948
        /**
949
         * This method initializes pnlName
950
         *
951
         * @return javax.swing.JPanel
952
         */
953
        private JPanel getPnlName() {
954
                if (pnlName == null) {
955
                        pnlName = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 0));
956
                        pnlName.setBounds(new java.awt.Rectangle(9,19,452,24));
957
                        pnlName.add(getJLabel1(), null);
958
                        pnlName.add(getLblTitle(), null);
959
                }
960
                return pnlName;
961
        }
962
}  //  @jve:decl-index=0:visual-constraint="10,10"