Statistics
| Revision:

gvsig-raster / org.gvsig.raster.wms / trunk / org.gvsig.raster.wms / org.gvsig.raster.wms.app / org.gvsig.raster.wms.app.wmsclient / src / main / java / org / gvsig / raster / wms / app / wmsclient / gui / wizard / WMSWizard.java @ 1172

History | View | Annotate | Download (29.2 KB)

1
/* gvSIG. Geographic Information System of the Valencian Government
2
*
3
* Copyright (C) 2007-2008 Infrastructures and Transports Department
4
* of the Valencian Government (CIT)
5
* 
6
* This program is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU General Public License
8
* as published by the Free Software Foundation; either version 2
9
* of the License, or (at your option) any later version.
10
* 
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
* GNU General Public License for more details.
15
* 
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, 
19
* MA  02110-1301, USA.
20
* 
21
*/
22
 
23
package org.gvsig.raster.wms.app.wmsclient.gui.wizard;
24

    
25
import java.awt.Component;
26
import java.awt.Dimension;
27
import java.awt.FlowLayout;
28
import java.awt.event.ActionEvent;
29
import java.awt.event.ActionListener;
30
import java.awt.geom.Rectangle2D;
31
import java.net.MalformedURLException;
32
import java.net.URL;
33
import java.util.Hashtable;
34
import java.util.Vector;
35
import java.util.prefs.Preferences;
36

    
37
import javax.swing.DefaultComboBoxModel;
38
import javax.swing.JButton;
39
import javax.swing.JCheckBox;
40
import javax.swing.JLabel;
41
import javax.swing.JOptionPane;
42
import javax.swing.JPanel;
43
import javax.swing.JScrollPane;
44
import javax.swing.JTextArea;
45
import javax.swing.tree.TreePath;
46

    
47
import org.cresques.cts.IProjection;
48
import org.gvsig.andami.PluginServices;
49
import org.gvsig.andami.persistence.serverData.ServerDataPersistence;
50
import org.gvsig.andami.ui.mdiManager.IWindow;
51
import org.gvsig.app.gui.WizardPanel;
52
import org.gvsig.app.gui.wizards.WizardListener;
53
import org.gvsig.app.gui.wizards.WizardListenerSupport;
54
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
55
import org.gvsig.compat.net.ICancellable;
56
import org.gvsig.fmap.dal.DALLocator;
57
import org.gvsig.fmap.dal.DataManager;
58
import org.gvsig.fmap.dal.DataParameters;
59
import org.gvsig.fmap.dal.DataStoreParameters;
60
import org.gvsig.fmap.dal.coverage.exception.RemoteServiceException;
61
import org.gvsig.fmap.dal.coverage.store.parameter.TileDataParameters;
62
import org.gvsig.fmap.dal.exception.InitializeException;
63
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
64
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
65
import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException;
66
import org.gvsig.fmap.mapcontext.exceptions.ProjectionLayerException;
67
import org.gvsig.fmap.mapcontext.layers.FLayer;
68
import org.gvsig.fmap.mapcontext.layers.FLayers;
69
import org.gvsig.raster.cache.tile.TileCacheLibrary;
70
import org.gvsig.raster.util.CancelTaskImpl;
71
import org.gvsig.raster.wms.app.wmsclient.gui.panel.LayerTree;
72
import org.gvsig.raster.wms.app.wmsclient.gui.panel.WMSParamsPanel;
73
import org.gvsig.raster.wms.app.wmsclient.layer.FLyrWMS;
74
import org.gvsig.raster.wms.io.WMSDataParameters;
75
import org.gvsig.raster.wms.io.WMSLayerNode;
76
import org.gvsig.raster.wms.io.WMSServerExplorer;
77
import org.gvsig.raster.wms.io.WMSServerExplorerParameters;
78
import org.gvsig.utils.NotExistInXMLEntity;
79
import org.gvsig.utils.XMLEntity;
80
import org.gvsig.utils.swing.jcomboServer.JComboServer;
81
import org.gvsig.utils.swing.jcomboServer.ServerData;
82
import org.slf4j.LoggerFactory;
83

    
84

    
85

    
86
/**
87
 * The WMS properties container panel.
88
 *
89
 * @author Jaume Dominguez Faus
90
 */
