Statistics
| Revision:

gvsig-raster / org.gvsig.raster.wcs / trunk / org.gvsig.raster.wcs / org.gvsig.raster.wcs.app / org.gvsig.raster.wcs.app.wcsclient / src / main / java / org / gvsig / raster / wcs / app / wcsclient / gui / wizard / WCSWizard.java @ 1356

History | View | Annotate | Download (25.5 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.wcs.app.wcsclient.gui.wizard;
24

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

    
35
import javax.swing.DefaultComboBoxModel;
36
import javax.swing.JButton;
37
import javax.swing.JCheckBox;
38
import javax.swing.JLabel;
39
import javax.swing.JOptionPane;
40
import javax.swing.JPanel;
41
import javax.swing.JScrollPane;
42
import javax.swing.JTextArea;
43

    
44
import org.cresques.cts.IProjection;
45
import org.gvsig.andami.PluginServices;
46
import org.gvsig.andami.persistence.serverData.ServerDataPersistence;
47
import org.gvsig.andami.ui.mdiManager.IWindow;
48
import org.gvsig.app.gui.WizardPanel;
49
import org.gvsig.app.gui.wizards.WizardListener;
50
import org.gvsig.app.gui.wizards.WizardListenerSupport;
51
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
52
import org.gvsig.compat.net.ICancellable;
53
import org.gvsig.fmap.dal.DALLocator;
54
import org.gvsig.fmap.dal.DataManager;
55
import org.gvsig.fmap.dal.DataStoreParameters;
56
import org.gvsig.fmap.dal.coverage.exception.RemoteServiceException;
57
import org.gvsig.fmap.dal.exception.InitializeException;
58
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
59
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
60
import org.gvsig.fmap.mapcontext.exceptions.ProjectionLayerException;
61
import org.gvsig.fmap.mapcontext.layers.FLayer;
62
import org.gvsig.gui.beans.Messages;
63
import org.gvsig.raster.cache.tile.TileCacheLibrary;
64
import org.gvsig.raster.util.CancelTaskImpl;
65
import org.gvsig.raster.wcs.app.wcsclient.gui.panel.WCSParamsPanel;
66
import org.gvsig.raster.wcs.io.WCSDataParameters;
67
import org.gvsig.raster.wcs.io.WCSServerExplorer;
68
import org.gvsig.raster.wcs.io.WCSServerExplorerParameters;
69
import org.gvsig.utils.NotExistInXMLEntity;
70
import org.gvsig.utils.XMLEntity;
71
import org.gvsig.utils.swing.jcomboServer.JComboServer;
72
import org.gvsig.utils.swing.jcomboServer.ServerData;
73
import org.slf4j.Logger;
74
import org.slf4j.LoggerFactory;
75

    
76

    
77

    
78
/**
79
 * The WCS properties container panel.
80
 *
81
 * @author Jaume Dominguez Faus
82
 */
83
public class WCSWizard extends WizardPanel implements ActionListener {
84
        final static private Logger           logger = LoggerFactory.getLogger(WCSWizard.class);
85
        private static final long             serialVersionUID   = 1L;
86
        protected int                         page               = 0;
87
        protected boolean                     connected          = false;
88
        private JComboServer                  cmbHost            = null;
89
        private JButton                       btnConnect         = null;
90
        private JButton                       btnCancel          = null;
91
        private JPanel                        jPanel             = null;
92
        private JLabel                        jLabel1            = null;
93
        private JLabel                        lblTitle           = null;
94
        private JScrollPane                   jScrollPane        = null;
95
        private JTextArea                     txtAbstract        = null;
96
        private JPanel                        panelPage1         = null;
97
        private JButton                       btnSiguiente       = null;
98
        private JButton                       btnAnterior        = null;
99
        private JPanel                        jPanel1            = null;
100
        protected WizardListenerSupport       listenerSupport    = new WizardListenerSupport();
101
        protected WCSParamsPanel              wcsParamsPanel     = 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.wcs-wizard" );
106
        private boolean                       usingTileCache     = fPrefs.getBoolean("tile_cache", false);
107
        private JCheckBox                     chkTileCache       = null;
108
        private boolean                       refreshing         = fPrefs.getBoolean("refresh_capabilities", false);
109
        protected int                         firstPage          = 0;
110
        private JPanel                        pnlName            = null;
111
        private IProjection                   proj               = null;
112
        private ICancellable                  cancel             = null;
113
        private WCSDataParameters             storeParams        = null;
114
        private WCSServerExplorer             explorer           = null;
115
        
116
        
117
        public WCSWizard (WCSParamsPanel params) {
118
                super();
119
                firstPage = 1;
120
                page = firstPage;
121
                this.wcsParamsPanel = params;
122
                this.explorer = wcsParamsPanel.getExplorer();
123

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

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

    
154
                connected = true;
155
        }
156

    
157
        /**
158
         * This is the default constructor
159
         */
160
        public WCSWizard() {
161
                super();
162
                firstPage = 0;
163
                page = firstPage;
164
                initialize();
165
                
166
                IWindow[] windows = PluginServices.getMDIManager().getAllWindows();
167
                for (int i = 0; i < windows.length; i++) {
168
                        if(windows[i] instanceof AbstractViewPanel)
169
                                proj = ((AbstractViewPanel)windows[i]).getProjection();
170
                }
171
                cancel = new CancelTaskImpl();
172
        }
173
        /**
174
         * This method initializes this
175
         */
176
        private void initialize() {
177
                setTabName("WCS");
178

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

    
202

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

    
237
                ServerDataPersistence persistence = new ServerDataPersistence(this,ServerData.SERVER_TYPE_WCS);
238
                persistence.addServerData(new ServerData(host, ServerData.SERVER_TYPE_WCS));
239
                persistence.setPersistent();
240
        }
241
        
242
        /**
243
         * Thread to connect to a WCS server
244
         * @author Nacho Brodin (nachobrodin@gmail.com)
245
         */
246
        public class ConnectThread extends Thread {
247
                private ICancellable             cancel      = null;
248
                private WCSServerExplorer        explorer    = null;
249
                private WCSWizard                wizard      = null;
250
                
251
                public ConnectThread(ICancellable cancel, WCSServerExplorer explorer, WCSWizard wizard) {
252
                        this.cancel = cancel;
253
                        this.explorer = explorer;
254
                        this.wizard = wizard;
255
                }
256
                
257
            public void run() {
258
                    try {
259
                            explorer.connect(cancel);
260
                        } catch (RemoteServiceException e) {
261
                                String msg = getIOExceptionMessage(e);
262
                                if(msg != null) {
263
                                        logger.info(msg, e);
264
                                        JOptionPane.showMessageDialog(getWCSParamsPanel(), msg, Messages.getText("Error"), JOptionPane.ERROR_MESSAGE);
265
                                } else
266
                                        logger.info("IOException", e);
267
                                return;
268
                        } finally {
269
                                ((CancelTaskImpl)cancel).setCanceled(false);
270
                        }
271
                        
272
                        storeParams = (WCSDataParameters)explorer.getStoreParameters();
273
                        
274
                        wizard.rellenarControles();
275
            }
276
            
277
            /**
278
                 * Gets the <code>IOException</code> message. The message 
279
                 * of this exception is returned by the server
280
                 * @param e
281
                 * @return
282
                 */
283
                private String getIOExceptionMessage(Exception e) {
284
                        Throwable ex = e;
285
                        final int MAX_DEEP = 10;
286
                        int deep = 0;
287
                        while(deep < MAX_DEEP) {
288
                                Throwable t = null;
289
                                if(ex instanceof IOException) {
290
                                        return ex.getMessage();
291
                                } else if(ex instanceof RemoteServiceException) {
292
                                        t = ex.getCause();
293
                                }
294
                                if(t == null)
295
                                        return null;
296
                                else
297
                                        ex = t;
298
                                deep++;
299
                        }
300
                        return null;
301
                }
302
        }
303

    
304
        /**
305
         * DOCUMENT ME!
306
         */
307
        private void rellenarControles() {
308
                try {
309
                        String host = cmbHost.getModel().getSelectedItem().toString();
310
                        
311
                        lblTitle.setText(explorer.getTitle());
312
                        lblServerTypeValue.setText(explorer.getServerType());
313
                        txtAbstract.setText(explorer.getAbstract());
314

    
315
                        addHost(host);
316
                        wcsParamsPanel.setWizardData(explorer);
317
                        connected = true;
318
                        activarVisualizarBotones();
319
                } catch (Exception e) {
320
                        if (e.getMessage()==null) {
321
                                txtAbstract.setText(PluginServices.getText(this,"error"));
322
                        } else {
323
                                txtAbstract.setText(e.getMessage());
324
                        }
325
                        listenerSupport.callError(e);
326
                        getBtnSiguiente().setEnabled(false);
327
                        getBtnAnterior().setEnabled(true);
328
                } finally {
329
                        getBtnCancel().setEnabled(false);
330
                }
331
        }
332
        
333
        @SuppressWarnings("deprecation")
334
        public void actionPerformed(ActionEvent e) {
335
                if(e.getSource() == getBtnConnect()) {
336
                        getBtnCancel().setEnabled(true);
337
                        getTxtAbstract().setText("Trying to connect...");
338
                        String host = cmbHost.getModel().getSelectedItem().toString();
339
                        try {
340
                                DataManager datamanager = DALLocator.getDataManager();
341
                                WCSServerExplorerParameters explorerParams = (WCSServerExplorerParameters) datamanager.createServerExplorerParameters(WCSServerExplorer.NAME);
342
                                explorerParams.setHost(host);
343
                                
344
                                explorer = (WCSServerExplorer) datamanager.createServerExplorer(explorerParams);
345
                                
346
                                ((CancelTaskImpl)cancel).setCanceled(false);
347
                                new ConnectThread(cancel, explorer, this).start();
348
                                
349
                        } catch (InitializeException e1) {
350
                                getTxtAbstract().setText("Error creating WCS layer");
351
                        } catch (ProviderNotRegisteredException e1) {
352
                                getTxtAbstract().setText("Provider not registered. I cannot connect.");
353
                        } catch (ValidateDataParametersException e1) {
354
                                getTxtAbstract().setText("Parameters not valid. I cannot connect.");
355
                        }
356
                }
357
                
358
                if(e.getSource() == getBtnCancel()) {
359
                        getTxtAbstract().setText("Cancelled...");
360
                        ((CancelTaskImpl)cancel).setCanceled(true);
361
                        getBtnCancel().setEnabled(false);
362
                }
363
        }
364

    
365
        /**
366
         * DOCUMENT ME!
367
         */
368
        protected void activarVisualizarBotones() {
369
                if (page == firstPage) {
370
                        getBtnAnterior().setEnabled(false);
371
                        getBtnSiguiente().setVisible(true);
372

    
373
                        if (connected) {
374
                                getBtnSiguiente().setEnabled(true);
375
                        } else {
376
                                getBtnSiguiente().setEnabled(false);
377
                        }
378
                } else if (page < wcsParamsPanel.getNumTabs()) {
379
                        getBtnSiguiente().setEnabled(true);
380
                        getBtnSiguiente().setVisible(true);
381
                        getBtnAnterior().setEnabled(true);
382
                        getBtnAnterior().setVisible(true);
383
                        if (wcsParamsPanel.nextEnabledPage()==-1){
384
                                getBtnSiguiente().setEnabled(false);
385
                        }
386
                        listenerSupport.callStateChanged(wcsParamsPanel.isCorrectlyConfigured());
387
                } else if (page == wcsParamsPanel.getNumTabs()) {
388
                        getBtnSiguiente().setVisible(false);
389
                        getBtnSiguiente().setEnabled(false);
390
                        listenerSupport.callStateChanged(wcsParamsPanel.isCorrectlyConfigured());
391
                }
392
        }
393

    
394
        /**
395
         * This method initializes txtHost
396
         *
397
         * @return javax.swing.JTextField
398
         */
399
        private javax.swing.JComboBox getTxtHost() {
400
                if (cmbHost == null) {
401
                        cmbHost = new JComboServer();
402
                        cmbHost.setModel(new DefaultComboBoxModel());
403
                        cmbHost.setPreferredSize(new java.awt.Dimension(350, 20));
404
                        cmbHost.setBounds(11, 26, 454, 20);
405
                        cmbHost.setEditable(true);
406

    
407
                        ServerDataPersistence persistence = new ServerDataPersistence(this,ServerData.SERVER_TYPE_WCS);
408
                        ServerData[] servers = persistence.getArrayOfServerData();
409

    
410
                        if (servers.length == 0){
411
                                PluginServices ps = PluginServices.getPluginServices(this);
412
                                XMLEntity xml = ps.getPersistentXML();
413
                                try {
414
                                        String[] oldServers = xml.getStringArrayProperty("wcs-servers");
415
                                        servers = new ServerData[oldServers.length];
416
                                        for (int i=0; i<oldServers.length; i++) {
417
                                                servers[i] = new ServerData(oldServers[i],ServerData.SERVER_TYPE_WCS);
418
                                        }
419
                                        xml.remove("wcs-servers");
420
                                        ps.setPersistentXML(xml);
421
                                } catch (NotExistInXMLEntity e) {
422
                                        // Old servers doesn't exist
423
                                        servers = new ServerData[2];
424
                                        servers[0] = new ServerData("http://maps.gdal.org/cgi-bin/mapserv_dem",ServerData.SERVER_TYPE_WCS);
425
                                        servers[1] = new ServerData("http://inspire.cop.gva.es/mapserver/wcs",ServerData.SERVER_TYPE_WCS);
426
                                }
427

    
428
                                for (int i=0 ; i<servers.length ; i++){
429
                                        persistence.addServerData(servers[i]);
430
                                }
431
                                persistence.setPersistent();
432
                        }
433

    
434
                        cmbHost.setServerList(servers);
435
                }
436

    
437
                return cmbHost;
438
        }
439

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

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

    
472
                return btnCancel;
473
        }
474

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

    
491
                        jPanel.add(getJScrollPane(), null);
492
                        jPanel.add(getPnlName(), null);
493
                }
