Statistics
| Revision:

root / branches / v2_0_0_prep / extensions / extWMS / src / org / gvsig / wms / gui / wizards / WMSWizard.java @ 30734

History | View | Annotate | Download (28.3 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 org.gvsig.wms.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
import org.gvsig.andami.PluginServices;
62
import org.gvsig.andami.persistence.serverData.ServerDataPersistence;
63
import org.gvsig.app.gui.WizardPanel;
64
import org.gvsig.app.gui.wizards.WizardListener;
65
import org.gvsig.app.gui.wizards.WizardListenerSupport;
66
import org.gvsig.fmap.dal.DataStoreParameters;
67
import org.gvsig.fmap.mapcontext.exceptions.ProjectionLayerException;
68
import org.gvsig.fmap.mapcontext.layers.FLayer;
69
import org.gvsig.fmap.mapcontext.layers.FLayers;
70
import org.gvsig.utils.NotExistInXMLEntity;
71
import org.gvsig.utils.XMLEntity;
72
import org.gvsig.utils.swing.jcomboServer.JComboServer;
73
import org.gvsig.utils.swing.jcomboServer.ServerData;
74
import org.gvsig.wms.fmap.drivers.wms.FMapWMSDriver;
75
import org.gvsig.wms.fmap.layers.FLyrWMS;
76
import org.gvsig.wms.fmap.layers.WMSLayerNode;
77
import org.gvsig.wms.gui.panels.LayerTree;
78
import org.gvsig.wms.gui.panels.WMSParamsPanel;
79

    
80

    
81

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

    
113
        public WMSWizard (WMSParamsPanel params){
114

    
115
                super();
116
                firstPage = 1;
117
                page = firstPage;
118
                this.wmsParamsPanel = params;
119
                this.dataSource = wmsParamsPanel.dataSource;
120

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

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

    
151
                connected = true;
152
        }
153

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

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

    
192

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

    
216
                ServerDataPersistence persistence = new ServerDataPersistence(this,ServerData.SERVER_TYPE_WMS);
217
                persistence.addServerData(new ServerData(host, ServerData.SERVER_TYPE_WMS));
218
                persistence.setPersistent();
219
        }
220

    
221
        /**
222
         * DOCUMENT ME!
223
         */
224
        private void rellenarControles() {
225
                try {
226
                        String host = cmbHost.getModel().getSelectedItem().toString();
227

    
228
                        dataSource.setHost(new URL(host), refreshing);
229
                        lblTitle.setText(dataSource.getTitle());
230
                        lblServerTypeValue.setText(dataSource.getServerType());
231
                        txtAbstract.setText(dataSource.getAbstract());
232

    
233
                        addHost(host);
234
                        wmsParamsPanel.setWizardData(dataSource);
235
                        connected = true;
236
                        activarVisualizarBotones();
237
                } catch (Exception e) {
238
                        txtAbstract.setText(e.getMessage());
239
                        listenerSupport.callError(e);
240
                        getBtnSiguiente().setEnabled(false);
241
                        getBtnAnterior().setEnabled(true);
242
//                        e.printStackTrace();
243
                }
244
        }
245

    
246
        /**
247
         * DOCUMENT ME!
248
         */
249
        protected void activarVisualizarBotones() {
250
                if (page == firstPage) {
251
                        getBtnAnterior().setEnabled(false);
252
                        getBtnSiguiente().setVisible(true);
253

    
254
                        if (connected) {
255
                                getBtnSiguiente().setEnabled(true);
256
                        } else {
257
                                getBtnSiguiente().setEnabled(false);
258
                        }
259
                } else if (page < wmsParamsPanel.getNumTabs()) {
260
                        getBtnSiguiente().setEnabled(true);
261
                        getBtnSiguiente().setVisible(true);
262
                        getBtnAnterior().setEnabled(true);
263
                        getBtnAnterior().setVisible(true);
264
                        if (wmsParamsPanel.nextEnabledPage()==-1){
265
                                getBtnSiguiente().setEnabled(false);
266
                        }
267
                        listenerSupport.callStateChanged(wmsParamsPanel.isCorrectlyConfigured());
268
                } else if (page == wmsParamsPanel.getNumTabs()) {
269
                        getBtnSiguiente().setVisible(false);
270
                        getBtnSiguiente().setEnabled(false);
271
                        listenerSupport.callStateChanged(wmsParamsPanel
272
                                        .isCorrectlyConfigured());
273
                }
274
        }
