Statistics
| Revision:

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

History | View | Annotate | Download (30.5 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.event.ActionEvent;
47
import java.awt.event.ActionListener;
48
import java.awt.geom.Rectangle2D;
49
import java.net.MalformedURLException;
50
import java.net.URL;
51
import java.util.Hashtable;
52
import java.util.Vector;
53
import java.util.prefs.Preferences;
54

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

    
62
import org.apache.log4j.Logger;
63
import org.gvsig.remoteClient.wms.ICancellable;
64

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

    
82

    
83
/**
84
 * The WMS properties container panel.
85
 *
86
 * @author Jaume Dominguez Faus
87
 */
88
public class WMSWizard extends WizardPanel implements ActionListener {
89
        private static Logger logger = Logger.getLogger(WMSWizard.class.getName());
90
        protected int page;
91
        protected boolean connected = false;
92
        private JComboServer cmbHost = null;
93
        private org.gvsig.gui.beans.swing.JButton btnConnect = null;
94
        private org.gvsig.gui.beans.swing.JButton btnCancel = null;
95
        private javax.swing.JPanel jPanel = null;
96
        private javax.swing.JLabel jLabel1 = null;
97
        private javax.swing.JLabel lblTitle = null;
98
        private javax.swing.JScrollPane jScrollPane = null;
99
        private javax.swing.JTextArea txtAbstract = null;
100
        private javax.swing.JPanel panelPage1 = null;
101
        private org.gvsig.gui.beans.swing.JButton btnSiguiente = null;
102
        private org.gvsig.gui.beans.swing.JButton btnAnterior = null;
103
        private javax.swing.JPanel jPanel1 = null;
104
        protected WizardListenerSupport listenerSupport = new WizardListenerSupport();
105
        protected WMSWizardData dataSource;
106
        protected WMSParamsPanel wmsParamsPanel = null;
107
        protected JLabel lblServerType = null;
108
        protected JLabel lblServerTypeValue = null;
109
        private JCheckBox chkCaching = null;
110
        private static Preferences fPrefs = Preferences.userRoot().node( "gvsig.wms-wizard" );
111
        private boolean refreshing = fPrefs.getBoolean("refresh_capabilities", false);
112
        protected int firstPage;
113
        private JPanel pnlName = null;
114
        private ICancellable cancel = null;
115
        
116
        /**
117
         * Thread to connect to a WMS server
118
         * @author Nacho Brodin (nachobrodin@gmail.com)
119
         */
120
        public class ConnectThread extends Thread {
121
                private ICancellable             cancel      = null;
122
                private WMSWizardData            wData       = null;
123
                private WMSWizard                wizard      = null;
124
                private String                   host        = null;
125
                
126
                public ConnectThread(ICancellable cancel, WMSWizardData wData, WMSWizard wizard, String host) {
127
                        this.cancel = cancel;
128
                        this.wData = wData;
129
                        this.wizard = wizard;
130
                        this.host = host;
131
                }
132
                
133
            public void run() {
134
                    try {
135
                                wData.setHost(new URL(host), refreshing, cancel);
136
                        } catch (ConnectionErrorLayerException e) {
137
                                getTxtAbstract().setText("The connection cannot be established");
138
                        } catch (MalformedURLException e) {
139
                                getTxtAbstract().setText("The connection cannot be established");
140
                        }
141
                        wizard.rellenarControles();
142
            }
143
        }
144

    
145
        public WMSWizard (WMSParamsPanel params){
146

    
147
                super();
148
                firstPage = 1;
149
                page = firstPage;
150
                this.wmsParamsPanel = params;
151
                this.dataSource = wmsParamsPanel.dataSource;
152

    
153
                setTabName("WMS");
154
                lblServerType = new JLabel();
155
                lblServerType.setBounds(20, 444, 100, 20);
156
                lblServerType.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
157
                lblServerType.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
158
                lblServerType.setFont(new java.awt.Font("Arial", java.awt.Font.PLAIN, 11));
159
                lblServerType.setText(PluginServices.getText(this, "server_type")+":");
160
                lblServerTypeValue = new JLabel();
161
                lblServerTypeValue.setBounds(128, 444, 148, 20);
162
                lblServerTypeValue.setFont(new java.awt.Font("Arial", java.awt.Font.BOLD, 11));
163
                lblServerTypeValue.setText("-");
164
                this.setSize(510, 468);
165
                this.setLayout(null);
166
                this.setPreferredSize(new java.awt.Dimension(750, 420));
167
                this.setVisible(true);
168

    
169
                wmsParamsPanel.setListenerSupport(this.listenerSupport);
170
                wmsParamsPanel.setBounds(0, 5, 510, 428);
171
                wmsParamsPanel.getJTabbedPane().addMouseListener(
172
                                new java.awt.event.MouseAdapter() {
173
                                        public void mouseClicked(java.awt.event.MouseEvent e) {
174
                                                page = wmsParamsPanel.currentPage() + 1;
175
                                                activarVisualizarBotones();
176
                                        }
177
                                });
178
                this.add(wmsParamsPanel, null);
179
                this.add(lblServerType, null);
180
                this.add(lblServerTypeValue, null);
181
                getPanelPage2().setVisible(true);
182

    
183
                connected = true;
184
        }
185

    
186
        /**
187
         * This is the default constructor
188
         */
189
        public WMSWizard() {
190
                super();
191
                firstPage = 0;
192
                page = firstPage;
193
                initialize();
194
                cancel = new CancelTaskImpl();
195
        }
196
        
197
        /**
198
         * This method initializes this
199
         */
200
        private void initialize() {
201
                setTabName("WMS");
202

    
203
                lblServerType = new JLabel();
204
                lblServerType.setBounds(20, 444, 100, 20);
205
                lblServerType.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
206
                lblServerType.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
207
                lblServerType.setFont(new java.awt.Font("Arial", java.awt.Font.PLAIN, 11));
208
                lblServerType.setText(PluginServices.getText(this, "server_type")+":");
209
                lblServerTypeValue = new JLabel();
210
                lblServerTypeValue.setBounds(128, 444, 148, 20);
211
                lblServerTypeValue.setFont(new java.awt.Font("Arial", java.awt.Font.BOLD, 11));
212
                lblServerTypeValue.setText("-");
213
                this.setSize(510, 468);
214
                this.setLayout(null);
215
                this.setPreferredSize(new java.awt.Dimension(750, 420));
216
                this.setVisible(true);
217
                this.add(getPanelPage1(), null);
218
                this.add(getPanelPage2(), null);
219
                this.add(getBtnAnterior(), null);
220
                this.add(getBtnSiguiente(), null);
221
                this.add(lblServerType, null);
222
                this.add(lblServerTypeValue, null);
223
                activarVisualizarBotones();
224
        }
225

    
226

    
227
        protected JPanel getPanelPage2(){
228
                if (wmsParamsPanel == null){
229
                        wmsParamsPanel = new WMSParamsPanel();
230
                        wmsParamsPanel.setListenerSupport(this.listenerSupport);
231
                        wmsParamsPanel.setBounds(0, 5, 510, 428);
232
                        wmsParamsPanel.getJTabbedPane().addMouseListener(
233
                                        new java.awt.event.MouseAdapter() {
234
                                                public void mouseClicked(java.awt.event.MouseEvent e) {
235
                                                        page = wmsParamsPanel.currentPage() + 1;
236
                                                        activarVisualizarBotones();
237
                                                }
238
                                        });
239
                }
240
                return wmsParamsPanel;
241
        }
242
        /**
243
         * DOCUMENT ME!
244
         *
245
         * @param host DOCUMENT ME!
246
         */
247
        private void addHost(String host) {
248
                host = host.trim();
249

    
250
                ServerDataPersistence persistence = new ServerDataPersistence(this,ServerData.SERVER_TYPE_WMS);
251
                persistence.addServerData(new ServerData(host, ServerData.SERVER_TYPE_WMS));
252
                persistence.setPersistent();
253
        }
254

    
255
        /**
256
         * DOCUMENT ME!
257
         */
258
        private void rellenarControles() {
259
                try {
260
                        String host = cmbHost.getModel().getSelectedItem().toString();
261

    
262
                        //dataSource.setHost(new URL(host), refreshing);
263
                        lblTitle.setText(dataSource.getTitle());
264
                        lblServerTypeValue.setText(dataSource.getServerType());
265
                        txtAbstract.setText(dataSource.getAbstract());
266

    
267
                        addHost(host);
268
                        wmsParamsPanel.setWizardData(dataSource);
269
                        connected = true;
270
                        activarVisualizarBotones();
271
                } catch (Exception e) {
272
                        if (e.getMessage()==null){
273
                                txtAbstract.setText(PluginServices.getText(this,"error"));
274
                        }else{
275
                                txtAbstract.setText(e.getMessage());
276
                        }
277
                        listenerSupport.callError(e);
278
                        getBtnSiguiente().setEnabled(false);
279
                        getBtnAnterior().setEnabled(true);
280
                } finally {
281
                        getBtnCancel().setEnabled(false);
282
                }
283
        }
284
        
285
        public void actionPerformed(ActionEvent e) {
286
                if(e.getSource() == getBtnConnect()) {
287
                        getBtnCancel().setEnabled(true);
288
                        getTxtAbstract().setText("Trying to connect...");
289
                        String host = cmbHost.getModel().getSelectedItem().toString();
290
                        ((CancelTaskImpl)cancel).setCanceled(false);
291
                        new ConnectThread(cancel, dataSource, this, host).start();
292
                }
293
                
294
                if(e.getSource() == getBtnCancel()) {
295
                        getTxtAbstract().setText("Cancelled...");
296
                        ((CancelTaskImpl)cancel).setCanceled(true);
297
                        getBtnCancel().setEnabled(false);
298
                }
299
        }
300

    
301
        /**
302
         * DOCUMENT ME!
303
         */
304
        protected void activarVisualizarBotones() {
305
                if (page == firstPage) {
306
                        getBtnAnterior().setEnabled(false);
307
                        getBtnSiguiente().setVisible(true);
308

    
309
                        if (connected) {
310
                                getBtnSiguiente().setEnabled(true);
311
                        } else {
312
                                getBtnSiguiente().setEnabled(false);
313
                        }
314
                } else if (page < wmsParamsPanel.getNumTabs()) {
315
                        getBtnSiguiente().setEnabled(true);
316
                        getBtnSiguiente().setVisible(true);
317
                        getBtnAnterior().setEnabled(true);
318
                        getBtnAnterior().setVisible(true);
319
                        if (wmsParamsPanel.nextEnabledPage()==-1){
320
                                getBtnSiguiente().setEnabled(false);
321
                        }
322
                        listenerSupport.callStateChanged(wmsParamsPanel.isCorrectlyConfigured());
323
                } else if (page == wmsParamsPanel.getNumTabs()) {
324
                        getBtnSiguiente().setVisible(false);
325
                        getBtnSiguiente().setEnabled(false);
326
                        listenerSupport.callStateChanged(wmsParamsPanel
327
                                        .isCorrectlyConfigured());
328
                }
329
        }
330

    
331
        /**
332
         * This method initializes txtHost
333
         *
334
         * @return javax.swing.JTextField
335
         */
336
        private javax.swing.JComboBox getTxtHost() {
337
                if (cmbHost == null) {
338
                        cmbHost = new JComboServer();
339
                        cmbHost.setModel(new DefaultComboBoxModel());
340
                        cmbHost.setPreferredSize(new java.awt.Dimension(350, 20));
341
                        cmbHost.setBounds(11, 26, 454, 20);
342
                        cmbHost.setEditable(true);
343

    
344
                        ServerDataPersistence persistence = new ServerDataPersistence(this,ServerData.SERVER_TYPE_WMS);
345
                        ServerData[] servers = persistence.getArrayOfServerData();
346

    
347
                        if (servers.length == 0){
348
                                PluginServices ps = PluginServices.getPluginServices(this);
349
                                XMLEntity xml = ps.getPersistentXML();
350
                                try {
351
                                        String[] oldServers = xml.getStringArrayProperty("wms-servers");
352
                                        servers = new ServerData[oldServers.length];
353
                                        for (int i=0; i<oldServers.length; i++) {
354
                                                servers[i] = new ServerData(oldServers[i],ServerData.SERVER_TYPE_WMS);
355
                                        }
356
                                        xml.remove("wms-servers");
357
                                        ps.setPersistentXML(xml);
358
                                } catch (NotExistInXMLEntity e) {
359
                                        // Old servers doesn't exist
360
                                        servers = new ServerData[12];
361
                                        servers[0] = new ServerData("http://www.idee.es/wms/IDEE-Base/IDEE-Base",ServerData.SERVER_TYPE_WMS);
362
                                        servers[1] = new ServerData("http://wms.jpl.nasa.gov/wms.cgi",ServerData.SERVER_TYPE_WMS);
363
                                        servers[2] = new ServerData("http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?",ServerData.SERVER_TYPE_WMS);
364
                                        servers[3] = new ServerData("http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_patricova",ServerData.SERVER_TYPE_WMS);
365
                                        servers[4] = new ServerData("http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_parque_fondo_prug",ServerData.SERVER_TYPE_WMS);
366
                                        servers[5] = new ServerData("http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_pgof",ServerData.SERVER_TYPE_WMS);
367
                                        servers[6] = new ServerData("http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_urbanismo_tematicos",ServerData.SERVER_TYPE_WMS);
368
                                        servers[7] = new ServerData("http://onearth.jpl.nasa.gov/wms.cgi",ServerData.SERVER_TYPE_WMS);
369
                                        servers[8] = new ServerData("http://www.demis.nl/wms/wms.asp?WMS=WorldMap",ServerData.SERVER_TYPE_WMS);
370
                                        servers[9] = new ServerData("http://www.ign.es/wms-inspire/ign-base",ServerData.SERVER_TYPE_WMS);
371
                                        servers[10] = new ServerData("http://mapas.euitto.upm.es/cgi-bin/cnauticas",ServerData.SERVER_TYPE_WMS);
372
                                        servers[11] = new ServerData("http://ovc.catastro.meh.es/Cartografia/WMS/ServidorWMS.aspx", ServerData.SERVER_TYPE_WMS);
373
                                }
374

    
375
                                for (int i=0 ; i<servers.length ; i++){
376
                                        persistence.addServerData(servers[i]);
377
                                }
378
                                persistence.setPersistent();
379
                        }
380

    
381
                        cmbHost.setServerList(servers);
382

    
383

    
384
//                        XMLEntity xml = PluginServices.getPluginServices(this)
385
//                        .getPersistentXML();
386
//                        if (xml == null)
387
//                        xml = new XMLEntity();
388

    
389
//                        if (!xml.contains("wms-servers")) {
390
//                        String[] servers = new String[11];
391
//                        // Begining of rubbish code
392
//                        //
393
//                        // The following block should not exist and it only will live in the
394
//                        // 0.6 version. It fixes an error that has been happening since the 0.4 version
395
//                        // and recovers the user's server data from the wrong location that has been used to use.
396
//                        // This code will be removed from the 0.7 version
397
//                        boolean bool = false;
398
//                        {
399
//                        Class gvSIGClass = AddLayer.class; // for example... (we only need to use a class that has been loaded by gvSIG's class loader
400
//                        XMLEntity xml2 = PluginServices.getPluginServices(PluginServices.getExtension(gvSIGClass)).getPersistentXML();
401
//                        if (xml2.contains("wms-servers")) {
402
//                        String oldServers[] = xml2.getStringArrayProperty("wms-servers");
403
//                        servers = new String[servers.length+oldServers.length];
404
//                        for (int i = 0; i < oldServers.length; i++) {
405
//                        servers[oldServers.length+i] = oldServers[i];
406
//                        }
407
//                        xml2.remove("wms-servers");
408
//                        bool = true;
409
//                        }
410
//                        }
411
//                        if (!bool) {
412
//                        // end of the rubbish code (don't forget to remove the closing bracket)
413

    
414
//                        servers[0] = "http://www.idee.es/wms/IDEE-Base/IDEE-Base";
415
//                        servers[1] = "http://wms.jpl.nasa.gov/wms.cgi";
416
//                        servers[2] = "http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?";
417
//                        servers[3] = "http://demo.deegree.org:8080/deegree/wms";
418
//                        servers[4] = "http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_patricova";
419
//                        servers[5] = "http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_parque_fondo_prug";
420
//                        servers[6] = "http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_pgof";
421
//                        servers[7] = "http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_urbanismo_tematicos";
422
//                        servers[8] = "http://onearth.jpl.nasa.gov/wms.cgi";
423
//                        servers[9] = "http://www.demis.nl/wms/wms.asp?WMS=WorldMap";
424
//                        servers[9] = "http://aes.gsfc.nasa.gov/cgi-bin/wms";
425
//                        servers[10]= "http://mapas.euitto.upm.es/cgi-bin/cnauticas";
426

    
427
//                        } // this bracket will be removed too in version <= 0.7
428
//                        xml.putProperty("wms-servers", servers);
429
//                        }
430
//                        try {
431
//                        String[] servers = xml.getStringArrayProperty("wms-servers");
432
//                        for (int i = 0; i < servers.length; i++) {
433
//                        ((DefaultComboBoxModel) cmbHost.getModel()).addElement(servers[i]);
434
//                        }
435
//                        } catch (NotExistInXMLEntity e) {
436
//                        }
437
                }
438

    
439
                return cmbHost;
440
        }
441

    
442

    
443
        /**
444
         * This method initializes btnDetalles
445
         *
446
         * @return javax.swing.JButton
447
         */
448
        private javax.swing.JButton getBtnConnect() {
449
                if (btnConnect == null) {
450
                        btnConnect = new org.gvsig.gui.beans.swing.JButton();
451
                        btnConnect.setPreferredSize(new java.awt.Dimension(100, 20));
452
                        btnConnect.setBounds(272, 50, 100, 20);
453
                        btnConnect.setText(PluginServices.getText(this, "conectar"));
454
                        btnConnect.addActionListener(this);
455
                        /*btnConnect.addActionListener(new java.awt.event.ActionListener() {
456
                                public void actionPerformed(java.awt.event.ActionEvent e) {
457
                                        rellenarControles();
458
                                }
459
                        });*/
460
                }
461

    
462
                return btnConnect;
463
        }
464
        
465
        /**
466
         * This method initializes btnDetalles
467
         *
468
         * @return javax.swing.JButton
469
         */
470
        private org.gvsig.gui.beans.swing.JButton getBtnCancel() {
471
                if (btnCancel == null) {
472
                        btnCancel = new org.gvsig.gui.beans.swing.JButton();
473
                        btnCancel.setEnabled(false);
474
                        btnCancel.setPreferredSize(new java.awt.Dimension(100, 20));
475
                        btnCancel.setBounds(366, 50, 100, 20);
476
                        btnCancel.setText(PluginServices.getText(this, "cancel"));
477
                        btnCancel.addActionListener(this);
478
                }
479

    
480
                return btnCancel;
481
        }        
482

    
483
        /**
484
         * This method initializes jPanel
485
         *
486
         * @return javax.swing.JPanel
487
         */
488
        private javax.swing.JPanel getJPanel() {
489
                if (jPanel == null) {
490
                        jPanel = new javax.swing.JPanel();
491
                        jPanel.setLayout(null);
492
                        jPanel.setPreferredSize(new java.awt.Dimension(470, 130));
493
                        jPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(
494
                                        null, PluginServices.getText(this, "description"),
495
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
496
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
497
                        jPanel.setBounds(2, 96, 477, 324);
498

    
499
                        jPanel.add(getJScrollPane(), null);
500
                        jPanel.add(getPnlName(), null);
501
                }
502

    
503
                return jPanel;
504
        }
505

    
506
        /**
507
         * This method initializes jLabel1
508
         *
509
         * @return javax.swing.JLabel
510
         */
511
        private javax.swing.JLabel getJLabel1() {
512
                if (jLabel1 == null) {
513
                        jLabel1 = new javax.swing.JLabel();
514
                        jLabel1.setText(PluginServices.getText(this, "name") + ":");
515
                }
516

    
517
                return jLabel1;
518
        }
519

    
520
        /**
521
         * This method initializes lblTitle
522
         *
523
         * @return javax.swing.JLabel
524
         */
525
        private javax.swing.JLabel getLblTitle() {
526
                if (lblTitle == null) {
527
                        lblTitle = new javax.swing.JLabel();
528
                        lblTitle.setText("-");
529
                }
530

    
531
                return lblTitle;
532
        }
533

    
534
        /**
535
         * This method initializes jScrollPane
536
         *
537
         * @return javax.swing.JScrollPane
538
         */
539
        private javax.swing.JScrollPane getJScrollPane() {
540
                if (jScrollPane == null) {
541
                        jScrollPane = new javax.swing.JScrollPane();
542
                        jScrollPane.setViewportView(getTxtAbstract());
543
                        jScrollPane.setPreferredSize(new java.awt.Dimension(450, 60));
544
                        jScrollPane.setBounds(10, 47, 457, 267);
545
                }
546

    
547
                return jScrollPane;
548
        }
549

    
550
        /**
551
         * This method initializes txtAbstract
552
         *
553
         * @return javax.swing.JTextArea
554
         */
555
        private javax.swing.JTextArea getTxtAbstract() {
556
                if (txtAbstract == null) {
557
                        txtAbstract = new javax.swing.JTextArea();
558
                        txtAbstract.setWrapStyleWord(true);
559
                        txtAbstract.setColumns(30);
560
                        txtAbstract.setLineWrap(true);
561
                }
562

    
563
                return txtAbstract;
564
        }
565

    
566
        /**
567
         * This method initializes panelPage1
568
         *
569
         * @return javax.swing.JPanel
570
         */
571
        private javax.swing.JPanel getPanelPage1() {
572
                if (panelPage1 == null) {
573
                        panelPage1 = new javax.swing.JPanel();
574
                        panelPage1.setLayout(null);
575
                        panelPage1.setPreferredSize(new java.awt.Dimension(480, 220));
576
                        panelPage1.setVisible(true);
577
                        panelPage1.setBounds(15, 5, 480, 427);
578
                        panelPage1.add(getJPanel1(), null);
579
                        panelPage1.add(getJPanel(), null);
580
                }
581

    
582
                return panelPage1;
583
        }
584

    
585
        /**
586
         * This method initializes btnSiguiente
587
         *
588
         * @return javax.swing.JButton
589
         */
590
        private javax.swing.JButton getBtnSiguiente() {
591
                if (btnSiguiente == null) {
592
                        btnSiguiente = new org.gvsig.gui.beans.swing.JButton();
593
                        btnSiguiente.setPreferredSize(new java.awt.Dimension(100, 30));
594
                        btnSiguiente.setBounds(395, 444, 100, 20);
595
                        btnSiguiente.setText(PluginServices.getText(this, "siguiente"));
596
                        btnSiguiente.addActionListener(new java.awt.event.ActionListener() {
597
                                public void actionPerformed(java.awt.event.ActionEvent e) {
598
                                        if (page > firstPage) {
599
                                                // si page es mayor que cero, vamos enfocando las
600
                                                // sucesivas SOLAPAS del WCSParamsPanel
601
                                                wmsParamsPanel.avanzaTab();
602
                                                page = wmsParamsPanel.currentPage();
603
                                        }
604
                                        page++;
605
                                        getPanelPage1().setVisible(false);
606
                                        getPanelPage2().setVisible(true);
607
                                        activarVisualizarBotones();
608
                                }
609
                        });
610
                }
611
                return btnSiguiente;
612
        }
613

    
614
        /**
615
         * This method initializes btnAnterior
616
         *
617
         * @return javax.swing.JButton
618
         */
619
        private javax.swing.JButton getBtnAnterior() {
620
                if (btnAnterior == null) {
621
                        btnAnterior = new org.gvsig.gui.beans.swing.JButton();
622
                        btnAnterior.setBounds(292, 444, 100, 20);
623
                        btnAnterior.setPreferredSize(new java.awt.Dimension(100, 30));
624
                        btnAnterior.setText(PluginServices.getText(this, "anterior"));
625
                        btnAnterior.addActionListener(new java.awt.event.ActionListener() {
626
                                public void actionPerformed(java.awt.event.ActionEvent e) {
627
                                        page --;
628
                                        if (page > firstPage) {
629
                                                // Tenemos que retroceder en el wcsParamsPanel
630
                                                wmsParamsPanel.retrocedeTab();
631
                                                page = wmsParamsPanel.currentPage() + 1;
632
                                                activarVisualizarBotones();
633
                                        } else if (page==firstPage){
634
                                                activarVisualizarBotones();
635
                                                page = firstPage +1;
636
                                                //wmsParamsPanel.limpiaWizard();
637
                                                getLblTitle().setText("-");
638
                                                getTxtAbstract().setText("");
639
                                                wmsParamsPanel.retrocedeTab();
640
                                                getPanelPage1().setVisible(true);
641
                                                getPanelPage2().setVisible(false);
642
                                                getBtnSiguiente().setEnabled(false);
643
                                                connected = false;
644
                                        }
645
                                        listenerSupport.callStateChanged(wmsParamsPanel.isCorrectlyConfigured());
646
                                }
647
                        });
648
                }
649

    
650
                return btnAnterior;
651
        }
652

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

    
673
                return jPanel1;
674
        }
675

    
676
        /**
677
         * DOCUMENT ME!
678
         *
679
         * @param listener
680
         */
681
        public void addWizardListener(WizardListener listener) {
682
                listenerSupport.addWizardListener(listener);
683
        }
684

    
685
        /**
686
         * DOCUMENT ME!
687
         *
688
         * @param listener
689
         */
690
        public void removeWizardListener(WizardListener listener) {
691
                listenerSupport.removeWizardListener(listener);
692
        }
693

    
694
        /**
695
         * DOCUMENT ME!
696
         *
697
         * @return
698
         */
699
//        public WMSWizardDataSource getDataSource() {
700
//        return dataSource;
701
//        }
702

    
703
        /**
704
         * DOCUMENT ME!
705
         *
706
         * @param source
707
         */
708
//        public void setDataSource(WMSWizardDataSource source) {
709
//        dataSource = source;
710
//        }
711

    
712

    
713
        /**
714
         * DOCUMENT ME!
715
         *
716
         * @return DOCUMENT ME!
717
         */
718
        public String getSRS() {
719
                return wmsParamsPanel.getSRS();
720
        }
721

    
722
        /**
723
         * DOCUMENT ME!
724
         *
725
         * @return DOCUMENT ME!
726
         */
727
        public String getFormat() {
728
                return wmsParamsPanel.getFormat();
729
        }
730

    
731
        /**
732
         * DOCUMENT ME!
733
         *
734
         * @return DOCUMENT ME!
735
         */
736
        public TreePath[] getSelectedLayers() {
737
                return wmsParamsPanel.getSelectedLayers();
738
        }
739

    
740
        /**
741
         * DOCUMENT ME!
742
         *
743
         * @return DOCUMENT ME!
744
         * @throws ProjectionLayerException
745
         */
746
        public Rectangle2D getLayersRectangle() throws ProjectionLayerException{
747
                return wmsParamsPanel.getLayersRectangle();
748
        }
749

    
750

    
751

    
752
        /**
753
         * Devuelve el host que est? escrito en el cuadro de texto del host o null
754
         * en caso de que no haya nada escrito o est? mal escrito
755
         *
756
         * @return URL del host
757
         */
758
        public URL getHost() {
759
                try {
760
                        if ((cmbHost == null)|| (cmbHost.getModel().getSelectedItem() == null))
761
                                return new URL(dataSource.getHost());
762
                        else
763
                                return new URL(cmbHost.getModel().getSelectedItem().toString());
764
                } catch (MalformedURLException e) {
765
                        return null;
766
                }
767
        }
768

    
769
        /**
770
         * DOCUMENT ME!
771
         *
772
         * @return Nombre de la capa que aparece en el TOC.
773
         */
774
        public String getLayerName() {
775
                return wmsParamsPanel.getLayerName();
776
        }
777

    
778

    
779
        public void initWizard() {
780
                dataSource = new WMSWizardData();
781
        }
782

    
783
        public void execute() {
784

    
785
        }
786

    
787
        /**
788
         * DOCUMENT ME!
789
         *
790
         * @return DOCUMENT ME!
791
         */
792
        protected String getLayersQuery() {
793
                return wmsParamsPanel.getLayersQuery();
794
        }
795

    
796
        //gets all the layers available in the WMS
797
        public FLayer getAllLayers(){
798
                return wmsParamsPanel.getAllLayers();
799
        }
800

    
801
        public FLayer getLayer(){
802

    
803
                return wmsParamsPanel.getLayer();
804
//                if(wmsParamsPanel.getDisagregatedLayers()){
805
//                        return getLayerTree();
806
//                }else{
807
//                        return getLayerPlain();
808
//                }
809
        }
810

    
811
//        private Object[] getFullPath(String name){
812
//                Vector path = new Vector();
813
//                WMSLayerNode layerNode;
814
//                WMSLayerNode parent;
815
//                for (int i = 0; i <wmsParamsPanel.getLstSelectedLayers().getModel().getSize(); i++) {
816
//                        layerNode = (WMSLayerNode)wmsParamsPanel.getLstSelectedLayers().getModel().getElementAt(i);
817
//                        if(layerNode.getName().compareTo( name ) == 0 ){
818
//                                path.add(layerNode);
819
//                                parent = (WMSLayerNode)layerNode.getParent().clone();
820
//                                while ( parent != null){
821
//                                        path.add(parent);
822
//                                        parent = (WMSLayerNode)parent.getParent().clone();
823
//                                }
824
//                        }
825
//                }
826
//                return path.toArray();
827
//        }
828

    
829
        /**
830
         * If user does not select the chekbox Disagregate layers, will get the layer tree in WMS
831
         * @return
832
         */
833
    protected FLayer getLayerTree() {
834
        LayerTree layerTree = wmsParamsPanel.getLayerStructure();
835
                TreePath[] selection = (TreePath[])wmsParamsPanel.getSelectedPaths().toArray(new TreePath[0]);//layerTree.getSelectionPaths();
836
                if (selection!=null){
837
                        return getSubTree((WMSLayerNode)layerTree.getModel().getRoot(), selection);
838
                }
839
                return null;
840
    }
841

    
842
    protected boolean nodeSelected(TreePath[] selection, WMSLayerNode node){
843
                for (int i = 0; i < selection.length; i++) {
844
                        Object[] components = selection[i].getPath();
845
                        for (int j=0; j < components.length ; j++)
846
                        {
847
                                if (components[j] instanceof WMSLayerNode){
848
                                        if (((WMSLayerNode)components[j]).getTitle().compareTo(node.getTitle()) == 0){
849
                                                return true;
850
                                        }
851
                                }
852
                        }
853
                }
854
                return false;
855
    }
856

    
857
    /**
858
     * @deprecated
859
     * @param node
860
     * @param selection
861
     * @return
862
     */
863
        protected FLayer getSubTree(WMSLayerNode node, TreePath[] selection)
864
        {
865
                if (node.getChildren().size() > 0)
866
                {
867
                //com.iver.cit.gvsig.gui.View v = (com.iver.cit.gvsig.gui.View) PluginServices.getMDIManager().getActiveView();
868
                FLayers l = new FLayers();
869
                l.setMapContext(this.getMapCtrl().getMapContext());
870
                l.setName(node.getTitle());
871
                        for(int i = 0; i < node.getChildren().size(); i++ ){
872
                                if (nodeSelected(selection, (WMSLayerNode)(node.getChildren().get(i))))
873
                                {
874
                                        FLayer lyr = getSubTree((WMSLayerNode)node.getChildren().get(i), selection);
875
                                        if(lyr != null){
876
                                                l.addLayer(lyr);
877
                                        }
878
                                }
879
                        }
880
                        return l;
881
                }
882
                else{
883
                        if (nodeSelected(selection, node))
884
                        {
885
                                FLyrWMS layer = new FLyrWMS();
886
                                layer.setHost(getHost());
887
                                try {
888
                                        layer.setFullExtent(getLayersRectangle());
889
                                } catch (ProjectionLayerException e) {
890
                                        e.printStackTrace();
891
                                        return null;
892
                                }
893
                                layer.setFormat(getFormat());
894
                                layer.setLayerQuery(node.getName());
895
                        layer.setInfoLayerQuery(getQueryableLayerQuery());
896
                        layer.setSRS(getSRS());
897
                        layer.setName(node.getTitle());
898
                        layer.setWmsTransparency(getTransparency());
899
                        layer.setStyles(getStyles());
900
                        layer.setDimensions(getDimensions());
901
                        layer.setDriver(getDriver());
902
                        layer.setOnlineResources(getOnlineResources());
903
                        layer.setFixedSize(getFixedSize());
904
                        layer.setQueryable(node.isQueryable());
905

    
906
                        return layer;
907

    
908
                        }else{
909
                                return null;
910
                        }
911
                }
912
        }
913

    
914
        /**
915
         * @deprecated
916
         * If user selects the chekbox Disagregate layers, will get the selected layers rendered in one
917
         * the tree structure in WMS will be lost.
918
         * @return
919
         */
920
    protected FLayer getLayerPlain(){
921
        FLyrWMS layer = new FLyrWMS();
922
        layer.setHost(getHost());
923
        try{
924
                layer.setFullExtent(getLayersRectangle());
925
        }catch(ProjectionLayerException ex)
926
        {
927
                ex.printStackTrace();
928
                JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(), ex.getMessage());
929
                return null;
930
        }
931
        layer.setFormat(getFormat());
932
        layer.setLayerQuery(getLayersQuery());
933
        layer.setInfoLayerQuery(getQueryableLayerQuery());
934
        layer.setSRS(getSRS());
935
        layer.setName(getLayerName());
936
        layer.setWmsTransparency(getTransparency());
937
        layer.setStyles(getStyles());
938
        layer.setDimensions(getDimensions());
939
        layer.setDriver(getDriver());
940
        layer.setOnlineResources(getOnlineResources());
941
        layer.setFixedSize(getFixedSize());
942
        layer.setQueryable(isQueryable());
943
        return layer;
944
    }
945

    
946
        protected boolean isQueryable() {
947
                return dataSource.isQueryable();
948
        }
949

    
950
        protected Dimension getFixedSize() {
951
                return wmsParamsPanel.getFixedSize();
952
        }
953

    
954
        private Hashtable getOnlineResources() {
955
                return wmsParamsPanel.getOnlineResources();
956
        }
957

    
958
        protected FMapWMSDriver getDriver() {
959
                return wmsParamsPanel.getDriver();
960
        }
961

    
962
        /**
963
         * @return
964
         */
965
        protected Vector getStyles() {
966
                return wmsParamsPanel.getStyles();
967
        }
968

    
969
        protected Vector getDimensions() {
970
                return wmsParamsPanel.getDimensions();
971
        }
972

    
973
        /**
974
         * @return
975
         */
976
        protected boolean getTransparency() {
977
                return wmsParamsPanel.getTransparency();
978
        }
979

    
980
        /**
981
         * DOCUMENT ME!
982
         *
983
         * @return DOCUMENT ME!
984
         */
985
        public String getQueryableLayerQuery() {
986
                return wmsParamsPanel.getQueryableLayerQuery();
987
        }
988

    
989
        /**
990
         * This method initializes chkCaching
991
         *
992
         * @return javax.swing.JCheckBox
993
         */
994
        private JCheckBox getChkCaching() {
995
                if (chkCaching == null) {
996
                        chkCaching = new JCheckBox();
997
                        chkCaching.setBounds(7, 51, 249, 20);
998
                        chkCaching.setText(PluginServices.getText(this, "refresh_capabilities"));
999
                        chkCaching.setToolTipText(PluginServices.getText(this, "refresh_capabilities_tooltip"));
1000
                        chkCaching.setSelected(refreshing);
1001
                        chkCaching.addItemListener(new java.awt.event.ItemListener() {
1002
                                public void itemStateChanged(java.awt.event.ItemEvent e) {
1003
                                        refreshing = chkCaching.isSelected();
1004
                                }
1005
                        });
1006
                        chkCaching.addActionListener(new java.awt.event.ActionListener() {
1007
                                public void actionPerformed(java.awt.event.ActionEvent e) {
1008
                                        fPrefs.putBoolean("refresh_capabilities", chkCaching.isSelected());
1009
                                }
1010
                        });
1011

    
1012
                }
1013
                return chkCaching;
1014
        }
1015

    
1016
        /**
1017
         * This method initializes pnlName
1018
         *
1019
         * @return javax.swing.JPanel
1020
         */
1021
        private JPanel getPnlName() {
1022
                if (pnlName == null) {
1023
                        pnlName = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 0));
1024
                        pnlName.setBounds(new java.awt.Rectangle(9,19,452,24));
1025
                        pnlName.add(getJLabel1(), null);
1026
                        pnlName.add(getLblTitle(), null);
1027
                }
1028
                return pnlName;
1029
        }
1030
}  //  @jve:decl-index=0:visual-constraint="10,10"