494

    
495
                return jPanel;
496
        }
497

    
498
        /**
499
         * This method initializes jLabel1
500
         *
501
         * @return javax.swing.JLabel
502
         */
503
        private javax.swing.JLabel getJLabel1() {
504
                if (jLabel1 == null) {
505
                        jLabel1 = new javax.swing.JLabel();
506
                        jLabel1.setText(PluginServices.getText(this, "name") + ":");
507
                }
508

    
509
                return jLabel1;
510
        }
511

    
512
        /**
513
         * This method initializes lblTitle
514
         *
515
         * @return javax.swing.JLabel
516
         */
517
        private javax.swing.JLabel getLblTitle() {
518
                if (lblTitle == null) {
519
                        lblTitle = new javax.swing.JLabel();
520
                        lblTitle.setText("-");
521
                }
522

    
523
                return lblTitle;
524
        }
525

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

    
539
                return jScrollPane;
540
        }
541

    
542
        /**
543
         * This method initializes txtAbstract
544
         *
545
         * @return javax.swing.JTextArea
546
         */
547
        private javax.swing.JTextArea getTxtAbstract() {
548
                if (txtAbstract == null) {
549
                        txtAbstract = new javax.swing.JTextArea();
550
                        txtAbstract.setWrapStyleWord(true);
551
                        txtAbstract.setColumns(30);
552
                        txtAbstract.setLineWrap(true);
553
                }
554

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

    
569
                return panelPage1;
570
        }