275

    
276
        /**
277
         * This method initializes txtHost
278
         *
279
         * @return javax.swing.JTextField
280
         */
281
        private javax.swing.JComboBox getTxtHost() {
282
                if (cmbHost == null) {
283
                        cmbHost = new JComboServer();
284
                        cmbHost.setModel(new DefaultComboBoxModel());
285
                        cmbHost.setPreferredSize(new java.awt.Dimension(350, 20));
286
                        cmbHost.setBounds(11, 26, 454, 20);
287
                        cmbHost.setEditable(true);
288

    
289
                        ServerDataPersistence persistence = new ServerDataPersistence(this,ServerData.SERVER_TYPE_WMS);
290
                        ServerData[] servers = persistence.getArrayOfServerData();
291

    
292
                        if (servers.length == 0){
293
                                PluginServices ps = PluginServices.getPluginServices(this);
294
                                XMLEntity xml = ps.getPersistentXML();
295
                                try {
296
                                        String[] oldServers = xml.getStringArrayProperty("wms-servers");
297
                                        servers = new ServerData[oldServers.length];
298
                                        for (int i=0; i<oldServers.length; i++) {
299
                                                servers[i] = new ServerData(oldServers[i],ServerData.SERVER_TYPE_WMS);
300
                                        }
301
                                        xml.remove("wms-servers");
302
                                        ps.setPersistentXML(xml);
303
                                } catch (NotExistInXMLEntity e) {
304
                                        // Old servers doesn't exist
305
                                        servers = new ServerData[12];
306
                                        servers[0] = new ServerData("http://www.idee.es/wms/IDEE-Base/IDEE-Base",ServerData.SERVER_TYPE_WMS);
307
                                        servers[1] = new ServerData("http://wms.jpl.nasa.gov/wms.cgi",ServerData.SERVER_TYPE_WMS);
308
                                        servers[2] = new ServerData("http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?",ServerData.SERVER_TYPE_WMS);
309
                                        servers[3] = new ServerData("http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_patricova",ServerData.SERVER_TYPE_WMS);
310
                                        servers[4] = new ServerData("http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_parque_fondo_prug",ServerData.SERVER_TYPE_WMS);
311
                                        servers[5] = new ServerData("http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_pgof",ServerData.SERVER_TYPE_WMS);
312
                                        servers[6] = new ServerData("http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_urbanismo_tematicos",ServerData.SERVER_TYPE_WMS);
313
                                        servers[7] = new ServerData("http://onearth.jpl.nasa.gov/wms.cgi",ServerData.SERVER_TYPE_WMS);
314
                                        servers[8] = new ServerData("http://www.demis.nl/wms/wms.asp?WMS=WorldMap",ServerData.SERVER_TYPE_WMS);
315
                                        servers[9] = new ServerData("http://aes.gsfc.nasa.gov/cgi-bin/wms",ServerData.SERVER_TYPE_WMS);
316
                                        servers[10] = new ServerData("http://mapas.euitto.upm.es/cgi-bin/cnauticas",ServerData.SERVER_TYPE_WMS);
317
                                        servers[11] = new ServerData("http://ovc.catastro.meh.es/Cartografia/WMS/ServidorWMS.aspx", ServerData.SERVER_TYPE_WMS);
318
                                }
319

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

    
326
                        cmbHost.setServerList(servers);
327

    
328

    
329
//                        XMLEntity xml = PluginServices.getPluginServices(this)
330
//                        .getPersistentXML();
331
//                        if (xml == null)
332
//                        xml = new XMLEntity();
333

    
334
//                        if (!xml.contains("wms-servers")) {
335
//                        String[] servers = new String[11];
336
//                        // Begining of rubbish code
337
//                        //
338
//                        // The following block should not exist and it only will live in the
339
//                        // 0.6 version. It fixes an error that has been happening since the 0.4 version
340
//                        // and recovers the user's server data from the wrong location that has been used to use.
341
//                        // This code will be removed from the 0.7 version
342
//                        boolean bool = false;
343
//                        {
344
//                        Class gvSIGClass = AddLayer.class; // for example... (we only need to use a class that has been loaded by gvSIG's class loader
345
//                        XMLEntity xml2 = PluginServices.getPluginServices(PluginServices.getExtension(gvSIGClass)).getPersistentXML();
346
//                        if (xml2.contains("wms-servers")) {
347
//                        String oldServers[] = xml2.getStringArrayProperty("wms-servers");
348
//                        servers = new String[servers.length+oldServers.length];
349
//                        for (int i = 0; i < oldServers.length; i++) {
350
//                        servers[oldServers.length+i] = oldServers[i];
351
//                        }
352
//                        xml2.remove("wms-servers");
353
//                        bool = true;
354
//                        }
355
//                        }
356
//                        if (!bool) {
357
//                        // end of the rubbish code (don't forget to remove the closing bracket)
358

    
359
//                        servers[0] = "http://www.idee.es/wms/IDEE-Base/IDEE-Base";
360
//                        servers[1] = "http://wms.jpl.nasa.gov/wms.cgi";
361
//                        servers[2] = "http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?";
362
//                        servers[3] = "http://demo.deegree.org:8080/deegree/wms";
363
//                        servers[4] = "http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_patricova";
364
//                        servers[5] = "http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_parque_fondo_prug";
365
//                        servers[6] = "http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_pgof";
366
//                        servers[7] = "http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_urbanismo_tematicos";
367
//                        servers[8] = "http://onearth.jpl.nasa.gov/wms.cgi";
368
//                        servers[9] = "http://www.demis.nl/wms/wms.asp?WMS=WorldMap";
369
//                        servers[9] = "http://aes.gsfc.nasa.gov/cgi-bin/wms";
370
//                        servers[10]= "http://mapas.euitto.upm.es/cgi-bin/cnauticas";
371

    
372
//                        } // this bracket will be removed too in version <= 0.7
373
//                        xml.putProperty("wms-servers", servers);
374
//                        }
375
//                        try {
376
//                        String[] servers = xml.getStringArrayProperty("wms-servers");
377
//                        for (int i = 0; i < servers.length; i++) {
378
//                        ((DefaultComboBoxModel) cmbHost.getModel()).addElement(servers[i]);
379
//                        }
380
//                        } catch (NotExistInXMLEntity e) {
381
//                        }
382
                }
383

    
384
                return cmbHost;
385
        }
386

    
387

    
388
        /**
389
         * This method initializes btnDetalles
390
         *
391
         * @return javax.swing.JButton
392
         */
393
        private javax.swing.JButton getBtnConnect() {
394
                if (btnConnect == null) {
395
                        btnConnect = new org.gvsig.gui.beans.swing.JButton();
396
                        btnConnect.setPreferredSize(new java.awt.Dimension(100, 20));
397
                        btnConnect.setBounds(366, 50, 100, 20);
398
                        btnConnect.setText(PluginServices.getText(this, "conectar"));
399
                        btnConnect.addActionListener(new java.awt.event.ActionListener() {
400
                                public void actionPerformed(java.awt.event.ActionEvent e) {
401
                                        rellenarControles();
402
                                }
403
                        });
404
                }
405

    
406
                return btnConnect;
407
        }
408

    
409
        /**
410
         * This method initializes jPanel
411
         *
412
         * @return javax.swing.JPanel
413
         */
414
        private javax.swing.JPanel getJPanel() {
415
                if (jPanel == null) {
416
                        jPanel = new javax.swing.JPanel();
417
                        jPanel.setLayout(null);
418
                        jPanel.setPreferredSize(new java.awt.Dimension(470, 130));
419
                        jPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(
420
                                        null, PluginServices.getText(this, "description"),
421
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
422
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
423
                        jPanel.setBounds(2, 96, 477, 324);
424

    
425
                        jPanel.add(getJScrollPane(), null);
426
                        jPanel.add(getPnlName(), null);
427
                }
428

    
429
                return jPanel;
430
        }
431

    
432
        /**
433
         * This method initializes jLabel1
434
         *
435
         * @return javax.swing.JLabel
436
         */
437
        private javax.swing.JLabel getJLabel1() {
438
                if (jLabel1 == null) {
439
                        jLabel1 = new javax.swing.JLabel();
440
                        jLabel1.setText(PluginServices.getText(this, "name") + ":");
441
                }
442

    
443
                return jLabel1;
444
        }
445

    
446
        /**
447
         * This method initializes lblTitle
448
         *
449
         * @return javax.swing.JLabel
450
         */
451
        private javax.swing.JLabel getLblTitle() {
452
                if (lblTitle == null) {
453
                        lblTitle = new javax.swing.JLabel();
454
                        lblTitle.setText("-");
455
                }
456

    
457
                return lblTitle;
458
        }
459

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

    
473
                return jScrollPane;
474
        }
475

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

    
489
                return txtAbstract;
490
        }
