Statistics
| Revision:

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

History | View | Annotate | Download (27.1 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.File;
31
import java.io.FileInputStream;
32
import java.io.FileNotFoundException;
33
import java.io.IOException;
34
import java.net.MalformedURLException;
35
import java.net.URL;
36
import java.util.Properties;
37
import java.util.prefs.Preferences;
38

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

    
48
import org.apache.commons.io.IOUtils;
49
import org.gvsig.andami.PluginServices;
50
import org.gvsig.andami.PluginsLocator;
51
import org.gvsig.andami.PluginsManager;
52
import org.gvsig.andami.persistence.serverData.ServerDataPersistence;
53
import org.gvsig.app.gui.WizardPanel;
54
import org.gvsig.app.gui.wizards.WizardListener;
55
import org.gvsig.app.gui.wizards.WizardListenerSupport;
56
import org.gvsig.compat.net.ICancellable;
57
import org.gvsig.fmap.dal.DALLocator;
58
import org.gvsig.fmap.dal.DataManager;
59
import org.gvsig.fmap.dal.DataStoreParameters;
60
import org.gvsig.fmap.dal.coverage.exception.ConnectException;
61
import org.gvsig.fmap.dal.coverage.exception.RemoteServiceException;
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.ProjectionLayerException;
66
import org.gvsig.fmap.mapcontext.layers.FLayer;
67
import org.gvsig.gui.beans.Messages;
68
import org.gvsig.raster.cache.tile.TileCacheLibrary;
69
import org.gvsig.raster.util.CancelTaskImpl;
70
import org.gvsig.raster.wcs.app.wcsclient.WCSClientExtension;
71
import org.gvsig.raster.wcs.app.wcsclient.gui.panel.WCSParamsPanel;
72
import org.gvsig.raster.wcs.io.WCSProvider;
73
import org.gvsig.raster.wcs.io.WCSServerExplorer;
74
import org.gvsig.raster.wcs.io.WCSServerExplorerParameters;
75
import org.gvsig.tools.dynobject.DynObject;
76
import org.gvsig.utils.swing.jcomboServer.JComboServer;
77
import org.gvsig.utils.swing.jcomboServer.ServerData;
78
import org.slf4j.Logger;
79
import org.slf4j.LoggerFactory;
80

    
81

    
82

    
83
/**
84
 * The WCS properties container panel.
85
 *
86
 * @author Jaume Dominguez Faus
87
 */
88
public class WCSWizard extends WizardPanel implements ActionListener {
89
        final static private Logger           logger = LoggerFactory.getLogger(WCSWizard.class);
90
        private static final long             serialVersionUID   = 1L;
91
        private String                        serversPropsFilename       = "servers.properties";
92

    
93

    
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    = new WizardListenerSupport();
109
        protected WCSParamsPanel              wcsParamsPanel     = null;
110
        protected JLabel                      lblServerType      = null;
111
        protected JLabel                      lblServerTypeValue = null;
112
        private JCheckBox                     chkCaching         = null;
113
        private static Preferences            fPrefs             = Preferences.userRoot().node( "gvsig.wcs-wizard" );
114
        private boolean                       usingTileCache     = fPrefs.getBoolean("tile_cache", false);
115
        private JCheckBox                     chkTileCache       = null;
116
        private boolean                       refreshing         = fPrefs.getBoolean("refresh_capabilities", false);
117
        protected int                         firstPage          = 0;
118
        private JPanel                        pnlName            = null;
119
        private ICancellable                  cancel             = null;
120
        private WCSServerExplorer             explorer           = null;
121

    
122
    private PluginServices plugin = null;
123

    
124
        public WCSWizard (WCSParamsPanel params) {
125
                super();
126
                firstPage = 1;
127
                page = firstPage;
128
                this.wcsParamsPanel = params;
129
                this.explorer = wcsParamsPanel.getExplorer();
130

    
131
                setTabName("WCS");
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
                wcsParamsPanel.setListenerSupport(this.listenerSupport);
148
                wcsParamsPanel.setBounds(0, 5, 510, 428);
149
                wcsParamsPanel.getJTabbedPane().addMouseListener(
150
                                new java.awt.event.MouseAdapter() {
151
                                        public void mouseClicked(java.awt.event.MouseEvent e) {
152
                                                page = wcsParamsPanel.currentPage() + 1;
153
                                                activarVisualizarBotones();
154
                                        }
155
                                });
156
                this.add(wcsParamsPanel, null);
157
                this.add(lblServerType, null);
158
                this.add(lblServerTypeValue, null);
159
                getWCSParamsPanel().setVisible(true);
160

    
161
                connected = true;
162
        }
163

    
164
        /**
165
         * This is the default constructor
166
         */
167
        public WCSWizard() {
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
        PluginsManager pluginsManager = PluginsLocator.getManager();
185
        this.plugin = pluginsManager.getPlugin(WCSClientExtension.class);
186

    
187
                setTabName("WCS");
188

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

    
212

    
213
        protected JPanel getWCSParamsPanel(){
214
                if (wcsParamsPanel == null){
215
                        wcsParamsPanel = new WCSParamsPanel();
216
                        wcsParamsPanel.setListenerSupport(this.listenerSupport);
217
                        wcsParamsPanel.setBounds(0, 5, 510, 428);
218
                        wcsParamsPanel.getJTabbedPane().addMouseListener(
219
                                        new java.awt.event.MouseAdapter() {
220
                                                public void mouseClicked(java.awt.event.MouseEvent e) {
221
                                                        page = wcsParamsPanel.currentPage() + 1;
222
                                                        activarVisualizarBotones();
223
                                                }
224
                                        });
225
                }
226
                return wcsParamsPanel;
227
        }
228

    
229
        /**
230
         * This method checks for the options selected within the configuration
231
         * dialog are correct.
232
         *
233
         * @return true if you're done, false if not.
234
         */
235
        public boolean areSettingsValid() {
236
                return wcsParamsPanel.isCorrectlyConfigured();
237
        }
238

    
239
        /**
240
         * Thread to connect to a WCS server
241
         * @author Nacho Brodin (nachobrodin@gmail.com)
242
         */
243
        public class ConnectThread extends Thread {
244
                private ICancellable             cancel      = null;
245
                private WCSServerExplorer        explorer    = null;
246
                private WCSWizard                wizard      = null;
247

    
248
                public ConnectThread(ICancellable cancel, WCSServerExplorer explorer, WCSWizard wizard) {
249
                        this.cancel = cancel;
250
                        this.explorer = explorer;
251
                        this.wizard = wizard;
252
                }
253

    
254
            public void run() {
255
                    if(!checkHostAndNetwork())
256
                            return;
257

    
258
                    try {
259
                            explorer.connect(cancel);
260
                            saveServerListFromComboBox();
261
                        } catch (ConnectException e) {
262
                                String msg = e.getMessage() + " : " + getIOExceptionMessage(e);
263
                                logger.info(msg, e);
264
                                JOptionPane.showMessageDialog(getWCSParamsPanel(), msg, Messages.getText("Error"), JOptionPane.ERROR_MESSAGE);
265
                                return;
266
                        } finally {
267
                                ((CancelTaskImpl)cancel).setCanceled(false);
268
                        }
269

    
270
                        //storeParams = (WCSDataParameters)explorer.getStoreParameters();
271

    
272
                        wizard.rellenarControles();
273
            }
274

    
275
            /**
276
                 * Gets the <code>IOException</code> message. The message
277
                 * of this exception is returned by the server
278
                 * @param e
279
                 * @return
280
                 */
281
                private String getIOExceptionMessage(Exception e) {
282
                        Throwable ex = e;
283
                        final int MAX_DEEP = 10;
284
                        int deep = 0;
285
                        while(deep < MAX_DEEP) {
286
                                Throwable t = null;
287
                                if(ex instanceof IOException) {
288
                                        return ex.getMessage();
289
                                } else if(ex instanceof RemoteServiceException) {
290
                                        t = ex.getCause();
291
                                }
292
                                if(t == null)
293
                                        return null;
294
                                else
295
                                        ex = t;
296
                                deep++;
297
                        }
298
                        return null;
299
                }
300
        }
301

    
302
        /**
303
         * Checks if the network and host are reachable
304
         * @return true if both are reachable and false if they are not
305
         */
306
        private boolean checkHostAndNetwork() {
307
                if(!explorer.isHostReachable()) {
308
                        JOptionPane.showMessageDialog(null, Messages.getText("host_unreachable"), Messages.getText("Error"), JOptionPane.ERROR_MESSAGE);
309
                        logger.info(Messages.getText("host_unreachable"));
310
                        return false;
311
                }
312
                return true;
313
        }
314

    
315
        /**
316
         * DOCUMENT ME!
317
         */
318
        private void rellenarControles() {
319
                try {
320
                        //String host = cmbHost.getModel().getSelectedItem().toString();
321

    
322
                        lblTitle.setText(explorer.getTitle());
323
                        lblServerTypeValue.setText(explorer.getServerType());
324
                        txtAbstract.setText(explorer.getAbstract());
325

    
326
                        wcsParamsPanel.setWizardData(explorer);
327
                        connected = true;
328
                        activarVisualizarBotones();
329
                } catch (Exception e) {
330
                        if (e.getMessage()==null) {
331
                                txtAbstract.setText(PluginServices.getText(this,"error"));
332
                        } else {
333
                                txtAbstract.setText(e.getMessage());
334
                        }
335
                        listenerSupport.callError(e);
336
                        getBtnSiguiente().setEnabled(false);
337
                        getBtnAnterior().setEnabled(true);
338
                } finally {
339
                        getBtnCancel().setEnabled(false);
340
                }
341
        }
342

    
343
        @SuppressWarnings("deprecation")
344
        public void actionPerformed(ActionEvent e) {
345
                if(e.getSource() == getBtnConnect()) {
346
                        getBtnCancel().setEnabled(true);
347
                        getTxtAbstract().setText("Trying to connect...");
348
                        String host = cmbHost.getModel().getSelectedItem().toString();
349
                        try {
350
                                DataManager datamanager = DALLocator.getDataManager();
351
                                WCSServerExplorerParameters explorerParams = (WCSServerExplorerParameters) datamanager.createServerExplorerParameters(WCSProvider.NAME);
352
                                explorerParams.setHost(host);
353

    
354
                                explorer = (WCSServerExplorer) datamanager.createServerExplorer(explorerParams);
355

    
356
                                ((CancelTaskImpl)cancel).setCanceled(false);
357
                                new ConnectThread(cancel, explorer, this).start();
358

    
359
                        } catch (InitializeException e1) {
360
                                getTxtAbstract().setText("Error creating WCS layer");
361
                        } catch (ProviderNotRegisteredException e1) {
362
                                getTxtAbstract().setText("Provider not registered. I cannot connect.");
363
                        } catch (ValidateDataParametersException e1) {
364
                                getTxtAbstract().setText("Parameters not valid. I cannot connect.");
365
                        }
366
                }
367

    
368
                if(e.getSource() == getBtnCancel()) {
369
                        getTxtAbstract().setText("Cancelled...");
370
                        ((CancelTaskImpl)cancel).setCanceled(true);
371
                        getBtnCancel().setEnabled(false);
372
                }
373
        }
374

    
375
        /**
376
         * DOCUMENT ME!
377
         */
378
        protected void activarVisualizarBotones() {
379
                if (page == firstPage) {
380
                        getBtnAnterior().setEnabled(false);
381
                        getBtnSiguiente().setVisible(true);
382

    
383
                        if (connected) {
384
                                getBtnSiguiente().setEnabled(true);
385
                        } else {
386
                                getBtnSiguiente().setEnabled(false);
387
                        }
388
                } else if (page < wcsParamsPanel.getNumTabs()) {
389
                        getBtnSiguiente().setEnabled(true);
390
                        getBtnSiguiente().setVisible(true);
391
                        getBtnAnterior().setEnabled(true);
392
                        getBtnAnterior().setVisible(true);
393
                        if (wcsParamsPanel.nextEnabledPage()==-1){
394
                                getBtnSiguiente().setEnabled(false);
395
                        }
396
                        listenerSupport.callStateChanged(wcsParamsPanel.isCorrectlyConfigured());
397
                } else if (page == wcsParamsPanel.getNumTabs()) {
398
                        getBtnSiguiente().setVisible(false);
399
                        getBtnSiguiente().setEnabled(false);
400
                        listenerSupport.callStateChanged(wcsParamsPanel.isCorrectlyConfigured());
401
                }
402
        }
403

    
404
        /**
405
         * This method initializes txtHost
406
         *
407
         * @return javax.swing.JTextField
408
         */
409
        private javax.swing.JComboBox getTxtHost() {
410
                if (cmbHost == null) {
411
                        cmbHost = new JComboServer();
412
                        cmbHost.setModel(new DefaultComboBoxModel());
413
                        cmbHost.setPreferredSize(new java.awt.Dimension(350, 20));
414
                        cmbHost.setBounds(11, 26, 454, 20);
415
                        cmbHost.setEditable(true);
416
                        cmbHost.setServerList(getServerDataPersistence().getArrayOfServerData());
417
                }
418

    
419
                return cmbHost;
420
        }
421

    
422
        /**
423
         * Gets the list of servers that have been persisted or added in the properties file
424
         * @return
425
         */
426
        private ServerDataPersistence getServerDataPersistence() {
427
        DynObject pluginProperties = this.plugin.getPluginProperties();
428
        ServerDataPersistence servers =  (ServerDataPersistence) pluginProperties.getDynValue("servers");
429

    
430
        if( servers == null || servers.isEmpty() ) {
431
            if( servers == null ) {
432
                servers = new ServerDataPersistence(ServerData.SERVER_TYPE_WCS);
433
                pluginProperties.setDynValue("servers", servers);
434
            }
435
            //Lee los servidores del properties y los mezcla con los que hay en la persistencia
436
            Properties prop = new Properties();
437
            File propFile = new File(this.plugin.getPluginDirectory(),serversPropsFilename);
438
            FileInputStream fis = null;
439
            try {
440
                    fis = new FileInputStream(propFile);
441
                    prop.load(fis);
442
            } catch (FileNotFoundException e) {
443
                    logger.info("Properties file '"+propFile.getAbsolutePath()+"' not found", e);
444
            } catch (IOException e) {
445
                    logger.info("Error reading properties file '"+propFile.getAbsolutePath()+"'.", e);
446
            } finally {
447
                IOUtils.closeQuietly(fis);
448
            }
449

    
450
            for (int i = 0; i < prop.size(); i++) {
451
                Object value = prop.get("server[" + i + "]");
452
                servers.addServerData(new ServerData(value.toString(), ServerData.SERVER_TYPE_WCS));
453
            }
454

    
455
        }
456
        return servers;
457
        }
458

    
459
        /**
460
         * Saves the list of server reading from the <code>ComboBox</code>
461
         */
462
        private void saveServerListFromComboBox() {
463
        ServerDataPersistence persistence = getServerDataPersistence();
464
                String urlSelected = getTxtHost().getModel().getSelectedItem().toString();
465

    
466
                boolean isSelectedInModel = false;
467
                for (int i = 0; i < getTxtHost().getItemCount(); i++) {
468
                        String url = getTxtHost().getItemAt(i).toString();
469
                        persistence.addServerData(new ServerData(url, ServerData.SERVER_TYPE_WCS));
470
                        if(url.equals(urlSelected)) {
471
                                isSelectedInModel = true;
472
                        }
473
                }
474

    
475
                if(!isSelectedInModel)
476
                        persistence.addServerData(new ServerData(urlSelected, ServerData.SERVER_TYPE_WCS));
477

    
478
        }
479

    
480

    
481
        /**
482
         * This method initializes btnDetalles
483
         *
484
         * @return javax.swing.JButton
485
         */
486
        private JButton getBtnConnect() {
487
                if (btnConnect == null) {
488
                        btnConnect = new JButton();
489
                        btnConnect.setPreferredSize(new java.awt.Dimension(100, 20));
490
                        btnConnect.setBounds(262, 50, 100, 20);
491
                        btnConnect.setText(PluginServices.getText(this, "conectar"));
492
                        btnConnect.addActionListener(this);
493
                }
494

    
495
                return btnConnect;
496
        }
497

    
498
        /**
499
         * This method initializes btnDetalles
500
         *
501
         * @return javax.swing.JButton
502
         */
503
        private JButton getBtnCancel() {
504
                if (btnCancel == null) {
505
                        btnCancel = new JButton();
506
                        btnCancel.setEnabled(false);
507
                        btnCancel.setPreferredSize(new java.awt.Dimension(100, 20));
508
                        btnCancel.setBounds(366, 50, 100, 20);
509
                        btnCancel.setText(PluginServices.getText(this, "cancel"));
510
                        btnCancel.addActionListener(this);
511
                }
512

    
513
                return btnCancel;
514
        }
515

    
516
        /**
517
         * This method initializes jPanel
518
         *
519
         * @return javax.swing.JPanel
520
         */
521
        private javax.swing.JPanel getJPanel() {
522
                if (jPanel == null) {
523
                        jPanel = new javax.swing.JPanel();
524
                        jPanel.setLayout(null);
525
                        jPanel.setPreferredSize(new java.awt.Dimension(470, 130));
526
                        jPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(
527
                                        null, PluginServices.getText(this, "description"),
528
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
529
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
530
                        jPanel.setBounds(2, 116, 477, 304);
531

    
532
                        jPanel.add(getJScrollPane(), null);
533
                        jPanel.add(getPnlName(), null);
534
                }
535

    
536
                return jPanel;
537
        }
538

    
539
        /**
540
         * This method initializes jLabel1
541
         *
542
         * @return javax.swing.JLabel
543
         */
544
        private javax.swing.JLabel getJLabel1() {
545
                if (jLabel1 == null) {
546
                        jLabel1 = new javax.swing.JLabel();
547
                        jLabel1.setText(PluginServices.getText(this, "name") + ":");
548
                }
549

    
550
                return jLabel1;
551
        }
552

    
553
        /**
554
         * This method initializes lblTitle
555
         *
556
         * @return javax.swing.JLabel
557
         */
558
        private javax.swing.JLabel getLblTitle() {
559
                if (lblTitle == null) {
560
                        lblTitle = new javax.swing.JLabel();
561
                        lblTitle.setText("-");
562
                }
563

    
564
                return lblTitle;
565
        }
566

    
567
        /**
568
         * This method initializes jScrollPane
569
         *
570
         * @return javax.swing.JScrollPane
571
         */
572
        private javax.swing.JScrollPane getJScrollPane() {
573
                if (jScrollPane == null) {
574
                        jScrollPane = new javax.swing.JScrollPane();
575
                        jScrollPane.setViewportView(getTxtAbstract());
576
                        jScrollPane.setPreferredSize(new java.awt.Dimension(450, 60));
577
                        jScrollPane.setBounds(10, 47, 457, 247);
578
                }
579

    
580
                return jScrollPane;
581
        }
582

    
583
        /**
584
         * This method initializes txtAbstract
585
         *
586
         * @return javax.swing.JTextArea
587
         */
588
        private javax.swing.JTextArea getTxtAbstract() {
589
                if (txtAbstract == null) {
590
                        txtAbstract = new javax.swing.JTextArea();
591
                        txtAbstract.setWrapStyleWord(true);
592
                        txtAbstract.setColumns(30);
593
                        txtAbstract.setLineWrap(true);
594
                }
595

    
596
                return txtAbstract;
597
        }
598

    
599
        private javax.swing.JPanel getPanelPage1() {
600
                if (panelPage1 == null) {
601
                        panelPage1 = new JPanel();
602
                        panelPage1.setLayout(null);
603
                        panelPage1.setPreferredSize(new java.awt.Dimension(480, 220));
604
                        panelPage1.setVisible(true);
605
                        panelPage1.setBounds(15, 5, 480, 427);
606
                        panelPage1.add(getJPanel1(), null);
607
                        panelPage1.add(getJPanel(), null);
608
                }
609

    
610
                return panelPage1;
611
        }
612

    
613

    
614
        /**
615
         * This method initializes btnSiguiente
616
         *
617
         * @return javax.swing.JButton
618
         */
619
        private javax.swing.JButton getBtnSiguiente() {
620
                if (btnSiguiente == null) {
621
                        btnSiguiente = new JButton();
622
                        btnSiguiente.setPreferredSize(new java.awt.Dimension(100, 30));
623
                        btnSiguiente.setBounds(395, 444, 100, 20);
624
                        btnSiguiente.setText(PluginServices.getText(this, "siguiente"));
625
                        btnSiguiente.addActionListener(new java.awt.event.ActionListener() {
626
                                public void actionPerformed(java.awt.event.ActionEvent e) {
627
                                        if(page == firstPage && getChkTileCache().isSelected()) {
628
                                                messageBoxInfo("remote_service_tiled", TileCacheLibrary.ALTERNATIVE_TILESIZE + "", this);
629
                                        }
630
                                        if (page > firstPage) {
631
                                                // si page es mayor que cero, vamos enfocando las
632
                                                // sucesivas SOLAPAS del WCSParamsPanel
633
                                                wcsParamsPanel.avanzaTab();
634
                                                page = wcsParamsPanel.currentPage();
635
                                        }
636
                                        page++;
637
                                        getPanelPage1().setVisible(false);
638
                                        getWCSParamsPanel().setVisible(true);
639
                                        activarVisualizarBotones();
640
                                }
641
                        });
642
                }
643
                return btnSiguiente;
644
        }
645

    
646
        /**
647
         * Shows an information dialog with a text and a accept button
648
         * @param msg Message to show in the dialog
649
         * @param parentWindow Parent window
650
         */
651
        public static void messageBoxInfo(String msg, String fixedText, Object parentWindow){
652
                String string = PluginServices.getText(parentWindow, "accept");
653
                Object[] options = {string};
654
                JOptionPane.showOptionDialog((Component)PluginServices.getMainFrame(),
655
                                        "<html>" + PluginServices.getText(parentWindow, msg).replaceAll("\n", "<br>") + " " + fixedText + "</html>",
656
                                        PluginServices.getText(parentWindow, "confirmacion"),
657
                                        JOptionPane.OK_OPTION,
658
                                        JOptionPane.INFORMATION_MESSAGE,
659
                                        null,
660
                                        options,
661
                                        string);
662
        }
663

    
664
        /**
665
         * This method initializes btnAnterior
666
         *
667
         * @return javax.swing.JButton
668
         */
669
        private javax.swing.JButton getBtnAnterior() {
670
                if (btnAnterior == null) {
671
                        btnAnterior = new JButton();
672
                        btnAnterior.setBounds(292, 444, 100, 20);
673
                        btnAnterior.setPreferredSize(new java.awt.Dimension(100, 30));
674
                        btnAnterior.setText(PluginServices.getText(this, "anterior"));
675
                        btnAnterior.addActionListener(new java.awt.event.ActionListener() {
676
                                public void actionPerformed(java.awt.event.ActionEvent e) {
677
                                        page --;
678
                                        if (page > firstPage) {
679
                                                // Tenemos que retroceder en el wcsParamsPanel
680
                                                wcsParamsPanel.retrocedeTab();
681
                                                page = wcsParamsPanel.currentPage() + 1;
682
                                                activarVisualizarBotones();
683
                                        } else if (page==firstPage){
684
                                                activarVisualizarBotones();
685
                                                page = firstPage +1;
686
                                                getLblTitle().setText("-");
687
                                                getTxtAbstract().setText("");
688
                                                wcsParamsPanel.retrocedeTab();
689
                                                getPanelPage1().setVisible(true);
690
                                                getWCSParamsPanel().setVisible(false);
691
                                                getBtnSiguiente().setEnabled(false);
692
                                                connected = false;
693
                                        }
694
                                        listenerSupport.callStateChanged(wcsParamsPanel.isCorrectlyConfigured());
695
                                }
696
                        });
697
                }
698

    
699
                return btnAnterior;
700
        }
701

    
702
        private javax.swing.JPanel getJPanel1() {
703
                if (jPanel1 == null) {
704
                        jPanel1 = new javax.swing.JPanel();
705
                        jPanel1.setLayout(null);
706
                        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(
707
                                        null, PluginServices.getText(this, "server"),
708
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
709
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
710
                        jPanel1.setBounds(2, 5, 477, 105);
711
                        jPanel1.add(getTxtHost(), null);
712
                        jPanel1.add(getBtnConnect(), null);
713
                        jPanel1.add(getBtnCancel(), null);
714
                        jPanel1.add(getChkCaching(), null);
715
                        jPanel1.add(getChkTileCache(), null);
716
                }
717

    
718
                return jPanel1;
719
        }
720

    
721
        /**
722
         * DOCUMENT ME!
723
         *
724
         * @param listener
725
         */
726
        public void addWizardListener(WizardListener listener) {
727
                listenerSupport.addWizardListener(listener);
728
        }
729

    
730
        /**
731
         * DOCUMENT ME!
732
         *
733
         * @param listener
734
         */
735
        public void removeWizardListener(WizardListener listener) {
736
                listenerSupport.removeWizardListener(listener);
737
        }
738

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

    
750

    
751

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

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

    
779

    
780
        public void initWizard() {
781
        }
782

    
783
        public void execute() {
784
                try {
785
                        FLayer layer = wcsParamsPanel.getLayer(getChkTileCache().isSelected());
786
                        if(layer == null)
787
                                return;
788
                        this.getMapCtrl().getMapContext().getLayers().addLayer(layer);
789
                } catch (InitializeException e) {
790
                        logger.info("The layer cannot be added", e);
791
                }
792

    
793
        }
794

    
795
        /**
796
         * This method initializes chkCaching
797
         *
798
         * @return javax.swing.JCheckBox
799
         */
800
        private JCheckBox getChkCaching() {
801
                if (chkCaching == null) {
802
                        chkCaching = new JCheckBox();
803
                        chkCaching.setBounds(7, 51, 249, 20);
804
                        chkCaching.setText(PluginServices.getText(this, "refresh_capabilities"));
805
                        chkCaching.setToolTipText(PluginServices.getText(this, "refresh_capabilities_tooltip"));
806
                        chkCaching.setSelected(refreshing);
807
                        chkCaching.addItemListener(new java.awt.event.ItemListener() {
808
                                public void itemStateChanged(java.awt.event.ItemEvent e) {
809
                                        refreshing = chkCaching.isSelected();
810
                                }
811
                        });
812
                        chkCaching.addActionListener(new java.awt.event.ActionListener() {
813
                                public void actionPerformed(java.awt.event.ActionEvent e) {
814
                                        fPrefs.putBoolean("refresh_capabilities", chkCaching.isSelected());
815
                                }
816
                        });
817

    
818
                }
819
                return chkCaching;
820
        }
821

    
822
        /**
823
         * This method initializes chkCaching
824
         *
825
         * @return javax.swing.JCheckBox
826
         */
827
        private JCheckBox getChkTileCache() {
828
                if (chkTileCache == null) {
829
                        chkTileCache = new JCheckBox();
830
                        chkTileCache.setBounds(7, 72, 249, 20);
831
                        chkTileCache.setText(PluginServices.getText(this, "tile_cache"));
832
                        chkTileCache.setToolTipText(PluginServices.getText(this, "tile_cache_tooltip"));
833
                        chkTileCache.setSelected(usingTileCache);
834
                        chkTileCache.addItemListener(new java.awt.event.ItemListener() {
835
                                public void itemStateChanged(java.awt.event.ItemEvent e) {
836
                                        usingTileCache = chkTileCache.isSelected();
837
                                }
838
                        });
839
                        chkTileCache.addActionListener(new java.awt.event.ActionListener() {
840
                                public void actionPerformed(java.awt.event.ActionEvent e) {
841
                                        fPrefs.putBoolean("tile_cache", chkTileCache.isSelected());
842
                                }
843
                        });
844

    
845
                }
846
                return chkTileCache;
847
        }
848

    
849
        /**
850
         * This method initializes pnlName
851
         *
852
         * @return javax.swing.JPanel
853
         */
854
        private JPanel getPnlName() {
855
                if (pnlName == null) {
856
                        pnlName = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 0));
857
                        pnlName.setBounds(new java.awt.Rectangle(9,19,452,24));
858
                        pnlName.add(getJLabel1(), null);
859
                        pnlName.add(getLblTitle(), null);
860
                }
861
                return pnlName;
862
        }
863

    
864
        @Override
865
        public DataStoreParameters[] getParameters() {
866
                // TODO Auto-generated method stub
867
                return null;
868
        }
869

    
870
        @Override
871
        public void close() {
872
                // Nothing to do
873
        }
874
}  //  @jve:decl-index=0:visual-constraint="10,10"