571

    
572

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

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

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

    
677
                return jPanel1;
678
        }
679

    
680
        /**
681
         * DOCUMENT ME!
682
         *
683
         * @param listener
684
         */
685
        public void addWizardListener(WizardListener listener) {
686
                listenerSupport.addWizardListener(listener);
687
        }
688

    
689
        /**
690
         * DOCUMENT ME!
691
         *
692
         * @param listener
693
         */
694
        public void removeWizardListener(WizardListener listener) {
695
                listenerSupport.removeWizardListener(listener);
696
        }
697

    
698
        /**
699
         * DOCUMENT ME!
700
         *
701
         * @return DOCUMENT ME!
702
         * @throws ProjectionLayerException
703
         */
704
        public Rectangle2D getLayersRectangle() throws ProjectionLayerException {
705
                //return wcsParamsPanel.getLayersRectangle();
706
                return null;
707
        }
708

    
709

    
710

    
711
        /**
712
         * Devuelve el host que est� escrito en el cuadro de texto del host o null
713
         * en caso de que no haya nada escrito o est� mal escrito
714
         *
715
         * @return URL del host
716
         */
717
        public URL getHost() {
718
                try {
719
                        if ((cmbHost == null)|| (cmbHost.getModel().getSelectedItem() == null)) {
720
                                return new URL(explorer.getHost());
721
                        } else {
722
                                return new URL(cmbHost.getModel().getSelectedItem().toString());
723
                        }
724
                } catch (MalformedURLException e) {
725
                        return null;
726
                }
727
        }