491

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

    
508
                return panelPage1;
509
        }
510

    
511
        /**
512
         * This method initializes btnSiguiente
513
         *
514
         * @return javax.swing.JButton
515
         */
516
        private javax.swing.JButton getBtnSiguiente() {
517
                if (btnSiguiente == null) {
518
                        btnSiguiente = new org.gvsig.gui.beans.swing.JButton();
519
                        btnSiguiente.setPreferredSize(new java.awt.Dimension(100, 30));
520
                        btnSiguiente.setBounds(395, 444, 100, 20);
521
                        btnSiguiente.setText(PluginServices.getText(this, "siguiente"));
522
                        btnSiguiente.addActionListener(new java.awt.event.ActionListener() {
523
                                public void actionPerformed(java.awt.event.ActionEvent e) {
524
                                        if (page > firstPage) {
525
                                                // si page es mayor que cero, vamos enfocando las
526
                                                // sucesivas SOLAPAS del WCSParamsPanel
527
                                                wmsParamsPanel.avanzaTab();
528
                                                page = wmsParamsPanel.currentPage();
529
                                        }
530
                                        page++;
531
                                        getPanelPage1().setVisible(false);
532
                                        getPanelPage2().setVisible(true);
533
                                        activarVisualizarBotones();
534
                                }
535
                        });
536
                }
537
                return btnSiguiente;
538
        }