91
public class WMSWizard extends WizardPanel implements ActionListener {
92
        private static final long             serialVersionUID   = 1L;
93
        //private static Logger               logger             = Logger.getLogger(WMSWizard.class.getName());
94
        protected int                         page               = 0;
95
        protected boolean                     connected          = false;
96
        private JComboServer                  cmbHost            = null;
97
        private JButton                       btnConnect         = null;
98
        private JButton                       btnCancel          = null;
99
        private JPanel                        jPanel             = null;
100
        private JLabel                        jLabel1            = null;
101
        private JLabel                        lblTitle           = null;
102
        private JScrollPane                   jScrollPane        = null;
103
        private JTextArea                     txtAbstract        = null;
104
        private JPanel                        panelPage1         = null;
105
        private JButton                       btnSiguiente       = null;
106
        private JButton                       btnAnterior        = null;
107
        private JPanel                        jPanel1            = null;
108
        protected WizardListenerSupport       listenerSupport    = null;
109
        protected WMSParamsPanel              wmsParamsPanel     = null;
110
        protected JLabel                      lblServerType      = null;
111
        protected JLabel                      lblServerTypeValue = null;
112
        private JCheckBox                     chkCaching         = null;
113
        private boolean                       usingTileCache     = fPrefs.getBoolean("tile_cache", false);
114
        private JCheckBox                     chkTileCache       = null;
115
        private static Preferences            fPrefs             = Preferences.userRoot().node( "gvsig.wms-wizard" );
116
        protected int                         firstPage          = 0;
117
        private JPanel                        pnlName            = null;
118
        private IProjection                   proj               = null;
119
        private ICancellable                  cancel             = null;
120
        private WMSDataParameters             storeParams        = null;
121
        private WMSServerExplorer             explorer           = null;
122
        
123
        
124
        public WMSWizard (WMSParamsPanel params) {
125
                super();
126
                firstPage = 1;
127
                page = firstPage;
128
                this.wmsParamsPanel = params;
129
                this.explorer = wmsParamsPanel.getExplorer();
130

    
131
                setTabName("WMS");
132
                lblServerType = new JLabel();
133
                lblServerType.setBounds(20, 444, 100, 20);
134
                lblServerType.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
135
                lblServerType.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
136
                lblServerType.setFont(new java.awt.Font("Arial", java.awt.Font.PLAIN, 11));
137
                lblServerType.setText(PluginServices.getText(this, "server_type")+":");
138
                lblServerTypeValue = new JLabel();
139
                lblServerTypeValue.setBounds(128, 444, 148, 20);
140
                lblServerTypeValue.setFont(new java.awt.Font("Arial", java.awt.Font.BOLD, 11));
141
                lblServerTypeValue.setText("-");
142
                this.setSize(510, 468);
143
                this.setLayout(null);
144
                this.setPreferredSize(new java.awt.Dimension(750, 420));
145
                this.setVisible(true);
146

    
147
                wmsParamsPanel.setListenerSupport(this.getWizardListenerSupport());
148
                wmsParamsPanel.setBounds(0, 5, 510, 428);
149
                wmsParamsPanel.getJTabbedPane().addMouseListener(
150
                                new java.awt.event.MouseAdapter() {
151
                                        public void mouseClicked(java.awt.event.MouseEvent e) {
152
                                                page = wmsParamsPanel.currentPage() + 1;
153
                                                activarVisualizarBotones();
154
                                        }
155
                                });
156
                this.add(wmsParamsPanel, null);
157
                this.add(lblServerType, null);
158
                this.add(lblServerTypeValue, null);
159
                getWMSParamsPanel().setVisible(true);
160

    
161
                connected = true;
162
        }
163

    
164
        /**
165
         * This is the default constructor
166
         */
167
        public WMSWizard() {
168
                super();
169
                firstPage = 0;
170
                page = firstPage;
171
                initialize();
172
                
173
                IWindow[] windows = PluginServices.getMDIManager().getAllWindows();
174
                for (int i = 0; i < windows.length; i++) {
175
                        if(windows[i] instanceof AbstractViewPanel)
176
                                proj = ((AbstractViewPanel)windows[i]).getProjection();
177
                }
178
                cancel = new CancelTaskImpl();
179
        }
180
        /**
181
         * This method initializes this
182
         */
183
        private void initialize() {
184
                setTabName("WMS");
185

    
186
                lblServerType = new JLabel();
187
                lblServerType.setBounds(20, 444, 100, 20);
188
                lblServerType.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
189
                lblServerType.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
190
                lblServerType.setFont(new java.awt.Font("Arial", java.awt.Font.PLAIN, 11));
191
                lblServerType.setText(PluginServices.getText(this, "server_type")+":");
192
                lblServerTypeValue = new JLabel();
193
                lblServerTypeValue.setBounds(128, 444, 148, 20);
194
                lblServerTypeValue.setFont(new java.awt.Font("Arial", java.awt.Font.BOLD, 11));
195
                lblServerTypeValue.setText("-");
196
                this.setSize(510, 468);
197
                this.setLayout(null);
198
                this.setPreferredSize(new java.awt.Dimension(750, 420));
199
                this.setVisible(true);
200
                this.add(getPanelPage1(), null);
201
                this.add(getWMSParamsPanel(), null);
202
                this.add(getBtnAnterior(), null);
203
                this.add(getBtnSiguiente(), null);
204
                this.add(lblServerType, null);
205
                this.add(lblServerTypeValue, null);
206
                activarVisualizarBotones();
207
        }
208

    
209
        
210
        protected WMSParamsPanel getWMSParamsPanel() {
211
                if (wmsParamsPanel == null){
212
                        wmsParamsPanel = new WMSParamsPanel();
213
                        wmsParamsPanel.setListenerSupport(this.getWizardListenerSupport());
214
                        wmsParamsPanel.setBounds(0, 5, 510, 428);
215
                        wmsParamsPanel.getJTabbedPane().addMouseListener(
216
                                        new java.awt.event.MouseAdapter() {
217
                                                public void mouseClicked(java.awt.event.MouseEvent e) {
218
                                                        page = wmsParamsPanel.currentPage() + 1;
219
                                                        activarVisualizarBotones();
220
                                                }
221
                                        });
222
                }
223
                return wmsParamsPanel;
224
        }
225
        
226
        /**
227
         * This method checks for the options selected within the configuration
228
         * dialog are correct.
229
         *
230
         * @return true if you're done, false if not.
231
         */
232
        public boolean areSettingsValid() {
233
                return getWMSParamsPanel().isCorrectlyConfigured();
234
        }
235
        
236
        /**
237
         * DOCUMENT ME!
238
         *
239
         * @param host DOCUMENT ME!
240
         */
241
        private void addHost(String host) {
242
                host = host.trim();
243

    
244
                ServerDataPersistence persistence = new ServerDataPersistence(this,ServerData.SERVER_TYPE_WMS);
245
                persistence.addServerData(new ServerData(host, ServerData.SERVER_TYPE_WMS));
246
                persistence.setPersistent();
247
        }
248
        
249
        /**
250
         * Thread to connect to a WMS server
251
         * @author Nacho Brodin (nachobrodin@gmail.com)
252
         */
253
        public class ConnectThread extends Thread {
254
                private ICancellable             cancel      = null;
255
                private WMSServerExplorer        explorer    = null;
256
                private WMSWizard                wizard      = null;
257
                
258
                public ConnectThread(ICancellable cancel, WMSServerExplorer explorer, WMSWizard wizard) {
259
                        this.cancel = cancel;
260
                        this.explorer = explorer;
261
                        this.wizard = wizard;
262
                }
263
                
264
            public void run() {
265
                    try {
266
                            explorer.connect(cancel, getWMSParamsPanel().isUpdatingCache());
267
                        } catch (RemoteServiceException e) {
268
                                LoggerFactory.getLogger(getClass()).debug(PluginServices.getText(this, "The layer cannot be added"), e);
269
                                JOptionPane.showMessageDialog(getWMSParamsPanel(), "The layer cannot be added");
270
                                return;
271
                        } finally {
272
                                ((CancelTaskImpl)cancel).setCanceled(false);
273
                        }
274
                        
275
                        DataStoreParameters parameters = explorer.getStoreParameters();
276
                        if(parameters instanceof WMSDataParameters) {
277
                                storeParams = (WMSDataParameters) parameters;
278
                        }
279
                        
280
                        if(parameters instanceof TileDataParameters) {
281
                                DataParameters p = ((TileDataParameters) parameters).getDataParameters();
282
                                if(p instanceof WMSDataParameters)
283
                                        storeParams = (WMSDataParameters) p;
284
                        }
285
                        
286
                        wizard.rellenarControles();
287
            }
288
        }
289

    
290
        /**
291
         * DOCUMENT ME!
292
         */
293
        private void rellenarControles() {
294
                try {
295
                        String host = cmbHost.getModel().getSelectedItem().toString();
296
                        
297
                        lblTitle.setText(explorer.getTitle());
298
                        lblServerTypeValue.setText(explorer.getServerType());
299
                        txtAbstract.setText(explorer.getAbstract());
300

    
301
                        addHost(host);
302
                        getWMSParamsPanel().setWizardData(explorer);
303
                        connected = true;
304
                        activarVisualizarBotones();
305
                } catch (Exception e) {
306
                        if (e.getMessage()==null) {
307
                                txtAbstract.setText(PluginServices.getText(this,"error"));
308
                        } else {
309
                                txtAbstract.setText(e.getMessage());
310
                        }
311
                        getWizardListenerSupport().callError(e);
312
                        getBtnSiguiente().setEnabled(false);
313
                        getBtnAnterior().setEnabled(true);
314
                } finally {
315
                        getBtnCancel().setEnabled(false);
316
                }
317
        }
318
        
319
        public void actionPerformed(ActionEvent e) {
320
                if(e.getSource() == getBtnConnect()) {
321
                        getBtnCancel().setEnabled(true);
322
                        getTxtAbstract().setText("Trying to connect...");
323
                        String host = cmbHost.getModel().getSelectedItem().toString();
324
                        try {
325
                                DataManager datamanager = DALLocator.getDataManager();
326
                                WMSServerExplorerParameters explorerParams = (WMSServerExplorerParameters) datamanager.createServerExplorerParameters(WMSServerExplorer.NAME);
327
                                explorerParams.setHost(host);
328
                                
329
                                explorer = (WMSServerExplorer) datamanager.createServerExplorer(explorerParams);
330
                                
331
                                ((CancelTaskImpl)cancel).setCanceled(false);
332
                                new ConnectThread(cancel, explorer, this).start();
333
                                
334
                        } catch (InitializeException e1) {
335
                                getTxtAbstract().setText("Error creating WMS layer");
336
                        } catch (ProviderNotRegisteredException e1) {
337
                                getTxtAbstract().setText("Provider not registered. I cannot connect.");
338
                        } catch (ValidateDataParametersException e1) {
339
                                getTxtAbstract().setText("Parameters not valid. I cannot connect.");
340
                        }
341
                }
342
                
343
                if(e.getSource() == getBtnCancel()) {
344
                        getTxtAbstract().setText("Cancelled...");
345
                        ((CancelTaskImpl)cancel).setCanceled(true);
346
                        getBtnCancel().setEnabled(false);
347
                }
348
        }
349

    
350
        /**
351
         * DOCUMENT ME!
352
         */
353
        protected void activarVisualizarBotones() {
354
                if (page == firstPage) {
355
                        getBtnAnterior().setEnabled(false);
356
                        getBtnSiguiente().setVisible(true);
357

    
358
                        if (connected) {
359
                                getBtnSiguiente().setEnabled(true);
360
                        } else {
361
                                getBtnSiguiente().setEnabled(false);
362
                        }
363
                } else if (page < getWMSParamsPanel().getNumTabs()) {
364
                        getBtnSiguiente().setEnabled(true);
365
                        getBtnSiguiente().setVisible(true);
366
                        getBtnAnterior().setEnabled(true);
367
                        getBtnAnterior().setVisible(true);
368
                        if (getWMSParamsPanel().nextEnabledPage() == -1){
369
                                getBtnSiguiente().setEnabled(false);
370
                        }
371
                        getWizardListenerSupport().callStateChanged(getWMSParamsPanel().isCorrectlyConfigured());
372
                } else if (page == getWMSParamsPanel().getNumTabs()) {
373
                        getBtnSiguiente().setVisible(false);
374
                        getBtnSiguiente().setEnabled(false);
375
                        getWizardListenerSupport().callStateChanged(getWMSParamsPanel().isCorrectlyConfigured());
376
                }
377
        }
378

    
379
        /**
380
         * This method initializes txtHost
381
         *
382
         * @return javax.swing.JTextField
383
         */
384
        private javax.swing.JComboBox getTxtHost() {
385
                if (cmbHost == null) {
386
                        cmbHost = new JComboServer();
387
                        cmbHost.setModel(new DefaultComboBoxModel());
388
                        cmbHost.setPreferredSize(new java.awt.Dimension(350, 20));
389
                        cmbHost.setBounds(11, 26, 454, 20);
390
                        cmbHost.setEditable(true);
391

    
392
                        ServerDataPersistence persistence = new ServerDataPersistence(this,ServerData.SERVER_TYPE_WMS);
393
                        ServerData[] servers = persistence.getArrayOfServerData();
394

    
395
                        if (servers.length == 0){
396
                                PluginServices ps = PluginServices.getPluginServices(this);
397
                                XMLEntity xml = ps.getPersistentXML();
398
                                try {
399
                                        String[] oldServers = xml.getStringArrayProperty("wms-servers");
400
                                        servers = new ServerData[oldServers.length];
401
                                        for (int i=0; i<oldServers.length; i++) {
402
                                                servers[i] = new ServerData(oldServers[i],ServerData.SERVER_TYPE_WMS);
403
                                        }
404
                                        xml.remove("wms-servers");
405
                                        ps.setPersistentXML(xml);
406
                                } catch (NotExistInXMLEntity e) {
407
                                        // Old servers doesn't exist
408
                                        servers = new ServerData[12];
409
                                        servers[0] = new ServerData("http://www.ign.es/wms-inspire/ign-base",ServerData.SERVER_TYPE_WMS);
410
                                        servers[1] = new ServerData("http://wms.jpl.nasa.gov/wms.cgi",ServerData.SERVER_TYPE_WMS);
411
                                        servers[2] = new ServerData("http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?",ServerData.SERVER_TYPE_WMS);
412
                                        servers[3] = new ServerData("http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_patricova",ServerData.SERVER_TYPE_WMS);
413
                                        servers[4] = new ServerData("http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_parque_fondo_prug",ServerData.SERVER_TYPE_WMS);
414
                                        servers[5] = new ServerData("http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_pgof",ServerData.SERVER_TYPE_WMS);
415
                                        servers[6] = new ServerData("http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_urbanismo_tematicos",ServerData.SERVER_TYPE_WMS);
416
                                        servers[7] = new ServerData("http://onearth.jpl.nasa.gov/wms.cgi",ServerData.SERVER_TYPE_WMS);
417
                                        servers[8] = new ServerData("http://www.demis.nl/wms/wms.asp?WMS=WorldMap",ServerData.SERVER_TYPE_WMS);
418
                                        servers[9] = new ServerData("http://aes.gsfc.nasa.gov/cgi-bin/wms",ServerData.SERVER_TYPE_WMS);
419
                                        servers[10] = new ServerData("http://mapas.euitto.upm.es/cgi-bin/cnauticas",ServerData.SERVER_TYPE_WMS);
420
                                        servers[11] = new ServerData("http://ovc.catastro.meh.es/Cartografia/WMS/ServidorWMS.aspx", ServerData.SERVER_TYPE_WMS);
421
                                }
422

    
423
                                for (int i=0 ; i<servers.length ; i++){
424
                                        persistence.addServerData(servers[i]);
425
                                }
426
                                persistence.setPersistent();
427
                        }
428

    
429
                        cmbHost.setServerList(servers);
430
                }
431

    
432
                return cmbHost;
433
        }
434

    
435
        /**
436
         * This method initializes btnDetalles
437
         *
438
         * @return javax.swing.JButton
439
         */
440
        private JButton getBtnConnect() {
441
                if (btnConnect == null) {
442
                        btnConnect = new JButton();
443
                        btnConnect.setPreferredSize(new java.awt.Dimension(100, 20));
444
                        btnConnect.setBounds(262, 50, 100, 20);
445
                        btnConnect.setText(PluginServices.getText(this, "conectar"));
446
                        btnConnect.addActionListener(this);
447
                }
448

    
449
                return btnConnect;
450
        }
451
        
452
        /**
453
         * This method initializes btnDetalles
454
         *
455
         * @return javax.swing.JButton
456
         */
457
        private JButton getBtnCancel() {
458
                if (btnCancel == null) {
459
                        btnCancel = new JButton();
460
                        btnCancel.setEnabled(false);
461
                        btnCancel.setPreferredSize(new java.awt.Dimension(100, 20));
462
                        btnCancel.setBounds(366, 50, 100, 20);
463
                        btnCancel.setText(PluginServices.getText(this, "cancel"));
464
                        btnCancel.addActionListener(this);
465
                }
466

    
467
                return btnCancel;
468
        }
469

    
470
        /**
471
         * This method initializes jPanel
472
         *
473
         * @return javax.swing.JPanel
474
         */
475
        private javax.swing.JPanel getJPanel() {
476
                if (jPanel == null) {
477
                        jPanel = new javax.swing.JPanel();
478
                        jPanel.setLayout(null);
479
                        jPanel.setPreferredSize(new java.awt.Dimension(470, 130));
480
                        jPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(
481
                                        null, PluginServices.getText(this, "description"),
482
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
483
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
484
                        jPanel.setBounds(2, 116, 477, 304);
485

    
486
                        jPanel.add(getJScrollPane(), null);
487
                        jPanel.add(getPnlName(), null);
488
                }
489

    
490
                return jPanel;
491
        }
492

    
493
        /**
494
         * This method initializes jLabel1
495
         *
496
         * @return javax.swing.JLabel
497
         */
498
        private javax.swing.JLabel getJLabel1() {
499
                if (jLabel1 == null) {
500
                        jLabel1 = new javax.swing.JLabel();
501
                        jLabel1.setText(PluginServices.getText(this, "name") + ":");
502
                }
503

    
504
                return jLabel1;
505
        }
506

    
507
        /**
508
         * This method initializes lblTitle
509
         *
510
         * @return javax.swing.JLabel
511
         */
512
        private javax.swing.JLabel getLblTitle() {
513
                if (lblTitle == null) {
514
                        lblTitle = new javax.swing.JLabel();
515
                        lblTitle.setText("-");
516
                }
517

    
518
                return lblTitle;
519
        }
520

    
521
        /**
522
         * This method initializes jScrollPane
523
         *
524
         * @return javax.swing.JScrollPane
525
         */
526
        private javax.swing.JScrollPane getJScrollPane() {
527
                if (jScrollPane == null) {
528
                        jScrollPane = new javax.swing.JScrollPane();
529
                        jScrollPane.setViewportView(getTxtAbstract());
530
                        jScrollPane.setPreferredSize(new java.awt.Dimension(450, 60));
531
                        jScrollPane.setBounds(10, 47, 457, 247);
532
                }
533

    
534
                return jScrollPane;
535
        }
536

    
537
        /**
538
         * This method initializes txtAbstract
539
         *
540
         * @return javax.swing.JTextArea
541
         */
542
        private javax.swing.JTextArea getTxtAbstract() {
543
                if (txtAbstract == null) {
544
                        txtAbstract = new javax.swing.JTextArea();
545
                        txtAbstract.setWrapStyleWord(true);
546
                        txtAbstract.setColumns(30);
547
                        txtAbstract.setLineWrap(true);
548
                }
549

    
550
                return txtAbstract;
551
        }
552
        
553
        private javax.swing.JPanel getPanelPage1() {
554
                if (panelPage1 == null) {
555
                        panelPage1 = new JPanel();
556
                        panelPage1.setLayout(null);
557
                        panelPage1.setPreferredSize(new java.awt.Dimension(480, 220));
558
                        panelPage1.setVisible(true);
559
                        panelPage1.setBounds(15, 5, 480, 427);
560
                        panelPage1.add(getJPanel1(), null);
561
                        panelPage1.add(getJPanel(), null);
562
                }
563

    
564
                return panelPage1;
565
        }
566

    
567

    
568
        /**
569
         * This method initializes btnSiguiente
570
         *
571
         * @return javax.swing.JButton
572
         */
573
        private javax.swing.JButton getBtnSiguiente() {
574
                if (btnSiguiente == null) {
575
                        btnSiguiente = new JButton();
576
                        btnSiguiente.setPreferredSize(new java.awt.Dimension(100, 30));
577
                        btnSiguiente.setBounds(395, 444, 100, 20);
578
                        btnSiguiente.setText(PluginServices.getText(this, "siguiente"));
579
                        btnSiguiente.addActionListener(new java.awt.event.ActionListener() {
580
                                public void actionPerformed(java.awt.event.ActionEvent e) {
581
                                        if(page == firstPage && getChkTileCache().isSelected()) {
582
                                                messageBoxInfo("remote_service_tiled", TileCacheLibrary.ALTERNATIVE_TILESIZE + "", this);
583
                                        }
584
                                        if (page > firstPage) {
585
                                                // si page es mayor que cero, vamos enfocando las
586
                                                // sucesivas SOLAPAS del WMSParamsPanel
587
                                                getWMSParamsPanel().avanzaTab();
588
                                                page = getWMSParamsPanel().currentPage();
589
                                        }
590
                                        page++;
591
                                        getPanelPage1().setVisible(false);
592
                                        getWMSParamsPanel().setVisible(true);
593
                                        activarVisualizarBotones();
594
                                }
595
                        });
596
                }
597
                return btnSiguiente;
598
        }
599
        
600
        /**
601
         * Shows an information dialog with a text and a accept button 
602
         * @param msg Message to show in the dialog
603
         * @param parentWindow Parent window
604
         */
605
        public static void messageBoxInfo(String msg, String fixedText, Object parentWindow){
606
                String string = PluginServices.getText(parentWindow, "accept");
607
                Object[] options = {string};
608
                JOptionPane.showOptionDialog((Component)PluginServices.getMainFrame(),
609
                                        "<html>" + PluginServices.getText(parentWindow, msg).replaceAll("\n", "<br>") + " " + fixedText + "</html>",
610
                                        PluginServices.getText(parentWindow, "confirmacion"),
611
                                        JOptionPane.OK_OPTION,
612
                                        JOptionPane.INFORMATION_MESSAGE,
613
                                        null,
614
                                        options,
615
                                        string);
616
        }
617

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

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

    
673
                return jPanel1;
674
        }
675

    
676
        private WizardListenerSupport getWizardListenerSupport() {
677
                if(listenerSupport == null)
678
                        listenerSupport = new WizardListenerSupport();
679
                return listenerSupport;
680
        }
681
        
682
        /**
683
         * DOCUMENT ME!
684
         *
685
         * @param listener
686
         */
687
        public void addWizardListener(WizardListener listener) {
688
                getWizardListenerSupport().addWizardListener(listener);
689
                getWizardListenerSupport().callStateChanged(false);
690
        }
691

    
692
        /**
693
         * DOCUMENT ME!
694
         *
695
         * @param listener
696
         */
697
        public void removeWizardListener(WizardListener listener) {
698
                getWizardListenerSupport().removeWizardListener(listener);
699
        }
700

    
701
        /**
702
         * DOCUMENT ME!
703
         *
704
         * @return DOCUMENT ME!
705
         */
706
        public String getSRS() {
707
                return getWMSParamsPanel().getSRS();
708
        }
709

    
710
        /**
711
         * DOCUMENT ME!
712
         *
713
         * @return DOCUMENT ME!
714
         */
715
        public String getFormat() {
716
                return getWMSParamsPanel().getFormat();
717
        }
718
        
719
        /**
720
         * DOCUMENT ME!
721
         *
722
         * @return DOCUMENT ME!
723
         */
724
        public String getInfoFormat() {
725
                return getWMSParamsPanel().getInfoFormat();
726
        }
727

    
728
        /**
729
         * DOCUMENT ME!
730
         *
731
         * @return DOCUMENT ME!
732
         */
733
        public TreePath[] getSelectedLayers() {
734
                return getWMSParamsPanel().getSelectedLayers();
735
        }
736

    
737
        /**
738
         * DOCUMENT ME!
739
         *
740
         * @return DOCUMENT ME!
741
         * @throws ProjectionLayerException
742
         */
743
        public Rectangle2D getLayersRectangle() throws ProjectionLayerException {
744
                return getWMSParamsPanel().getLayersRectangle();
745
        }
746

    
747

    
748

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

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

    
776

    
777
        public void initWizard() {
778
        }
779

    
780
        public void execute() {
781
                try {
782
                        FLayer layer = this.getLayer();
783
                        this.getMapCtrl().getMapContext().getLayers().addLayer(layer);
784
                } catch (LoadLayerException e) {
785
                        LoggerFactory.getLogger(getClass()).debug(PluginServices.getText(this, "The layer cannot be added"), e);
786
                        JOptionPane.showMessageDialog(this, "The layer cannot be added");
787
                }
788

    
789
        }
790

    
791
        /**
792
         * DOCUMENT ME!
793
         *
794
         * @return DOCUMENT ME!
795
         */
796
        protected String getLayersQuery() {
797
                return getWMSParamsPanel().getLayersQuery();
798
        }
799

    
800
        //gets all the layers available in the WMS
801
        public FLayer getAllLayers() throws LoadLayerException {
802
                return getWMSParamsPanel().getAllLayers();
803
        }
804

    
805
        public synchronized FLayer getLayer() throws LoadLayerException {
806
                return getWMSParamsPanel().getLayer(getChkTileCache().isSelected());
807
        }
808

    
809
    protected boolean nodeSelected(TreePath[] selection, WMSLayerNode node) {
810
                for (int i = 0; i < selection.length; i++) {
811
                        Object[] components = selection[i].getPath();
812
                        for (int j = 0; j < components.length ;j++) {
813
                                if (components[j] instanceof WMSLayerNode) {
814
                                        if (((WMSLayerNode)components[j]).getTitle().compareTo(node.getTitle()) == 0){
815
                                                return true;
816
                                        }
817
                                }
818
                        }
819
                }
820
                return false;
821
    }
822

    
823

    
824
        protected boolean isQueryable() {
825
                return explorer.isQueryable();
826
        }
827

    
828
        protected Dimension getFixedSize() {
829
                return getWMSParamsPanel().getFixedSize();
830
        }
831

    
832
        private Hashtable getOnlineResources() {
833
                return getWMSParamsPanel().getOnlineResources();
834
        }
835

    
836
        /**
837
         * @return
838
         */
839
        protected Vector getStyles() {
840
                return getWMSParamsPanel().getStyles();
841
        }
842

    
843
        protected Vector getDimensions() {
844
                return getWMSParamsPanel().getDimensions();
845
        }
846

    
847
        /**
848
         * @return
849
         */
850
        protected boolean getTransparency() {
851
                return getWMSParamsPanel().getTransparency();
852
        }
853

    
854
        /**
855
         * DOCUMENT ME!
856
         *
857
         * @return DOCUMENT ME!
858
         */
859
        public String getQueryableLayerQuery() {
860
                return getWMSParamsPanel().getQueryableLayerQuery();
861
        }
862

    
863
        /**
864
         * This method initializes chkCaching
865
         *
866
         * @return javax.swing.JCheckBox
867
         */
868
        private JCheckBox getChkCaching() {
869
                if (chkCaching == null) {
870
                        chkCaching = new JCheckBox();
871
                        chkCaching.setBounds(7, 51, 249, 20);
872
                        chkCaching.setText(PluginServices.getText(this, "refresh_capabilities"));
873
                        chkCaching.setToolTipText(PluginServices.getText(this, "refresh_capabilities_tooltip"));
874
                        chkCaching.setSelected(getWMSParamsPanel().isUpdatingCache());
875
                        chkCaching.addItemListener(new java.awt.event.ItemListener() {
876
                                public void itemStateChanged(java.awt.event.ItemEvent e) {
877
                                        getWMSParamsPanel().setUpdatingCache(chkCaching.isSelected());
878
                                }
879
                        });
880
                        chkCaching.addActionListener(new java.awt.event.ActionListener() {
881
                                public void actionPerformed(java.awt.event.ActionEvent e) {
882
                                        fPrefs.putBoolean("refresh_capabilities", chkCaching.isSelected());
883
                                }
884
                        });
885

    
886
                }
887
                return chkCaching;
888
        }
889
        
890
        /**
891
         * This method initializes chkCaching
892
         *
893
         * @return javax.swing.JCheckBox
894
         */
895
        private JCheckBox getChkTileCache() {
896
                if (chkTileCache == null) {
897
                        chkTileCache = new JCheckBox();
898
                        chkTileCache.setBounds(7, 72, 249, 20);
899
                        chkTileCache.setText(PluginServices.getText(this, "tile_cache"));
900
                        chkTileCache.setToolTipText(PluginServices.getText(this, "tile_cache_tooltip"));
901
                        chkTileCache.setSelected(usingTileCache);
902
                        chkTileCache.addItemListener(new java.awt.event.ItemListener() {
903
                                public void itemStateChanged(java.awt.event.ItemEvent e) {
904
                                        usingTileCache = chkTileCache.isSelected();
905
                                }
906
                        });
907
                        chkTileCache.addActionListener(new java.awt.event.ActionListener() {
908
                                public void actionPerformed(java.awt.event.ActionEvent e) {
909
                                        fPrefs.putBoolean("tile_cache", chkTileCache.isSelected());
910
                                }
911
                        });
912

    
913
                }
914
                return chkTileCache;
915
        }
916

    
917
        /**
918
         * This method initializes pnlName
919
         *
920
         * @return javax.swing.JPanel
921
         */
922
        private JPanel getPnlName() {
923
                if (pnlName == null) {
924
                        pnlName = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 0));
925
                        pnlName.setBounds(new java.awt.Rectangle(9,19,452,24));
926
                        pnlName.add(getJLabel1(), null);
927
                        pnlName.add(getLblTitle(), null);
928
                }
929
                return pnlName;
930
        }
931

    
932
        @Override
933
        public DataStoreParameters[] getParameters() {
934
                // TODO Auto-generated method stub
935
                return null;
936
        }
937

    
938
        @Override
939
        public void close() {
940
                // Nothing to do
941
        }
942
}  //  @jve:decl-index=0:visual-constraint="10,10"