Statistics
| Revision:

root / trunk / extensions / extWMS / src / com / iver / cit / gvsig / gui / wizards / WMSWizard.java @ 26307

History | View | Annotate | Download (27.9 KB)

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

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

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

    
60
import org.apache.log4j.Logger;
61

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

    
78

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

    
110
        public WMSWizard (WMSParamsPanel params){
111

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

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

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

    
148
                connected = true;
149
        }
150

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

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

    
189

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

    
213
                ServerDataPersistence persistence = new ServerDataPersistence(this,ServerData.SERVER_TYPE_WMS);
214
                persistence.addServerData(new ServerData(host, ServerData.SERVER_TYPE_WMS));
215
                persistence.setPersistent();
216
        }
217

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

    
225
                        dataSource.setHost(new URL(host), refreshing);
226
                        lblTitle.setText(dataSource.getTitle());
227
                        lblServerTypeValue.setText(dataSource.getServerType());
228
                        txtAbstract.setText(dataSource.getAbstract());
229

    
230
                        addHost(host);
231
                        wmsParamsPanel.setWizardData(dataSource);
232
                        connected = true;
233
                        activarVisualizarBotones();
234
                } catch (Exception e) {
235
                        listenerSupport.callError(e);
236
                        e.printStackTrace();
237
                }
238
        }
239

    
240
        /**
241
         * DOCUMENT ME!
242
         */
243
        protected void activarVisualizarBotones() {
244
                if (page == firstPage) {
245
                        getBtnAnterior().setEnabled(false);
246
                        getBtnSiguiente().setVisible(true);
247

    
248
                        if (connected) {
249
                                getBtnSiguiente().setEnabled(true);
250
                        } else {
251
                                getBtnSiguiente().setEnabled(false);
252
                        }
253
                } else if (page < wmsParamsPanel.getNumTabs()) {
254
                        getBtnSiguiente().setEnabled(true);
255
                        getBtnSiguiente().setVisible(true);
256
                        getBtnAnterior().setEnabled(true);
257
                        getBtnAnterior().setVisible(true);
258
                        if (wmsParamsPanel.nextEnabledPage()==-1){
259
                                getBtnSiguiente().setEnabled(false);
260
                        }
261
                        listenerSupport.callStateChanged(wmsParamsPanel.isCorrectlyConfigured());
262
                } else if (page == wmsParamsPanel.getNumTabs()) {
263
                        getBtnSiguiente().setVisible(false);
264
                        getBtnSiguiente().setEnabled(false);
265
                        listenerSupport.callStateChanged(wmsParamsPanel
266
                                        .isCorrectlyConfigured());
267
                }
268
        }
269

    
270
        /**
271
         * This method initializes txtHost
272
         *
273
         * @return javax.swing.JTextField
274
         */
275
        private javax.swing.JComboBox getTxtHost() {
276
                if (cmbHost == null) {
277
                        cmbHost = new JComboServer();
278
                        cmbHost.setModel(new DefaultComboBoxModel());
279
                        cmbHost.setPreferredSize(new java.awt.Dimension(350, 20));
280
                        cmbHost.setBounds(11, 26, 454, 20);
281
                        cmbHost.setEditable(true);
282

    
283
                        ServerDataPersistence persistence = new ServerDataPersistence(this,ServerData.SERVER_TYPE_WMS);
284
                        ServerData[] servers = persistence.getArrayOfServerData();
285

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

    
314
                                for (int i=0 ; i<servers.length ; i++){
315
                                        persistence.addServerData(servers[i]);
316
                                }
317
                                persistence.setPersistent();
318
                        }
319

    
320
                        cmbHost.setServerList(servers);
321

    
322

    
323
//                        XMLEntity xml = PluginServices.getPluginServices(this)
324
//                        .getPersistentXML();
325
//                        if (xml == null)
326
//                        xml = new XMLEntity();
327

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

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

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

    
378
                return cmbHost;
379
        }
380

    
381

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

    
400
                return btnConnect;
401
        }