539

    
540
        /**
541
         * This method initializes btnAnterior
542
         *
543
         * @return javax.swing.JButton
544
         */
545
        private javax.swing.JButton getBtnAnterior() {
546
                if (btnAnterior == null) {
547
                        btnAnterior = new org.gvsig.gui.beans.swing.JButton();
548
                        btnAnterior.setBounds(292, 444, 100, 20);
549
                        btnAnterior.setPreferredSize(new java.awt.Dimension(100, 30));
550
                        btnAnterior.setText(PluginServices.getText(this, "anterior"));
551
                        btnAnterior.addActionListener(new java.awt.event.ActionListener() {
552
                                public void actionPerformed(java.awt.event.ActionEvent e) {
553
                                        page --;
554
                                        if (page > firstPage) {
555
                                                // Tenemos que retroceder en el wcsParamsPanel
556
                                                wmsParamsPanel.retrocedeTab();
557
                                                page = wmsParamsPanel.currentPage() + 1;
558
                                                activarVisualizarBotones();
559
                                        } else if (page==firstPage){
560
                                                activarVisualizarBotones();
561
                                                page = firstPage +1;
562
                                                //wmsParamsPanel.limpiaWizard();
563
                                                getLblTitle().setText("-");
564
                                                getTxtAbstract().setText("");
565
                                                wmsParamsPanel.retrocedeTab();
566
                                                getPanelPage1().setVisible(true);
567
                                                getPanelPage2().setVisible(false);
568
                                                getBtnSiguiente().setEnabled(false);
569
                                                connected = false;
570
                                        }
571
                                        listenerSupport.callStateChanged(wmsParamsPanel.isCorrectlyConfigured());
572
                                }
573
                        });
574
                }
575

    
576
                return btnAnterior;
577
        }
578

    
579
        /**
580
         * This method initializes jPanel1
581
         *
582
         * @return javax.swing.JPanel
583
         */