728

    
729
        /**
730
         * DOCUMENT ME!
731
         *
732
         * @return Nombre de la capa que aparece en el TOC.
733
         */
734
        public String getLayerName() {
735
                return wcsParamsPanel.getLayerName();
736
        }
737

    
738

    
739
        public void initWizard() {
740
        }
741

    
742
        public void execute() {
743
                try {
744
                        FLayer layer = wcsParamsPanel.getLayer(getChkTileCache().isSelected());
745
                        if(layer == null)
746
                                return;
747
                        this.getMapCtrl().getMapContext().getLayers().addLayer(layer);
748
                } catch (InitializeException e) {
749
                        logger.info("The layer cannot be added", e);
750
                }
751

    
752
        }
753
        
754
        /**
755
         * This method initializes chkCaching
756
         *
757
         * @return javax.swing.JCheckBox
758
         */
759
        private JCheckBox getChkCaching() {
760
                if (chkCaching == null) {
761
                        chkCaching = new JCheckBox();
762
                        chkCaching.setBounds(7, 51, 249, 20);
763
                        chkCaching.setText(PluginServices.getText(this, "refresh_capabilities"));
764
                        chkCaching.setToolTipText(PluginServices.getText(this, "refresh_capabilities_tooltip"));
765
                        chkCaching.setSelected(refreshing);
766
                        chkCaching.addItemListener(new java.awt.event.ItemListener() {
767
                                public void itemStateChanged(java.awt.event.ItemEvent e) {
768
                                        refreshing = chkCaching.isSelected();
769
                                }
770
                        });
771
                        chkCaching.addActionListener(new java.awt.event.ActionListener() {
772
                                public void actionPerformed(java.awt.event.ActionEvent e) {
773
                                        fPrefs.putBoolean("refresh_capabilities", chkCaching.isSelected());
774
                                }
775
                        });
776

    
777
                }
778
                return chkCaching;
779
        }