402

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

    
419
                        jPanel.add(getJScrollPane(), null);
420
                        jPanel.add(getPnlName(), null);
421
                }
422

    
423
                return jPanel;
424
        }
425

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

    
437
                return jLabel1;
438
        }
439

    
440
        /**
441
         * This method initializes lblTitle
442
         *
443
         * @return javax.swing.JLabel
444
         */
445
        private javax.swing.JLabel getLblTitle() {
446
                if (lblTitle == null) {
447
                        lblTitle = new javax.swing.JLabel();
448
                        lblTitle.setText("-");
449
                }
450

    
451
                return lblTitle;
452
        }
453

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

    
467
                return jScrollPane;
468
        }
469

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

    
483
                return txtAbstract;
484
        }
485

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

    
502
                return panelPage1;
503
        }
504

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

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

    
570
                return btnAnterior;
571
        }
572

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

    
592
                return jPanel1;
593
        }
594

    
595
        /**
596
         * DOCUMENT ME!
597
         *
598
         * @param listener
599
         */
600
        public void addWizardListener(WizardListener listener) {
601
                listenerSupport.addWizardListener(listener);
602
        }
603

    
604
        /**
605
         * DOCUMENT ME!
606
         *
607
         * @param listener
608
         */
609
        public void removeWizardListener(WizardListener listener) {
610
                listenerSupport.removeWizardListener(listener);
611
        }
612

    
613
        /**
614
         * DOCUMENT ME!
615
         *
616
         * @return
617
         */
618
//        public WMSWizardDataSource getDataSource() {
619
//        return dataSource;
620
//        }
621

    
622
        /**
623
         * DOCUMENT ME!
624
         *
625
         * @param source
626
         */
627
//        public void setDataSource(WMSWizardDataSource source) {
628
//        dataSource = source;
629
//        }
630

    
631

    
632
        /**
633
         * DOCUMENT ME!
634
         *
635
         * @return DOCUMENT ME!
636
         */
637
        public String getSRS() {
638
                return wmsParamsPanel.getSRS();
639
        }
640

    
641
        /**
642
         * DOCUMENT ME!
643
         *
644
         * @return DOCUMENT ME!
645
         */
646
        public String getFormat() {
647
                return wmsParamsPanel.getFormat();
648
        }
649

    
650
        /**
651
         * DOCUMENT ME!
652
         *
653
         * @return DOCUMENT ME!
654
         */
655
        public TreePath[] getSelectedLayers() {
656
                return wmsParamsPanel.getSelectedLayers();
657
        }
658

    
659
        /**
660
         * DOCUMENT ME!
661
         *
662
         * @return DOCUMENT ME!
663
         * @throws ProjectionLayerException
664
         */
665
        public Rectangle2D getLayersRectangle() throws ProjectionLayerException{
666
                return wmsParamsPanel.getLayersRectangle();
667
        }
668

    
669

    
670

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

    
688
        /**
689
         * DOCUMENT ME!
690
         *
691
         * @return Nombre de la capa que aparece en el TOC.
692
         */
693
        public String getLayerName() {
694
                return wmsParamsPanel.getLayerName();
695
        }
696

    
697

    
698
        public void initWizard() {
699
                dataSource = new WMSWizardData();
700
        }
701

    
702
        public void execute() {
703

    
704
        }
705

    
706
        /**
707
         * DOCUMENT ME!
708
         *
709
         * @return DOCUMENT ME!
710
         */
711
        protected String getLayersQuery() {
712
                return wmsParamsPanel.getLayersQuery();
713
        }
714

    
715
        //gets all the layers available in the WMS
716
        public FLayer getAllLayers(){
717
                return wmsParamsPanel.getAllLayers();
718
        }
719

    
720
        public FLayer getLayer(){
721

    
722
                return wmsParamsPanel.getLayer();
723
//                if(wmsParamsPanel.getDisagregatedLayers()){
724
//                        return getLayerTree();
725
//                }else{
726
//                        return getLayerPlain();
727
//                }
728
        }