584
        private javax.swing.JPanel getJPanel1() {
585
                if (jPanel1 == null) {
586
                        jPanel1 = new javax.swing.JPanel();
587
                        jPanel1.setLayout(null);
588
                        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(
589
                                        null, PluginServices.getText(this, "server"),
590
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
591
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
592
                        jPanel1.setBounds(2, 5, 477, 85);
593
                        jPanel1.add(getTxtHost(), null);
594
                        jPanel1.add(getBtnConnect(), null);
595
                        jPanel1.add(getChkCaching(), null);
596
                }
597

    
598
                return jPanel1;
599
        }
600

    
601
        /**
602
         * DOCUMENT ME!
603
         *
604
         * @param listener
605
         */
606
        public void addWizardListener(WizardListener listener) {
607
                listenerSupport.addWizardListener(listener);
608
        }
609

    
610
        /**
611
         * DOCUMENT ME!
612
         *
613
         * @param listener
614
         */
615
        public void removeWizardListener(WizardListener listener) {
616
                listenerSupport.removeWizardListener(listener);
617
        }
618

    
619
        /**
620
         * DOCUMENT ME!
621
         *
622
         * @return
623
         */
624
//        public WMSWizardDataSource getDataSource() {
625
//        return dataSource;
626
//        }
627

    
628
        /**
629
         * DOCUMENT ME!
630
         *
631
         * @param source
632
         */
633
//        public void setDataSource(WMSWizardDataSource source) {
634
//        dataSource = source;
635
//        }
636

    
637

    
638
        /**
639
         * DOCUMENT ME!
640
         *
641
         * @return DOCUMENT ME!
642
         */
643
        public String getSRS() {
644
                return wmsParamsPanel.getSRS();
645
        }
646

    
647
        /**
648
         * DOCUMENT ME!
649
         *
650
         * @return DOCUMENT ME!
651
         */
652
        public String getFormat() {
653
                return wmsParamsPanel.getFormat();
654
        }
655

    
656
        /**
657
         * DOCUMENT ME!
658
         *
659
         * @return DOCUMENT ME!
660
         */
661
        public TreePath[] getSelectedLayers() {
662
                return wmsParamsPanel.getSelectedLayers();
663
        }
664

    
665
        /**
666
         * DOCUMENT ME!
667
         *
668
         * @return DOCUMENT ME!
669
         * @throws ProjectionLayerException
670
         */
671
        public Rectangle2D getLayersRectangle() throws ProjectionLayerException{
672
                return wmsParamsPanel.getLayersRectangle();
673
        }
674

    
675

    
676

    
677
        /**
678
         * Devuelve el host que est? escrito en el cuadro de texto del host o null
679
         * en caso de que no haya nada escrito o est? mal escrito
680
         *
681
         * @return URL del host
682
         */
683
        public URL getHost() {
684
                try {
685
                        if ((cmbHost == null)|| (cmbHost.getModel().getSelectedItem() == null)) {
686
                                return new URL(dataSource.getHost());
687
                        } else {
688
                                return new URL(cmbHost.getModel().getSelectedItem().toString());
689
                        }
690
                } catch (MalformedURLException e) {
691
                        return null;
692
                }
693
        }
694

    
695
        /**
696
         * DOCUMENT ME!
697
         *
698
         * @return Nombre de la capa que aparece en el TOC.
699
         */
700
        public String getLayerName() {
701
                return wmsParamsPanel.getLayerName();
702
        }
703

    
704

    
705
        public void initWizard() {
706
                dataSource = new WMSWizardData();
707
        }
708

    
709
        public void execute() {
710
                this.getMapCtrl().getMapContext().getLayers().addLayer(this.getLayer());
711

    
712
        }
713

    
714
        /**
715
         * DOCUMENT ME!
716
         *
717
         * @return DOCUMENT ME!
718
         */
719
        protected String getLayersQuery() {
720
                return wmsParamsPanel.getLayersQuery();
721
        }
722

    
723
        //gets all the layers available in the WMS
724
        public FLayer getAllLayers(){
725
                return wmsParamsPanel.getAllLayers();
726
        }
727

    
728
        public FLayer getLayer(){
729

    
730
                return wmsParamsPanel.getLayer();
731
//                if(wmsParamsPanel.getDisagregatedLayers()){
732
//                        return getLayerTree();
733
//                }else{
734
//                        return getLayerPlain();
735
//                }
736
        }
737

    
738
//        private Object[] getFullPath(String name){
739
//                Vector path = new Vector();
740
//                WMSLayerNode layerNode;
741
//                WMSLayerNode parent;
742
//                for (int i = 0; i <wmsParamsPanel.getLstSelectedLayers().getModel().getSize(); i++) {
743
//                        layerNode = (WMSLayerNode)wmsParamsPanel.getLstSelectedLayers().getModel().getElementAt(i);
744
//                        if(layerNode.getName().compareTo( name ) == 0 ){
745
//                                path.add(layerNode);
746
//                                parent = (WMSLayerNode)layerNode.getParent().clone();
747
//                                while ( parent != null){
748
//                                        path.add(parent);
749
//                                        parent = (WMSLayerNode)parent.getParent().clone();
750
//                                }
751
//                        }
752
//                }
753
//                return path.toArray();
754
//        }
755

    
756
        /**
757
         * If user does not select the chekbox Disagregate layers, will get the layer tree in WMS
758
         * @return
759
         */
760
    protected FLayer getLayerTree() {
761
        LayerTree layerTree = wmsParamsPanel.getLayerStructure();
762
                TreePath[] selection = (TreePath[])wmsParamsPanel.getSelectedPaths().toArray(new TreePath[0]);//layerTree.getSelectionPaths();
763
                if (selection!=null){
764
                        return getSubTree((WMSLayerNode)layerTree.getModel().getRoot(), selection);
765
                }
766
                return null;
767
    }
768

    
769
    protected boolean nodeSelected(TreePath[] selection, WMSLayerNode node){
770
                for (int i = 0; i < selection.length; i++) {
771
                        Object[] components = selection[i].getPath();
772
                        for (int j=0; j < components.length ; j++)
773
                        {
774
                                if (components[j] instanceof WMSLayerNode){
775
                                        if (((WMSLayerNode)components[j]).getTitle().compareTo(node.getTitle()) == 0){
776
                                                return true;
777
                                        }
778
                                }
779
                        }
780
                }
781
                return false;
782
    }
783

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

    
833
                        return layer;
834

    
835
                        }else{
836
                                return null;
837
                        }