780
        
781
        /**
782
         * This method initializes chkCaching
783
         *
784
         * @return javax.swing.JCheckBox
785
         */
786
        private JCheckBox getChkTileCache() {
787
                if (chkTileCache == null) {
788
                        chkTileCache = new JCheckBox();
789
                        chkTileCache.setBounds(7, 72, 249, 20);
790
                        chkTileCache.setText(PluginServices.getText(this, "tile_cache"));
791
                        chkTileCache.setToolTipText(PluginServices.getText(this, "tile_cache_tooltip"));
792
                        chkTileCache.setSelected(usingTileCache);
793
                        chkTileCache.addItemListener(new java.awt.event.ItemListener() {
794
                                public void itemStateChanged(java.awt.event.ItemEvent e) {
795
                                        usingTileCache = chkTileCache.isSelected();
796
                                }
797
                        });
798
                        chkTileCache.addActionListener(new java.awt.event.ActionListener() {
799
                                public void actionPerformed(java.awt.event.ActionEvent e) {
800
                                        fPrefs.putBoolean("tile_cache", chkTileCache.isSelected());
801
                                }
802
                        });
803

    
804
                }
805
                return chkTileCache;
806
        }
807

    
808
        /**
809
         * This method initializes pnlName
810
         *
811
         * @return javax.swing.JPanel
812
         */
813
        private JPanel getPnlName() {
814
                if (pnlName == null) {
815
                        pnlName = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 0));
816
                        pnlName.setBounds(new java.awt.Rectangle(9,19,452,24));
817
                        pnlName.add(getJLabel1(), null);
818
                        pnlName.add(getLblTitle(), null);
819
                }
820
                return pnlName;
821
        }
822

    
823
        @Override
824
        public DataStoreParameters[] getParameters() {
825
                // TODO Auto-generated method stub
826
                return null;
827
        }
828

    
829
        @Override
830
        public void close() {
831
                // Nothing to do
832
        }
833
}  //  @jve:decl-index=0:visual-constraint="10,10"