729

    
730
//        private Object[] getFullPath(String name){
731
//                Vector path = new Vector();
732
//                WMSLayerNode layerNode;
733
//                WMSLayerNode parent;
734
//                for (int i = 0; i <wmsParamsPanel.getLstSelectedLayers().getModel().getSize(); i++) {
735
//                        layerNode = (WMSLayerNode)wmsParamsPanel.getLstSelectedLayers().getModel().getElementAt(i);
736
//                        if(layerNode.getName().compareTo( name ) == 0 ){
737
//                                path.add(layerNode);
738
//                                parent = (WMSLayerNode)layerNode.getParent().clone();
739
//                                while ( parent != null){
740
//                                        path.add(parent);
741
//                                        parent = (WMSLayerNode)parent.getParent().clone();
742
//                                }
743
//                        }
744
//                }
745
//                return path.toArray();
746
//        }
747

    
748
        /**
749
         * If user does not select the chekbox Disagregate layers, will get the layer tree in WMS
750
         * @return
751
         */
752
    protected FLayer getLayerTree() {
753
        LayerTree layerTree = wmsParamsPanel.getLayerStructure();
754
                TreePath[] selection = (TreePath[])wmsParamsPanel.getSelectedPaths().toArray(new TreePath[0]);//layerTree.getSelectionPaths();
755
                if (selection!=null){
756
                        return getSubTree((WMSLayerNode)layerTree.getModel().getRoot(), selection);
757
                }
758
                return null;
759
    }
760

    
761
    protected boolean nodeSelected(TreePath[] selection, WMSLayerNode node){
762
                for (int i = 0; i < selection.length; i++) {
763
                        Object[] components = selection[i].getPath();
764
                        for (int j=0; j < components.length ; j++)
765
                        {
766
                                if (components[j] instanceof WMSLayerNode){
767
                                        if (((WMSLayerNode)components[j]).getTitle().compareTo(node.getTitle()) == 0){
768
                                                return true;
769
                                        }
770
                                }
771
                        }
772
                }
773
                return false;
774
    }
775

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

    
825
                        return layer;
826

    
827
                        }else{
828
                                return null;
829
                        }
830
                }
831
        }
832

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

    
865
        protected boolean isQueryable() {
866
                return dataSource.isQueryable();
867
        }
868

    
869
        protected Dimension getFixedSize() {
870
                return wmsParamsPanel.getFixedSize();
871
        }
872

    
873
        private Hashtable getOnlineResources() {
874
                return wmsParamsPanel.getOnlineResources();
875
        }
876

    
877
        protected FMapWMSDriver getDriver() {
878
                return wmsParamsPanel.getDriver();
879
        }
880

    
881
        /**
882
         * @return
883
         */
884
        protected Vector getStyles() {
885
                return wmsParamsPanel.getStyles();
886
        }
887

    
888
        protected Vector getDimensions() {
889
                return wmsParamsPanel.getDimensions();
890
        }
891

    
892
        /**
893
         * @return
894
         */
895
        protected boolean getTransparency() {
896
                return wmsParamsPanel.getTransparency();
897
        }
898

    
899
        /**
900
         * DOCUMENT ME!
901
         *
902
         * @return DOCUMENT ME!
903
         */
904
        public String getQueryableLayerQuery() {
905
                return wmsParamsPanel.getQueryableLayerQuery();
906
        }
907

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

    
931
                }
932
                return chkCaching;
933
        }
934

    
935
        /**
936
         * This method initializes pnlName
937
         *
938
         * @return javax.swing.JPanel
939
         */
940
        private JPanel getPnlName() {
941
                if (pnlName == null) {
942
                        pnlName = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 0));
943
                        pnlName.setBounds(new java.awt.Rectangle(9,19,452,24));
944
                        pnlName.add(getJLabel1(), null);
945
                        pnlName.add(getLblTitle(), null);
946
                }
947
                return pnlName;
948
        }
949
}  //  @jve:decl-index=0:visual-constraint="10,10"