838
                }
839
        }
840

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

    
873
        protected boolean isQueryable() {
874
                return dataSource.isQueryable();
875
        }
876

    
877
        protected Dimension getFixedSize() {
878
                return wmsParamsPanel.getFixedSize();
879
        }
880

    
881
        private Hashtable getOnlineResources() {
882
                return wmsParamsPanel.getOnlineResources();
883
        }
884

    
885
        protected FMapWMSDriver getDriver() {
886
                return wmsParamsPanel.getDriver();
887
        }
888

    
889
        /**
890
         * @return
891
         */
892
        protected Vector getStyles() {
893
                return wmsParamsPanel.getStyles();
894
        }
895

    
896
        protected Vector getDimensions() {
897
                return wmsParamsPanel.getDimensions();
898
        }
899

    
900
        /**
901
         * @return
902
         */
903
        protected boolean getTransparency() {
904
                return wmsParamsPanel.getTransparency();
905
        }
906

    
907
        /**
908
         * DOCUMENT ME!
909
         *
910
         * @return DOCUMENT ME!
911
         */
912
        public String getQueryableLayerQuery() {
913
                return wmsParamsPanel.getQueryableLayerQuery();
914
        }
915

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

    
939
                }
940
                return chkCaching;
941
        }
942

    
943
        /**
944
         * This method initializes pnlName
945
         *
946
         * @return javax.swing.JPanel
947
         */
948
        private JPanel getPnlName() {
949
                if (pnlName == null) {
950
                        pnlName = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 0));
951
                        pnlName.setBounds(new java.awt.Rectangle(9,19,452,24));
952
                        pnlName.add(getJLabel1(), null);
953
                        pnlName.add(getLblTitle(), null);
954
                }
955
                return pnlName;
956
        }
957

    
958
        @Override
959
        public DataStoreParameters[] getParameters() {
960
                // TODO Auto-generated method stub
961
                return null;
962
        }
963
}  //  @jve:decl-index=0:visual-constraint="10,10"