Statistics
| Revision:

gvsig-raster / org.gvsig.raster.wmts / trunk / org.gvsig.raster.wmts / org.gvsig.raster.wmts.app.wmtsclient / src / main / java / org / gvsig / raster / wmts / app / wmtsclient / gui / wizard / WMTSWizard.java @ 2611

History | View | Annotate | Download (21.4 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.wmts.app.wmtsclient.gui.wizard;
24

    
25
import java.awt.GridBagConstraints;
26
import java.awt.GridBagLayout;
27
import java.awt.event.ActionEvent;
28
import java.awt.event.ActionListener;
29
import java.io.File;
30
import java.io.FileInputStream;
31
import java.io.FileNotFoundException;
32
import java.io.FileOutputStream;
33
import java.io.IOException;
34
import java.net.MalformedURLException;
35
import java.net.URL;
36
import java.util.ArrayList;
37
import java.util.List;
38
import java.util.Properties;
39
import java.util.prefs.Preferences;
40

    
41
import javax.swing.JOptionPane;
42

    
43
import org.cresques.cts.IProjection;
44
import org.gvsig.andami.Launcher;
45
import org.gvsig.andami.PluginServices;
46
import org.gvsig.andami.PluginsLocator;
47
import org.gvsig.andami.persistence.serverData.ServerDataPersistence;
48
import org.gvsig.andami.ui.mdiManager.IWindow;
49
import org.gvsig.app.gui.WizardPanel;
50
import org.gvsig.app.gui.wizards.WizardListener;
51
import org.gvsig.app.gui.wizards.WizardListenerSupport;
52
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel;
53
import org.gvsig.compat.net.ICancellable;
54
import org.gvsig.fmap.dal.DALLocator;
55
import org.gvsig.fmap.dal.DataManager;
56
import org.gvsig.fmap.dal.DataParameters;
57
import org.gvsig.fmap.dal.DataStoreParameters;
58
import org.gvsig.fmap.dal.coverage.exception.ConnectException;
59
import org.gvsig.fmap.dal.coverage.store.parameter.RasterDataParameters;
60
import org.gvsig.fmap.dal.coverage.store.parameter.TileDataParameters;
61
import org.gvsig.fmap.dal.exception.InitializeException;
62
import org.gvsig.fmap.dal.exception.ProviderNotRegisteredException;
63
import org.gvsig.fmap.dal.exception.ValidateDataParametersException;
64
import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException;
65
import org.gvsig.gui.beans.Messages;
66
import org.gvsig.raster.util.CancelTaskImpl;
67
import org.gvsig.raster.wmts.app.wmtsclient.layer.FLyrWMTS;
68
import org.gvsig.raster.wmts.io.WMTSDataParameters;
69
import org.gvsig.raster.wmts.io.WMTSServerExplorer;
70
import org.gvsig.raster.wmts.io.WMTSServerExplorerParameters;
71
import org.gvsig.raster.wmts.ogc.struct.WMTSServiceIdentification;
72
import org.gvsig.raster.wmts.swing.AddServerPanel;
73
import org.gvsig.raster.wmts.swing.NextPrevPanel;
74
import org.gvsig.raster.wmts.swing.WMTSSwingLocator;
75
import org.gvsig.raster.wmts.swing.WMTSWizardListener;
76
import org.gvsig.raster.wmts.swing.WmtsGUI;
77
import org.gvsig.tools.ToolsLocator;
78
import org.gvsig.tools.persistence.PersistenceManager;
79
import org.gvsig.utils.swing.jcomboServer.ServerData;
80
import org.slf4j.Logger;
81
import org.slf4j.LoggerFactory;
82

    
83
/**
84
 * The WMTS properties container panel.
85
 * @author Nacho Brodin (nachobrodin@gmail.com)
86
 */
87
@SuppressWarnings({ "unused", "deprecation" })
88
public class WMTSWizard extends WizardPanel implements ActionListener {
89
        private static final long             serialVersionUID       = 1L;
90
        private static Logger                 logger                 = LoggerFactory.getLogger(WMTSWizard.class);
91
        private String                        pluginName             = "org.gvsig.raster.wmts.app.wmtsclient";
92
        private File                          pluginPersistenceFile  = null;
93
        private File                          serverPropertiesFile   = null;
94
        private ServerDataPersistence         serverDataPersistence  = null;
95
        private String                        serversPropsFile       = "servers.properties";
96
        
97
        protected int                         page                   = 0;
98
        protected boolean                     connected              = false;
99
        private AddServerPanel                serverPanel            = null;
100
        private NextPrevPanel                 nextPrevPanel          = null;
101
        protected WmtsGUI                     wmtsParamsPanel        = null;
102
        
103
        private WMTSWizardListenerImpl        listenerSupport        = null;
104
        private static Preferences            fPrefs                 = Preferences.userRoot().node( "gvsig.wmts-wizard" );
105
        private boolean                       refreshing             = fPrefs.getBoolean("refresh_capabilities", false);
106
        protected int                         firstPage              = 0;
107
        private IProjection                   proj                   = null;
108
        private ICancellable                  cancel                 = null;
109
        private WMTSDataParameters            storeParams            = null;
110
        private WMTSServerExplorer            explorer               = null;
111

    
112
        public class WMTSWizardListenerImpl implements WMTSWizardListener {
113
                private WizardListenerSupport         gvsigWizardListener    = null;
114
                
115
                public WMTSWizardListenerImpl(WizardListenerSupport gvsigWizardListener) {
116
                          this.gvsigWizardListener = gvsigWizardListener;
117
                }
118
                
119
                public void callStateChanged(boolean finishable) {
120
                        this.gvsigWizardListener.callStateChanged(finishable);
121
                }
122

    
123
                public void callError(Exception descripcion) {
124
                        this.gvsigWizardListener.callError(descripcion);
125
                }
126

    
127
                public void addWizardListener(WizardListener listener) {
128
                        this.gvsigWizardListener.addWizardListener(listener);
129
                }
130

    
131
                public void removeWizardListener(WizardListener listener) {
132
                        this.gvsigWizardListener.removeWizardListener(listener);
133
                }
134

    
135
        }
136

    
137
        /**
138
         * This is the default constructor
139
         */
140
        public WMTSWizard() {
141
                super();
142
                firstPage = 0;
143
                page = firstPage;
144
                initialize();
145
                
146
                IWindow[] windows = PluginServices.getMDIManager().getAllWindows();
147
                for (int i = 0; i < windows.length; i++) {
148
                        if(windows[i] instanceof AbstractViewPanel)
149
                                proj = ((AbstractViewPanel)windows[i]).getProjection();
150
                }
151
                cancel = new CancelTaskImpl();
152
        }
153
        
154
        /**
155
         * This method initializes this
156
         */
157
        private void initialize() {
158
                setTabName("WMTS");
159
                setLayout(new GridBagLayout());
160
                GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
161
                gridBagConstraints1.fill = GridBagConstraints.BOTH;
162
                gridBagConstraints1.weightx = 1.0;
163
                gridBagConstraints1.weighty = 1.0;
164
                gridBagConstraints1.insets = new java.awt.Insets(2, 12, 10, 12);
165
                
166
                setVisible(true);
167
                add(getIserverPanel(), gridBagConstraints1);
168
                
169
                gridBagConstraints1.insets = new java.awt.Insets(2, 0, 10, 0);
170
                add(getPanelPage2(), gridBagConstraints1);
171
                gridBagConstraints1.fill = GridBagConstraints.HORIZONTAL;
172
                gridBagConstraints1.anchor = GridBagConstraints.EAST;
173
                gridBagConstraints1.weighty = 0;
174
                gridBagConstraints1.gridy = 1;
175
                add(getNextPrevPanel(), gridBagConstraints1);
176
                activarVisualizarBotones();
177
                getIserverPanel().getTxtHost().setServerList(getServerDataPersistence().getArrayOfServerData());
178
        }
179
        
180
        /**
181
         * This method checks for the options selected within the configuration
182
         * dialog are correct.
183
         *
184
         * @return true if you're done, false if not.
185
         */
186
        public boolean areSettingsValid() {
187
                return getPanelPage2().isCorrectlyConfigured();
188
        }
189
        
190
        private WMTSWizardListenerImpl getWizardListenerSupport() {
191
                if(listenerSupport == null)
192
                        listenerSupport = new WMTSWizardListenerImpl(new WizardListenerSupport());
193
                return listenerSupport;
194
        }
195
        
196
        /**
197
         * Thread to connect to a WMTS server
198
         * @author Nacho Brodin (nachobrodin@gmail.com)
199
         */
200
        public class ConnectThread extends Thread {
201
                private ICancellable              cancel      = null;
202
                private WMTSServerExplorer        explorer    = null;
203
                private WMTSWizard                wizard      = null;
204
                
205
                public ConnectThread(ICancellable cancel, WMTSServerExplorer explorer, WMTSWizard wizard) {
206
                        this.cancel = cancel;
207
                        this.explorer = explorer;
208
                        this.wizard = wizard;
209
                }
210
                
211
            public void run() {
212
                    if(!checkHostAndNetwork())
213
                            return;
214
                    
215
                    try {
216
                            explorer.connect(cancel);
217
                            saveServerListFromComboBox();
218
                        } catch (ConnectException e) {
219
                                getIserverPanel().setTextInfo("Connection closed... \n" + e.getMessage());
220
                                JOptionPane.showMessageDialog(null, Messages.getText("wmts_cant_connect"), Messages.getText("Error"), JOptionPane.ERROR_MESSAGE);
221
                                return;
222
                        } finally {
223
                                ((CancelTaskImpl)cancel).setCanceled(false);
224
                        }
225
                        
226
                        DataStoreParameters parameters = explorer.getStoredParameters();
227
                        if(parameters instanceof WMTSDataParameters) {
228
                                storeParams = (WMTSDataParameters) parameters;
229
                        }
230
                        
231
                        if(parameters instanceof TileDataParameters) {
232
                                DataParameters p = ((TileDataParameters) parameters).getDataParameters();
233
                                if(p instanceof WMTSDataParameters)
234
                                        storeParams = (WMTSDataParameters) p;
235
                        }
236
                        
237
                        wizard.rellenarControles();
238
            }
239
        }
240
        
241
        /**
242
         * Checks if the network and host are reachable
243
         * @return true if both are reachable and false if they are not
244
         */
245
        private boolean checkHostAndNetwork() {
246
                if(!explorer.isHostReachable()) {
247
                        JOptionPane.showMessageDialog(null, Messages.getText("host_unreachable"), Messages.getText("Error"), JOptionPane.ERROR_MESSAGE);
248
                        getIserverPanel().setTextInfo("Connection closed... \n");
249
                        return false;
250
                }
251
                return true;
252
        }
253

    
254
        /**
255
         * DOCUMENT ME!
256
         */
257
        private void rellenarControles() {
258
                try {
259
                        String host = getIserverPanel().getTxtHost().getModel().getSelectedItem().toString();
260
                        WMTSServiceIdentification id = explorer.getOGCClient().getServiceIdentification();
261
                        
262
                        getIserverPanel().setTitle(id.getTitle());
263
                        getNextPrevPanel().getJLabelServerTypeValue().setText(id.getServiceType());
264
                        getIserverPanel().setTextInfo(id.getAbstract());
265

    
266
                        getPanelPage2().setWizardData(explorer);
267
                        connected = true;
268
                        activarVisualizarBotones();
269
                } catch (Exception e) {
270
                        if (e.getMessage() == null) {
271
                                getIserverPanel().setTextInfo(PluginServices.getText(this,"error"));
272
                        } else {
273
                                getIserverPanel().setTextInfo(e.getMessage());
274
                        }
275
                        getWizardListenerSupport().callError(e);
276
                        getNextPrevPanel().getBtnNext().setEnabled(false);
277
                        getNextPrevPanel().getBtnPrev().setEnabled(true);
278
                } finally {
279
                        getIserverPanel().getBtnCancel().setEnabled(false);
280
                }
281
        }
282
        
283
        public void actionPerformed(ActionEvent e) {
284
                if(e.getSource() == getIserverPanel().getBtnConnect()) {
285
                        getIserverPanel().getBtnCancel().setEnabled(true);
286
                        getIserverPanel().setTextInfo("Trying to connect...");
287
                        
288
                        String host = getIserverPanel().getTxtHost().getModel().getSelectedItem().toString();
289
                        try {
290
                                DataManager datamanager = DALLocator.getDataManager();
291
                                WMTSServerExplorerParameters explorerParams = (WMTSServerExplorerParameters) datamanager.createServerExplorerParameters(WMTSServerExplorer.NAME);
292
                                explorerParams.setHost(host);
293
                                explorerParams.setLongitudeFirst(getIserverPanel().getChkInvertAxisOrder().isSelected());
294
                                
295
                                explorer = (WMTSServerExplorer) datamanager.createServerExplorer(explorerParams);
296
                                
297
                                ((CancelTaskImpl)cancel).setCanceled(false);
298
                                new ConnectThread(cancel, explorer, this).start();
299
                                
300
                        } catch (InitializeException e1) {
301
                                getIserverPanel().setTextInfo("Error creating WMTS layer");
302
                        } catch (ProviderNotRegisteredException e1) {
303
                                getIserverPanel().setTextInfo("Provider not registered. I cannot connect.");
304
                        } catch (ValidateDataParametersException e1) {
305
                                getIserverPanel().setTextInfo("Parameters not valid. I cannot connect.");
306
                        }
307
                }
308
                
309
                if(e.getSource() == getIserverPanel().getBtnCancel()) {
310
                        getIserverPanel().setTextInfo("Cancelled...");
311
                        ((CancelTaskImpl)cancel).setCanceled(true);
312
                        getIserverPanel().getBtnCancel().setEnabled(false);
313
                }
314
                
315
                if(e.getSource() == getNextPrevPanel().getBtnPrev()) {
316
                        page --;
317
                        if (page > firstPage) {
318
                                getPanelPage2().setPreviousTab();
319
                                page = getPanelPage2().currentPage() + 1;
320
                                activarVisualizarBotones();
321
                        } else if (page == firstPage){
322
                                activarVisualizarBotones();
323
                                page = firstPage +1;
324
                                getIserverPanel().setTitle("-");
325
                                getIserverPanel().setTextInfo("");
326
                                getPanelPage2().setPreviousTab();
327
                                getIserverPanel().setVisible(true);
328
                                getPanelPage2().setVisible(false);
329
                                getNextPrevPanel().getBtnNext().setEnabled(false);
330
                                connected = false;
331
                        }
332
                        getWizardListenerSupport().callStateChanged(getPanelPage2().isCorrectlyConfigured());
333
                }
334
                
335
                if(e.getSource() == getNextPrevPanel().getBtnNext()) {
336
                        if (page > firstPage) {
337
                                // si page es mayor que cero, vamos enfocando las
338
                                // sucesivas SOLAPAS del WMTSParamsPanel
339
                                getPanelPage2().setNextTab();
340
                                page = getPanelPage2().currentPage();
341
                        }
342
                        page++;
343
                        getIserverPanel().setVisible(false);
344
                        getPanelPage2().setVisible(true);
345
                        activarVisualizarBotones();
346
                }
347
        }
348
        
349
        private AddServerPanel getIserverPanel() {
350
                if (serverPanel == null) {
351
                        serverPanel = WMTSSwingLocator.getSwingManager().createAddServerPanel();
352
                        serverPanel.getBtnCancel().addActionListener(this);
353
                        serverPanel.getBtnConnect().addActionListener(this);
354
                }
355
                return serverPanel;
356
        }        
357
        
358
        /**
359
         * This method initializes jPanel
360
         *
361
         * @return javax.swing.JPanel
362
         */
363
        public NextPrevPanel getNextPrevPanel() {
364
                if (nextPrevPanel == null) {
365
                        nextPrevPanel = WMTSSwingLocator.getSwingManager().createNextPrevPanel();
366
                        nextPrevPanel.getBtnNext().addActionListener(this);
367
                        nextPrevPanel.getBtnPrev().addActionListener(this);
368
                }
369
                return nextPrevPanel;
370
        }
371

    
372
        
373
        protected WmtsGUI getPanelPage2() {
374
                if (wmtsParamsPanel == null){
375
                        wmtsParamsPanel = WMTSSwingLocator.getSwingManager().createMainWizard(getWizardListenerSupport());
376
                        wmtsParamsPanel.addChangeTabListener(new java.awt.event.MouseAdapter() {
377
                                public void mouseClicked(java.awt.event.MouseEvent e) {
378
                                        page = wmtsParamsPanel.currentPage() + 1;
379
                                        activarVisualizarBotones();
380
                                }
381
                        });
382
                }
383
                return wmtsParamsPanel;
384
        }
385

    
386
        /**
387
         * DOCUMENT ME!
388
         */
389
        protected void activarVisualizarBotones() {
390
                if (page == firstPage) {
391
                        getNextPrevPanel().getBtnPrev().setEnabled(false);
392
                        getNextPrevPanel().getBtnPrev().setVisible(true);
393

    
394
                        if (connected) {
395
                                getNextPrevPanel().getBtnNext().setEnabled(true);
396
                        } else {
397
                                getNextPrevPanel().getBtnNext().setEnabled(false);
398
                        }
399
                } else if (page < getPanelPage2().getNumTabs()) {
400
                        getNextPrevPanel().getBtnNext().setEnabled(true);
401
                        getNextPrevPanel().getBtnNext().setVisible(true);
402
                        getNextPrevPanel().getBtnPrev().setEnabled(true);
403
                        getNextPrevPanel().getBtnPrev().setVisible(true);
404
                        if (getPanelPage2().nextEnabledPage()==-1) {
405
                                getNextPrevPanel().getBtnNext().setEnabled(false);
406
                        }
407
                        getWizardListenerSupport().callStateChanged(getPanelPage2().isCorrectlyConfigured());
408
                } else if (page == getPanelPage2().getNumTabs()) {
409
                        getNextPrevPanel().getBtnNext().setVisible(false);
410
                        getNextPrevPanel().getBtnNext().setEnabled(false);
411
                        getWizardListenerSupport().callStateChanged(getPanelPage2().isCorrectlyConfigured());
412
                }
413
        }
414
        
415
        /**
416
         * Gets the list of servers that have been persisted or added in the properties file
417
         * @return
418
         */
419
        private ServerDataPersistence getServerDataPersistence() {
420
                if(serverDataPersistence == null) {
421
                        PersistenceManager persistenceManager = ToolsLocator.getPersistenceManager();
422

    
423
                        //Lee los servidores de la persistencia
424
                        try {
425
                                FileInputStream is = new FileInputStream(getPluginPersistenceFile());
426
                                serverDataPersistence = (ServerDataPersistence) persistenceManager.getObject(is);
427
                        } catch (FileNotFoundException e) {
428
                                logger.info("Persistence file not found for WMS plugin", e);
429
                        }
430

    
431
                        if(serverDataPersistence == null)
432
                                serverDataPersistence = new ServerDataPersistence(ServerData.SERVER_TYPE_WMTS);
433

    
434
                        //Lee los servidores del properties y los mezcla con los que hay en la persistencia
435
                        Properties prop = new Properties();
436
                        try {
437
                                prop.load(new FileInputStream(getServerPropertiesFile()));
438
                        } catch (FileNotFoundException e) {
439
                                logger.info("Properties file not found for WMS plugin", e);
440
                        } catch (IOException e) {
441
                                logger.info("Error reading properties file", e);
442
                        }
443

    
444
                        boolean newProjectServers = false;
445
                        for (int i = 0; i < prop.size(); i++) {
446
                                Object value = prop.get("server[" + i + "]");
447
                                if(!serverDataPersistence.existsServer(value.toString())) {
448
                                        serverDataPersistence.addServerData(new ServerData(value.toString(), ServerData.SERVER_TYPE_WMTS));
449
                                        newProjectServers = true;
450
                                }
451
                        }
452

    
453
                        //Si hay servidores nuevos los persiste
454
                        if(newProjectServers) {
455
                                try {
456
                                        FileOutputStream os = new FileOutputStream(getPluginPersistenceFile());
457
                                        persistenceManager.putObject(os, serverDataPersistence);
458
                                } catch (FileNotFoundException e) {
459
                                        logger.info("Persistence file not found for WMS plugin", e);
460
                                }
461
                        }
462
                }
463

    
464
                return serverDataPersistence;
465
        }
466
        
467
        /**
468
         * Saves the list of server reading from the <code>ComboBox</code>
469
         */
470
        private void saveServerListFromComboBox() {
471
                PersistenceManager persistenceManager = ToolsLocator.getPersistenceManager();
472
                ServerDataPersistence persistence = new ServerDataPersistence(ServerData.SERVER_TYPE_WMTS);
473
                String urlSelected = getIserverPanel().getTxtHost().getModel().getSelectedItem().toString();
474
                
475
                boolean isSelectedInModel = false;
476
                for (int i = 0; i < getIserverPanel().getTxtHost().getItemCount(); i++) {
477
                        String url = getIserverPanel().getTxtHost().getItemAt(i).toString();
478
                        persistence.addServerData(new ServerData(url, ServerData.SERVER_TYPE_WMTS));
479
                        if(url.equals(urlSelected))
480
                                isSelectedInModel = true;
481
                }
482
                
483
                if(!isSelectedInModel)
484
                        persistence.addServerData(new ServerData(urlSelected, ServerData.SERVER_TYPE_WMTS));
485
                
486
                if(getServerDataPersistence().compareTo(persistence) != 0) {
487
                        try {
488
                                FileOutputStream os = new FileOutputStream(getPluginPersistenceFile());
489
                                persistenceManager.putObject(os, persistence);
490
                        } catch (FileNotFoundException e) {
491
                                logger.info("Persistence file not found for WMS plugin", e);
492
                        }
493
                }
494
        }
495
        
496
        /**
497
         * Gets the persistence file of this plugin
498
         * @return
499
         */
500
        private File getPluginPersistenceFile() {
501
                if(pluginPersistenceFile == null) {
502
                        File persistenceFolder = new File(Launcher.getAppHomeDir()
503
                                        + File.separator + "plugins" + File.separator + pluginName);
504
                        
505
                        if (!persistenceFolder.exists()) {
506
                                persistenceFolder.mkdirs();
507
                        }
508
                        
509
                        pluginPersistenceFile = new File(persistenceFolder.getAbsolutePath() + 
510
                                File.separator + 
511
                                "plugin-persistence.dat");
512
                }
513
                return pluginPersistenceFile;
514
        }
515
        
516
        /**
517
         * Gets the file which contains the default list of servers
518
         * @return
519
         */
520
        private File getServerPropertiesFile() {
521
                if(serverPropertiesFile == null) {
522
                        File pluginFolder = PluginsLocator.getManager().getPluginsFolder();
523
                        serverPropertiesFile = new File(pluginFolder.getAbsolutePath() + 
524
                                        File.separator + 
525
                                        pluginName + 
526
                                        File.separator + 
527
                                        serversPropsFile);
528
                }
529
                return serverPropertiesFile;
530
        }
531

    
532
        /**
533
         * DOCUMENT ME!
534
         * @param listener
535
         */
536
        public void addWizardListener(WizardListener listener) {
537
                getWizardListenerSupport().addWizardListener(listener);
538
                getWizardListenerSupport().callStateChanged(false);
539
        }
540

    
541
        /**
542
         * DOCUMENT ME!
543
         * @param listener
544
         */
545
        public void removeWizardListener(WizardListener listener) {
546
                getWizardListenerSupport().removeWizardListener(listener);
547
        }
548

    
549
        /**
550
         * Devuelve el host que est� escrito en el cuadro de texto del host o null
551
         * en caso de que no haya nada escrito o est� mal escrito
552
         *
553
         * @return URL del host
554
         */
555
        public URL getHost() {
556
                try {
557
                        if ((getIserverPanel().getTxtHost() == null)|| (getIserverPanel().getTxtHost().getModel().getSelectedItem() == null)) {
558
                                return new URL(explorer.getHost());
559
                        } else {
560
                                return new URL(getIserverPanel().getTxtHost().getModel().getSelectedItem().toString());
561
                        }
562
                } catch (MalformedURLException e) {
563
                        return null;
564
                }
565
        }
566

    
567
        public void initWizard() {
568
        }
569
        
570
        @Override
571
        public DataStoreParameters[] getParameters() {
572
                return null;
573
        }
574

    
575
        @Override
576
        public void close() {
577
        }
578

    
579
        @Override
580
        public void execute() {
581
                try {
582
                        getPanelPage2().setDeleteCache(getIserverPanel().getChkCaching().isSelected());
583
                        RasterDataParameters[] paramsList = getPanelPage2().getDataParameters();
584
                        List<FLyrWMTS> lyrList = getLayerList(paramsList);
585
                        for (int i = 0; i < lyrList.size(); i++) {
586
                                getMapCtrl().getMapContext().getLayers().addLayer(lyrList.get(i));        
587
                        }
588
                } catch (LoadLayerException e) {
589
                        logger.info("Persistence file not found for WMS plugin", e);
590
                }
591
        }
592
        
593
        public List<FLyrWMTS> getLayerList(RasterDataParameters[] paramsList) throws LoadLayerException {
594
                List<FLyrWMTS> layerList = new ArrayList<FLyrWMTS>();
595
                for (int i = 0; i < paramsList.length; i++) {
596
                        FLyrWMTS layer = new FLyrWMTS();
597
                        layer.deleteCache(getPanelPage2().getDeleteCache());
598
                        try {
599
                                layer.setParameters(paramsList[i]);
600
                                String title = null;
601
                                if(paramsList[i] instanceof WMTSDataParameters) {
602
                                        title = ((WMTSDataParameters) paramsList[i]).getLayer().getTitle();
603
                                } else if(paramsList[i] instanceof TileDataParameters) {
604
                                        DataParameters p = ((TileDataParameters) paramsList[i]).getDataParameters();
605
                                        if(p instanceof WMTSDataParameters)
606
                                                title = ((WMTSDataParameters) p).getLayer().getTitle();
607
                                }
608
                                
609
                                layer.setName(title);
610
                                layer.setExplorer(explorer);
611
                                //Ojo! Pruebas!
612
                                //layer.setTileServer(FileTileServer.class);
613
                                layerList.add(layer);
614
                        } catch (InitializeException e) {
615
                                throw new LoadLayerException("Error initializating layer", e);
616
                        }
617
                }
618
                return layerList;
619
        }
620
}