Statistics
| Revision:

svn-gvsig-desktop / trunk / extensions / extWCS / src / com / iver / cit / gvsig / gui / wcs / WCSWizard.java @ 1986

History | View | Annotate | Download (33.9 KB)

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

    
49
import java.awt.geom.Rectangle2D;
50
import java.io.IOException;
51
import java.net.MalformedURLException;
52
import java.net.URL;
53

    
54
import javax.swing.DefaultComboBoxModel;
55
import javax.swing.JOptionPane;
56

    
57
import org.apache.log4j.Logger;
58

    
59
import com.iver.andami.PluginServices;
60
import com.iver.cit.gvsig.fmap.layers.FLayer;
61
import com.iver.cit.gvsig.fmap.layers.FLyrWCS;
62
import com.iver.cit.gvsig.gui.WCSDataSourceAdapter;
63
import com.iver.cit.gvsig.gui.WizardPanel;
64
import com.iver.cit.gvsig.gui.Panels.WCSParamsPanel;
65
import com.iver.cit.gvsig.gui.wms.WizardListener;
66
import com.iver.cit.gvsig.gui.wms.WizardListenerSupport;
67
import com.iver.utiles.NotExistInXMLEntity;
68
import com.iver.utiles.XMLEntity;
69
import com.iver.utiles.swing.JComboBox;
70

    
71
import es.uji.lsi.wcs.client.ServerOutOfOrderException;
72
 
73
/**
74
 * Clase que implementa el Wizard para coberturas WCS
75
 * 
76
 * @author Jaume Dom?nguez Faus
77
 */
78
public class WCSWizard extends WizardPanel {
79
        private static Logger logger = Logger.getLogger(WCSWizard.class.getName());
80
        private int page = 0;
81
        private boolean conectado = false;
82
        private javax.swing.JPanel jContentPane = null;
83
        private JComboBox cmbHost = null;
84
        private javax.swing.JButton btnDetalles = null;
85
        private javax.swing.JPanel jPanel = null;
86
        private javax.swing.JLabel jLabel1 = null;
87
        private javax.swing.JLabel lblTitle = null;
88
        private javax.swing.JScrollPane jScrollPane = null;
89
        private javax.swing.JTextArea txtAbstract = null;
90
        private javax.swing.JPanel panelPage1 = null;
91
        private javax.swing.JPanel panelPage2 = null;
92
        private CoverageListModel selectedLayersModel = new CoverageListModel();
93
        private javax.swing.JButton btnSiguiente = null;
94
        private javax.swing.JButton btnAnterior = null;
95
        private javax.swing.JPanel jPanel1 = null;
96
        private WizardListenerSupport listenerSupport = new WizardListenerSupport();
97
        private WCSParamsPanel wcsParamsTabbedPane = null;
98
        private WCSWizardDataSource dataSource;
99
        private WCSWizardData data = null;
100
        
101
        /**
102
         * This is the default constructor
103
         */
104
        public WCSWizard() {
105
                super();
106
                initialize();
107
        }
108

    
109
        /**
110
         * This method initializes this
111
         */
112
        private void initialize() {
113
                setTabName("WCS");
114
                this.setSize(510, 311);
115
                this.setLayout(null);
116
                this.setPreferredSize(new java.awt.Dimension(750, 320));
117
                this.setVisible(true);
118
                this.add(getPanelPage1(), null);
119
                this.add(getPanelPage2(), null);
120
                this.add(getBtnAnterior(), null);
121
                this.add(getBtnSiguiente(), null);
122
                activarVisualizarBotones();
123
        }
124

    
125
        /**
126
         * Devuelve el nombre de la cobertura seleccionada
127
         * @return String
128
         */
129
        private String getNomCobertura(){
130
                return (String) wcsParamsTabbedPane.getNomCobertura();        
131
        }
132
        
133
        //        /**
134
        //         * DOCUMENT ME!
135
        //         */
136
        //        private void addLayer() {
137
        //                boolean alguno = false;
138
        //
139
        //                TreePath[] selecciones =
140
        // wcsParamsTabbedPane.getTreeCoverages().getSelectionPaths();
141
        //
142
        //                for (int i = 0; i < selecciones.length; i++) {
143
        //                        CoverageInfo nodo = (CoverageInfo) selecciones[i].getLastPathComponent();
144
        //
145
        //                        String name = nodo.name;
146
        //                        String text = nodo.text;
147
        //                        ArrayList srs = nodo.getSRSs();
148
        //
149
        //                        //Se a?ade a la lista de layers seleccionados
150
        //                        CoverageListModel modelo = (CoverageListModel)
151
        // wcsParamsTabbedPane.getLstSelectedCoverages().getModel();
152
        //
153
        //                        if (modelo.addElement(nodo)) {
154
        //                                alguno = true;
155
        //                        }
156
        //                }
157
        //
158
        //                if (alguno) {
159
        //                        activarVisualizarBotones();
160
        //                        actualizarSRS();
161
        //                }
162
        //        }
163

    
164
        /**
165
         * Una ventana de alert al m?s puro estilo estilo JavaScript
166
         * @param text
167
         */
168
        private void alert(String text) {
169
                JOptionPane.showMessageDialog(null, text, "Error", JOptionPane.ERROR_MESSAGE);        
170
        }
171

    
172
        /**
173
         * con addHost guardamos la informaci?n del combo de servidores en un
174
         * almac?n persistente
175
         * 
176
         * @param host
177
         */
178
        private void addHost(String host) {
179
                host = host.trim();
180

    
181
                DefaultComboBoxModel model = (DefaultComboBoxModel) getTxtHost()
182
                                .getModel();
183

    
184
                if (model.getIndexOf(host) < 0) {
185
                        model.addElement(host);
186

    
187
                        PluginServices ps = PluginServices.getPluginServices(this);
188
                        XMLEntity xml = ps.getPersistentXML();
189

    
190
                        try {
191
                                String[] servers = xml.getStringArrayProperty("wcs-servers");
192
                                String[] newServers = new String[servers.length + 1];
193
                                System.arraycopy(servers, 0, newServers, 0, servers.length);
194
                                newServers[servers.length] = host;
195
                                xml.putProperty("wcs-servers", newServers);
196
                        } catch (NotExistInXMLEntity e) {
197
                                xml.putProperty("wcs-servers", new String[] { host });
198
                        }
199

    
200
                        ps.setPersistentXML(xml);
201
                }
202
        }
203

    
204
        /**
205
         * Rellena los primeros controles del WCS Wizard
206
         * 
207
         * jaume
208
         */
209
        private void rellenarControles() {
210
                try {
211
                        String host = cmbHost.getModel().getSelectedItem().toString();
212
                        
213
                        data = dataSource.detalles(new URL(host));
214
                        int i = 0;
215
                        
216
                        addHost(host);
217
                        getLblTitle().setText(data.getTitle());
218
                        getTxtAbstract().setText(data.getDescription());
219
                        wcsParamsTabbedPane.getLstCoverages().setListData(
220
                                        data.getCoverageNames());
221
                        wcsParamsTabbedPane.setWizardData(data);
222
                        wcsParamsTabbedPane.setDataSource(dataSource);
223
                        conectado = true;
224
                        activarVisualizarBotones();
225
                } catch (ServerOutOfOrderException soe) {
226
                        alert(PluginServices.getText(this, "servidor_wcs_no_responde"));
227
                } catch (IOException ioe){
228
                        alert(PluginServices.getText(this, "error_comunicacion_servidor"));
229
                } catch (Exception e) {
230
                        listenerSupport.callError(e);
231
                }
232
        }
233

    
234
        /**
235
         * DOCUMENT ME!
236
         */
237
        private void activarVisualizarBotones() {
238
                if (page == 0) {
239
                        getBtnAnterior().setEnabled(false);
240
                        getBtnSiguiente().setVisible(true);
241
                        if (conectado) {
242
                                getBtnSiguiente().setEnabled(true);
243
                        } else {
244
                                getBtnSiguiente().setEnabled(false);
245
                        }
246
                } else if (page < wcsParamsTabbedPane.getNumTabs()) {
247
                        getBtnSiguiente().setEnabled(true);
248
                        getBtnSiguiente().setVisible(true);
249
                        getBtnAnterior().setEnabled(true);
250
                        getBtnAnterior().setVisible(true);
251
                        
252
                        listenerSupport.callStateChanged(wcsParamsTabbedPane.hayParametrosSuficientes());
253
                } else if (page == wcsParamsTabbedPane.getNumTabs()) {
254
                        getBtnSiguiente().setVisible(false);
255
                        getBtnSiguiente().setEnabled(false);
256
                        listenerSupport.callStateChanged(wcsParamsTabbedPane 
257
                                        .hayParametrosSuficientes());
258
                }
259

    
260
        }
261
        
262

    
263

    
264
        /**
265
         * This method initializes txtHost from the persistent data storage
266
         * 
267
         * @return javax.swing.JTextField
268
         */
269
        private javax.swing.JComboBox getTxtHost() {
270
                if (cmbHost == null) {
271
                        cmbHost = new JComboBox();
272
                        cmbHost.setModel(new DefaultComboBoxModel());
273
                        cmbHost.setPreferredSize(new java.awt.Dimension(350, 20));
274
                        cmbHost.setEditable(true);
275

    
276
                        XMLEntity xml = PluginServices.getPluginServices(this)
277
                                        .getPersistentXML();
278
                        if (xml == null)
279
                                xml = new XMLEntity();
280

    
281
                        if (!xml.contains("wcs-servers")) {
282
                                String[] servers = new String[2];
283
                                servers[0] = "http://hypnos.cbs.umn.edu/cgi-bin/mapserv43d?map=/data/wcs/demo.map";
284
                                servers[1] = "http://iceds.ge.ucl.ac.uk/cgi-bin/wcs?map=wcs.map";
285

    
286
                                xml.putProperty("wcs-servers", servers);
287
                        }
288

    
289
                        try {
290
                                String[] servers = xml.getStringArrayProperty("wcs-servers");
291

    
292
                                for (int i = 0; i < servers.length; i++) {
293
                                        ((DefaultComboBoxModel) cmbHost.getModel())
294
                                                        .addElement(servers[i]);
295
                                }
296
                        } catch (NotExistInXMLEntity e) {
297
                        }
298
                }
299

    
300
                return cmbHost;
301
        }
302

    
303
        
304
        /**
305
         * This method initializes btnDetalles
306
         * 
307
         * @return javax.swing.JButton
308
         */
309
        private javax.swing.JButton getBtnDetalles() {
310
                if (btnDetalles == null) {
311
                        btnDetalles = new javax.swing.JButton();
312
                        btnDetalles.setPreferredSize(new java.awt.Dimension(100, 20));
313
                        btnDetalles.setText(PluginServices.getText(this, "detalles"));
314
                        btnDetalles.addActionListener(new java.awt.event.ActionListener() {
315
                                public void actionPerformed(java.awt.event.ActionEvent e) {
316
                                        wcsParamsTabbedPane.limpiaWizard();
317
                                        conectado = false;
318
                                        rellenarControles();
319
                                }
320
                        });
321
                }
322

    
323
                return btnDetalles;
324
        }
325

    
326
        /**
327
         * This method initializes jPanel
328
         * 
329
         * @return javax.swing.JPanel
330
         */
331
        private javax.swing.JPanel getJPanel() {
332
                if (jPanel == null) {
333
                        jPanel = new javax.swing.JPanel();
334
                        jPanel.setLayout(null);
335
                        jPanel.setPreferredSize(new java.awt.Dimension(470, 130));
336
                        jPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(null,
337
                                        PluginServices.getText(this, "descripcion"),
338
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
339
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null,
340
                                        null));
341
                        jPanel.setBounds(2, 67, 477, 197);
342
                        jPanel.add(getJLabel1(), null);
343
                        jPanel.add(getLblTitle(), null);
344
                        jPanel.add(getJScrollPane(), null);
345
                }
346

    
347
                return jPanel;
348
        }
349

    
350
        /**
351
         * This method initializes jLabel1
352
         * 
353
         * @return javax.swing.JLabel
354
         */
355
        private javax.swing.JLabel getJLabel1() {
356
                if (jLabel1 == null) {
357
                        jLabel1 = new javax.swing.JLabel();
358
                        jLabel1.setText(PluginServices.getText(this, "nombre") + ":");
359
                        jLabel1.setBounds(37, 26, 40, 15);
360
                }
361

    
362
                return jLabel1;
363
        }
364

    
365
        /**
366
         * This method initializes lblTitle
367
         * 
368
         * @return javax.swing.JLabel
369
         */
370
        private javax.swing.JLabel getLblTitle() {
371
                if (lblTitle == null) {
372
                        lblTitle = new javax.swing.JLabel();
373
                        lblTitle.setText("-");
374
                        lblTitle.setPreferredSize(new java.awt.Dimension(350, 16));
375
                        lblTitle.setBounds(82, 26, 350, 16);
376
                }
377

    
378
                return lblTitle;
379
        }
380

    
381
        /**
382
         * This method initializes jScrollPane
383
         * 
384
         * @return javax.swing.JScrollPane
385
         */
386
        private javax.swing.JScrollPane getJScrollPane() {
387
                if (jScrollPane == null) {
388
                        jScrollPane = new javax.swing.JScrollPane();
389
                        jScrollPane.setViewportView(getTxtAbstract());
390
                        jScrollPane.setPreferredSize(new java.awt.Dimension(450, 60));
391
                        jScrollPane.setBounds(10, 47, 450, 130);
392
                }
393

    
394
                return jScrollPane;
395
        }
396

    
397
        /**
398
         * This method initializes txtAbstract
399
         * 
400
         * @return javax.swing.JTextArea
401
         */
402
        private javax.swing.JTextArea getTxtAbstract() {
403
                if (txtAbstract == null) {
404
                        txtAbstract = new javax.swing.JTextArea();
405
                        txtAbstract.setWrapStyleWord(true);
406
                        txtAbstract.setColumns(30);
407
                        txtAbstract.setLineWrap(true);
408
                }
409

    
410
                return txtAbstract;
411
        }
412

    
413
        /**
414
         * This method initializes panelPage1
415
         * 
416
         * @return javax.swing.JPanel
417
         */
418
        private javax.swing.JPanel getPanelPage1() {
419
                if (panelPage1 == null) {
420
                        panelPage1 = new javax.swing.JPanel();
421
                        panelPage1.setLayout(null);
422
                        panelPage1.setPreferredSize(new java.awt.Dimension(480, 220));
423
                        panelPage1.setVisible(true);
424
                        panelPage1.setBounds(15, 5, 480, 262);
425
                        panelPage1.add(getJPanel1(), null);
426
                        panelPage1.add(getJPanel(), null);
427
                }
428

    
429
                return panelPage1;
430
        }
431

    
432
        /**
433
         * This method initializes panelPage2
434
         * 
435
         * @return javax.swing.JPanel
436
         */
437
        private javax.swing.JPanel getPanelPage2() {
438
                if (panelPage2 == null) {
439
                        panelPage2 = new javax.swing.JPanel();
440
                        panelPage2.setLayout(null);
441
                        panelPage2.setPreferredSize(new java.awt.Dimension(490, 300));
442
                        panelPage2.setVisible(false);
443
                        wcsParamsTabbedPane = new WCSParamsPanel();
444
                        wcsParamsTabbedPane.getJTabbedPane().addMouseListener(
445
                                        new java.awt.event.MouseAdapter() {
446
                                                public void mouseClicked(java.awt.event.MouseEvent e) {
447
                                                        page = wcsParamsTabbedPane.getIndiceSolapaActual() + 1;
448
                                                        activarVisualizarBotones();
449
                                                }
450
                                        });
451
//                        wcsParamsTabbedPane.getBtnAdd().addActionListener(
452
//                                        new java.awt.event.ActionListener() {
453
//                                                public void actionPerformed(java.awt.event.ActionEvent e) {
454
//                                                        addCoverage();
455
//                                                }
456
//                                        });
457
//                        wcsParamsTabbedPane.getBtnDel().addActionListener(
458
//                                        new java.awt.event.ActionListener() {
459
//                                                public void actionPerformed(java.awt.event.ActionEvent e) {
460
//                                                        delCoverage();
461
//                                                }
462
//                                        });
463
//                        wcsParamsTabbedPane.getLstSelectedCoverages()
464
//                        .addListSelectionListener(
465
//                                        new javax.swing.event.ListSelectionListener() {
466
//                                                public void valueChanged(
467
//                                                                javax.swing.event.ListSelectionEvent e) {
468
//                                                        habilitarBotonesCoberturas();
469
//                                                }
470
//                                        });
471
//                        wcsParamsTabbedPane.getLstCoverages()
472
//                        .addListSelectionListener(
473
//                                        new javax.swing.event.ListSelectionListener() {
474
//                                                public void valueChanged(
475
//                                                                javax.swing.event.ListSelectionEvent e) {
476
//                                                        habilitarBotonesCoberturas();
477
//                                                }
478
//                                        });
479
                        wcsParamsTabbedPane.getLstCoverages().addListSelectionListener(new javax.swing.event.ListSelectionListener() { 
480
                                public void valueChanged(javax.swing.event.ListSelectionEvent e) {    
481
                                        wcsParamsTabbedPane.actualizaWizard();
482
                                }
483
                        });
484
                        wcsParamsTabbedPane.getLstCRSs().addListSelectionListener(new javax.swing.event.ListSelectionListener() { 
485
                                public void valueChanged(javax.swing.event.ListSelectionEvent e) {
486
                                        listenerSupport.callStateChanged(wcsParamsTabbedPane.hayParametrosSuficientes());
487
                                }
488
                        });
489
                        wcsParamsTabbedPane.getLstFormats().addListSelectionListener(new javax.swing.event.ListSelectionListener() { 
490
                                public void valueChanged(javax.swing.event.ListSelectionEvent e) {
491
                                        listenerSupport.callStateChanged(wcsParamsTabbedPane.hayParametrosSuficientes());
492
                                }
493
                        });
494
                        wcsParamsTabbedPane.getLstSelectedTimes().addListSelectionListener(new javax.swing.event.ListSelectionListener() { 
495
                                public void valueChanged(javax.swing.event.ListSelectionEvent e) {
496
                                        listenerSupport.callStateChanged(wcsParamsTabbedPane.hayParametrosSuficientes());
497
                                }
498
                        });
499
                        wcsParamsTabbedPane.getLstParamValues().addListSelectionListener(new javax.swing.event.ListSelectionListener() { 
500
                                public void valueChanged(javax.swing.event.ListSelectionEvent e) {
501
                                        listenerSupport.callStateChanged(wcsParamsTabbedPane.hayParametrosSuficientes());
502
                                }
503
                        });
504
                        wcsParamsTabbedPane.getCmbParam().addItemListener(
505
                                        new java.awt.event.ItemListener() {
506
                                                public void itemStateChanged(java.awt.event.ItemEvent e) {
507
//                                                        ArrayList coverages = new ArrayList();
508

    
509
//                                                        for (int i = 0; i < wcsParamsTabbedPane
510
//                                                                        .getLstSelectedCoverages().getModel()
511
//                                                                        .getSize(); i++) {
512
//                                                                coverages.add(wcsParamsTabbedPane
513
//                                                                                .getLstSelectedCoverages().getModel()
514
//                                                                                .getElementAt(i));
515
//                                                        }
516
                                                        String s = (String) wcsParamsTabbedPane.getLstCoverages().getSelectedValue();
517
                                                        wcsParamsTabbedPane.actualizaListaParametros(s);
518
                                                        //actualizaListaParametros(coverages.toArray());
519
                                                }
520
                                        });
521
                        wcsParamsTabbedPane.getBtnAddTemps().addActionListener(
522
                                        new java.awt.event.ActionListener() {
523
                                                public void actionPerformed(java.awt.event.ActionEvent e) {
524
                                                        wcsParamsTabbedPane.addTiempo();
525
                                                }
526
                                        });
527
                        wcsParamsTabbedPane.getBtnDelTemps().addActionListener(
528
                                        new java.awt.event.ActionListener() {
529
                                                public void actionPerformed(java.awt.event.ActionEvent e) {
530
                                                        wcsParamsTabbedPane.delTiempo();
531
                                                }
532
                                        });
533
                        panelPage2.add(wcsParamsTabbedPane, null);
534
                        panelPage2.setBounds(10, 5, 496, 276);
535

    
536
                }
537

    
538
                return panelPage2;
539
        }
540

    
541

    
542

    
543
        /**
544
         * This method initializes btnSiguiente
545
         * 
546
         * @return javax.swing.JButton
547
         */
548
        private javax.swing.JButton getBtnSiguiente() {
549
                if (btnSiguiente == null) {
550
                        btnSiguiente = new javax.swing.JButton();
551
                        btnSiguiente.setPreferredSize(new java.awt.Dimension(100, 30));
552
                        btnSiguiente.setText(PluginServices.getText(this, "siguiente"));
553
                        btnSiguiente.setBounds(205, 282, 100, 21);
554
                        btnSiguiente.addActionListener(new java.awt.event.ActionListener() {
555
                                public void actionPerformed(java.awt.event.ActionEvent e) {
556
                                        if (page > 0) {
557
                                                // si page es mayor que cero, vamos enfocando las
558
                                                // sucesivas SOLAPAS del WCSParamsPanel
559
                                                wcsParamsTabbedPane.avanzaTab();
560
                                                page = wcsParamsTabbedPane.getIndiceSolapaActual();
561
                                        }
562
                                        page++;
563

    
564
                                        getPanelPage1().setVisible(false);
565
                                        getPanelPage2().setVisible(true);
566
                                        activarVisualizarBotones();
567
                                }
568
                        });
569
                }
570
                return btnSiguiente;
571
        }
572

    
573
        /**
574
         * This method initializes btnAnterior
575
         * 
576
         * @return javax.swing.JButton
577
         */
578
        private javax.swing.JButton getBtnAnterior() {
579
                if (btnAnterior == null) {
580
                        btnAnterior = new javax.swing.JButton();
581
                        btnAnterior.setText(PluginServices.getText(this, "anterior"));
582
                        btnAnterior.setPreferredSize(new java.awt.Dimension(100, 30));
583
                        btnAnterior.setBounds(100, 282, 100, 21);
584
                        btnAnterior.addActionListener(new java.awt.event.ActionListener() {
585
                                public void actionPerformed(java.awt.event.ActionEvent e) {
586
                                        page --;
587
                                        if (page > 0) {
588
                                                // Tenemos que retroceder en el wcsParamsPanel
589
                                                wcsParamsTabbedPane.retrocedeTab();
590
                                                page = wcsParamsTabbedPane.getIndiceSolapaActual() + 1;
591
                                                activarVisualizarBotones();
592
                                        } else if (page==0){
593
                                                activarVisualizarBotones();
594
                                                page = 1;
595
                                                wcsParamsTabbedPane.limpiaWizard();
596
                                                getLblTitle().setText("-");
597
                                                getTxtAbstract().setText("");
598
                                                wcsParamsTabbedPane.retrocedeTab();
599
                                                getPanelPage1().setVisible(true);
600
                                                getPanelPage2().setVisible(false);
601
                                                getBtnSiguiente().setEnabled(false);
602
                                                conectado = false; 
603
                                        }
604
                                        listenerSupport.callStateChanged(wcsParamsTabbedPane.hayParametrosSuficientes());
605
                                }
606
                        });
607
                }
608
                return btnAnterior;
609
        }
610

    
611
        /**
612
         * This method initializes jPanel1
613
         * 
614
         * @return javax.swing.JPanel
615
         */
616
        private javax.swing.JPanel getJPanel1() {
617
                if (jPanel1 == null) {
618
                        jPanel1 = new javax.swing.JPanel();
619
                        jPanel1.add(getTxtHost(), null);
620
                        jPanel1.add(getBtnDetalles(), null);
621
                        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(
622
                                        null, PluginServices.getText(this, "servidor"),
623
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
624
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null,
625
                                        null));
626
                        jPanel1.setBounds(2, 5, 477, 57);
627
                }
628

    
629
                return jPanel1;
630
        }
631

    
632
        /**
633
         * DOCUMENT ME!
634
         * 
635
         * @param listener
636
         */
637
        public void addWizardListener(WizardListener listener) { 
638
                listenerSupport.addWizardListener(listener);
639
        }
640

    
641
        /**
642
         * DOCUMENT ME!
643
         * 
644
         * @param listener
645
         */
646
        public void removeWizardListener(WizardListener listener) {
647
                listenerSupport.removeWizardListener(listener);
648
        }
649

    
650
        /**
651
         * DOCUMENT ME!
652
         * 
653
         * @return
654
         */
655
        public WCSWizardDataSource getDataSource() {
656
                return dataSource;
657
        }
658

    
659
        /**
660
         * DOCUMENT ME!
661
         * 
662
         * @param source
663
         */
664
        public void setDataSource(WCSWizardDataSource source) {
665
                dataSource = source;
666

    
667
        }
668

    
669

    
670
        /**
671
         * DOCUMENT ME!
672
         * 
673
         * @return DOCUMENT ME!
674
         */
675
        public String getSRS() {
676
                return (String) wcsParamsTabbedPane.getSRS();
677
        }
678

    
679
        /**
680
         * DOCUMENT ME!
681
         * 
682
         * @return DOCUMENT ME!
683
         */
684
        public String getFormat() {
685
                return (String) wcsParamsTabbedPane.getFormat();
686
        }
687

    
688
        /**
689
         * DOCUMENT ME!
690
         * 
691
         * @return DOCUMENT ME!
692
         */
693
        public Rectangle2D getLayersRectangle() {
694
                //Rectangle2D rect = dataSource.getBoundingBox(getNomCobertura(), getSRS());
695
                //if (rect == null) new Rectangle2D();
696
                return wcsParamsTabbedPane.getLayersRectangle();
697
        }
698

    
699
        /**
700
         * Obtiene el rect?ngulo que contiene a todos los otros
701
         * 
702
         * @param rects  rectangulos
703
         * 
704
         * @return Rectangulo que contiene a todos los demas
705
         */
706
        public static Rectangle2D getRectangle(Rectangle2D[] rects) {
707
                Rectangle2D ret = rects[0];
708

    
709
                for (int i = 1; i < rects.length; i++) {
710
                        ret.add(rects[i]);
711
                }
712

    
713
                return ret;
714
        }
715

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

    
730
        /**
731
         * DOCUMENT ME!
732
         * 
733
         * @return Nombre de la capa que aparece en el TOC.
734
         */
735
        public String getLayerName() {
736
                return wcsParamsTabbedPane.getLayerName();
737
        }
738
 
739
        /*
740
         * (non-Javadoc)
741
         * 
742
         * @see com.iver.cit.gvsig.gui.WizardPanel#initWizard()
743
         */
744
        public void initWizard() {
745
                setDataSource(new WCSDataSourceAdapter());
746
        }
747

    
748
        /*
749
         * (non-Javadoc)
750
         * 
751
         * @see com.iver.cit.gvsig.gui.WizardPanel#execute()
752
         */
753
        public void execute() {
754
        }
755

    
756
        private String getParametro(){
757
                return wcsParamsTabbedPane.getParametro();
758
        }
759
        
760
        private String getSelectedTimes(){
761
                return wcsParamsTabbedPane.getTiempos();
762
        }
763
        /*
764
         * (non-Javadoc)
765
         * 
766
         * @see com.iver.cit.gvsig.gui.WizardPanel#getLayer()
767
         */
768
        public FLayer getLayer() {
769
                FLyrWCS layer = new FLyrWCS();
770
                
771
                layer.setHost(this.getHost());
772
                layer.setCoverageName(this.getNomCobertura());
773
                layer.setLabel(this.getEtiquetaCobertura());
774
                layer.setSRS(this.getSRS());
775
                layer.setFormat(this.getFormat());
776
                layer.setFullExtent(this.getLayersRectangle());
777
                layer.setTimes(this.getSelectedTimes());
778
                layer.setParameter(this.getParametro());
779
                layer.setToc(this.wcsParamsTabbedPane);
780
                layer.setName(layer.getLabel());
781
                return layer; 
782
        }
783

    
784
        /**
785
         * @return
786
         */
787
        private String getEtiquetaCobertura() {
788
                return wcsParamsTabbedPane.getEtiquetaCobertura();
789
        }
790
}
791

    
792
//  @jve:decl-index=0:visual-constraint="10,10"
793
//  @jve:visual-info decl-index=0 visual-constraint="16,10"
794
//  @jve:visual-info decl-index=0 visual-constraint="10,10"
795
//  @jve:visual-info decl-index=0 visual-constraint="10,10"
796
//        @jve:visual-info decl-index=0 visual-constraint="10,10"
797

    
798

    
799

    
800
//------------ FUNCIONES WMS WIZARD QUE NO SE USAN --------------
801
/**
802
 * sin uso
803
 */
804
/*private void delLayer() {
805
        int[] index = wcsParamsTabbedPane.getLstSelectedCoverages()
806
                        .getSelectedIndices();
807

808
        ArrayList removeList = new ArrayList();
809
        CoverageListModel modelo = (CoverageListModel) wcsParamsTabbedPane
810
                        .getLstSelectedCoverages().getModel();
811
        CoverageInfo[] infos = modelo.getElements();
812

813
        for (int i = 0; i < index.length; i++) {
814
                removeList.add(infos[index[i]]);
815
        }
816

817
        modelo.delElements(removeList);
818
        wcsParamsTabbedPane.getLstSelectedCoverages().clearSelection();
819

820
        activarVisualizarBotones();
821

822
        actualizarSRSQueJoNoGaste();
823
}*/
824
/**
825
 * DOCUMENT ME!
826
 * 
827
 * @return DOCUMENT ME!
828
 * 
829
 */
830
//public String getQueryableLayerQuery() {
831
//        CoverageInfo[] layers = ((CoverageListModel) wcsParamsTabbedPane
832
//                        .getLstSelectedCoverages().getModel()).getElements();
833
//
834
//        //Nombre separado por comas de las capas
835
//        String layersQuery = "";
836
//        int i;
837
//
838
//        for (i = 0; i < layers.length; i++) {
839
//                if (layers[i].queryable) {
840
//                        layersQuery = layers[i].name;
841
//
842
//                        break;
843
//                }
844
//        }
845
//
846
//        for (int j = i + 1; j < layers.length; j++) {
847
//                if (layers[j].queryable) {
848
//                        layersQuery += ("," + layers[j].name);
849
//                }
850
//        }
851
//
852
//        return layersQuery;
853
//}
854

    
855

    
856
/**
857
 * DOCUMENT ME!
858
 * 
859
 * @return DOCUMENT ME!
860
 */
861
//public String getLayersQuery() {
862
//        CoverageInfo[] layers = ((CoverageListModel) wcsParamsTabbedPane
863
//                        .getLstSelectedCoverages().getModel()).getElements();
864
//
865
//        //Nombre separado por comas de las capas
866
//        String layersQuery = layers[0].name;
867
//
868
//        for (int i = 1; i < layers.length; i++) {
869
//                layersQuery += ("," + layers[i].name);
870
//        }
871
//
872
//        return layersQuery;
873
//}
874

    
875
/**
876
 * DOCUMENT ME!
877
 * 
878
 * @return DOCUMENT ME!
879
 */
880
//        public TreePath[] getSelectedLayers() {
881
//// return wcsParamsTabbedPane.getTreeCoverages().getSelectionPaths();
882
//        }
883

    
884

    
885
// ---------------------------FUNCIONES QUE SERVIRAN SI SE PUEDEN PEDIR
886
// ---------------------------VARIAS COBERTURAS A LA VEZ
887

    
888
/*
889
private boolean actualizarTiempos(Object[] coverages){
890
    if (coverages.length == 1) {
891
                wcsParamsTabbedPane.getLstTemps().setListData(
892
                                data.getCoverageTimes((String) coverages[0]).toArray());
893
                wcsParamsTabbedPane.getLstSelectedCoverages()
894
                                .setListData(coverages);
895
        } else if (coverages.length > 1) {
896
                ArrayList interseccionTiempos = new ArrayList();
897
                interseccionTiempos = data.getCoverageTimes((String) coverages[0]);
898
                for (int i = 1; i < coverages.length; i++) {
899
                        // buscar per a cada una de les capes, quins temps coincideixen
900
                        // en totes elles
901
                        interseccionTiempos = Conjuntos.interseccion(data
902
                                        .getCoverageTimes((String) coverages[i]),
903
                                        interseccionTiempos);
904
                }
905
                if (!interseccionTiempos.isEmpty()) {
906
                        wcsParamsTabbedPane.getLstTemps().setListData(
907
                                        interseccionTiempos.toArray());
908

909
                } else {
910
                        // no hay posiciones para el tiempo compartidas
911
                        alert(PluginServices.getText(this, "alerta_cruzar_coberturas_tiempo"));
912
                        return false;
913
                }
914
        }
915
        return true;
916
}
917
*/
918

    
919
/**
920
 *  
921
 */
922
//protected void habilitarBotonesCoberturas() {
923
//        System.out.println("Habilitar Botones Coberturas"); 
924
//        wcsParamsTabbedPane.getBtnAdd()
925
//                        .setEnabled(
926
//                                        wcsParamsTabbedPane.getLstCoverages()
927
//                                                        .getSelectedIndices().length != 0);
928
//        wcsParamsTabbedPane.getBtnDel().setEnabled(
929
//                        wcsParamsTabbedPane.getLstSelectedCoverages()
930
//                                        .getSelectedIndices().length != 0);
931
//}
932

    
933

    
934

    
935

    
936
/*protected void addCoverage() {
937
ArrayList coberturas_anteriores, coverages = new ArrayList();
938

939

940
boolean es_posible_cruzar_capas;
941
for (int i = 0; i < wcsParamsTabbedPane.getLstSelectedCoverages()
942
                .getModel().getSize(); i++) {
943
        coverages.add(wcsParamsTabbedPane.getLstSelectedCoverages()
944
                        .getModel().getElementAt(i));
945
}
946
// guardamos las coberturas anteriores a la adici?n de las nuevas para
947
// deshacer los cambios en caso de que no puedan cruzarse.
948
coberturas_anteriores = (ArrayList) coverages.clone();
949

950
Object[] obj = wcsParamsTabbedPane.getLstCoverages()
951
                .getSelectedValues();
952
for (int i = 0; i < obj.length; i++) {
953
        if (!coverages.contains(obj[i]))
954
                coverages.add(obj[i]);
955
}
956
wcsParamsTabbedPane.getLstCoverages().clearSelection();
957
// coverages es un ArrayList que contiene las coberturas de la lista de
958
// coberturas seleccionadas, es decir... las actualmente seleccionadas
959

960
es_posible_cruzar_capas = actualizarSRSs(coverages.toArray());
961
if (es_posible_cruzar_capas)
962
        es_posible_cruzar_capas = actualizarFormatos(coverages.toArray());
963
if (es_posible_cruzar_capas)
964
        es_posible_cruzar_capas = actualizarTiempos(coverages.toArray());
965
if (es_posible_cruzar_capas)
966
        es_posible_cruzar_capas = actualizarParametros(coverages.toArray());
967

968
if (es_posible_cruzar_capas){
969
        // Actualizamos la lista de coberturas
970
        wcsParamsTabbedPane.getLstSelectedCoverages().setListData(coverages.toArray());
971
} else {
972
        if (!Conjuntos.compara(coberturas_anteriores, coverages)){
973
                // Regresamos al estado anterior sin a?adir capa (con addCoverage() rellenamos
974
                // el wizard con valores anteriores.
975
                limpiaWizard();
976
                wcsParamsTabbedPane.getLstSelectedCoverages().setListData(coberturas_anteriores.toArray());
977
                addCoverage();
978
        }
979
}
980

981
}*/
982
/**
983
 *  
984
 */
985
//protected void actualizaListaParametros(Object[] coverages) {
986
//        String nombreParametro = (String) wcsParamsTabbedPane.getCmbParam()
987
//                        .getSelectedItem();
988
//        if (coverages.length == 1) {
989
//                ArrayList valores = data.getCoverageInfo((String) coverages[0])
990
//                                .getParametro(nombreParametro).getLista_valores_simples();
991
//                wcsParamsTabbedPane.getLstParamValues().setListData(
992
//                                valores.toArray());
993
//        }
994
//}
995

    
996
/**
997
 * This method initializes panelPage2
998
 * 
999
 * @return javax.swing.JPanel
1000
 */
1001
/*
1002
private javax.swing.JPanel getPanelPage2() {
1003
        if (panelPage2 == null) {
1004
                panelPage2 = new javax.swing.JPanel();
1005
                panelPage2.setLayout(null);
1006
                panelPage2.setPreferredSize(new java.awt.Dimension(490, 300));
1007
                panelPage2.setVisible(false);
1008
                wcsParamsTabbedPane = new WCSParamsPanel();
1009
                wcsParamsTabbedPane.getJTabbedPane().addMouseListener(
1010
                                new java.awt.event.MouseAdapter() {
1011
                                        public void mouseClicked(java.awt.event.MouseEvent e) {
1012
                                                page = wcsParamsTabbedPane.getIndiceSolapaActual() + 1;
1013
                                                activarVisualizarBotones();
1014
                                        }
1015
                                });
1016
                wcsParamsTabbedPane.getBtnAdd().addActionListener(
1017
                                new java.awt.event.ActionListener() {
1018
                                        public void actionPerformed(java.awt.event.ActionEvent e) {
1019
                                                addCoverage();
1020
                                        }
1021
                                });
1022
                wcsParamsTabbedPane.getBtnDel().addActionListener(
1023
                                new java.awt.event.ActionListener() {
1024
                                        public void actionPerformed(java.awt.event.ActionEvent e) {
1025
                                                delCoverage();
1026
                                        }
1027
                                });
1028
                wcsParamsTabbedPane.getLstSelectedCoverages()
1029
                .addListSelectionListener(
1030
                                new javax.swing.event.ListSelectionListener() {
1031
                                        public void valueChanged(
1032
                                                        javax.swing.event.ListSelectionEvent e) {
1033
                                                habilitarBotonesCoberturas();
1034
                                        }
1035
                                });
1036
                wcsParamsTabbedPane.getLstCoverages()
1037
                .addListSelectionListener(
1038
                                new javax.swing.event.ListSelectionListener() {
1039
                                        public void valueChanged(
1040
                                                        javax.swing.event.ListSelectionEvent e) {
1041
                                                habilitarBotonesCoberturas();
1042
                                        }
1043
                                });
1044
                wcsParamsTabbedPane.getLstCoverages().addListSelectionListener(new javax.swing.event.ListSelectionListener() { 
1045
                        public void valueChanged(javax.swing.event.ListSelectionEvent e) {    
1046
                                actualizaWizard();
1047
                        }
1048
                });
1049

1050
                wcsParamsTabbedPane.getCmbParam().addItemListener(
1051
                                new java.awt.event.ItemListener() {
1052
                                        public void itemStateChanged(java.awt.event.ItemEvent e) {
1053
                                                ArrayList coverages = new ArrayList();
1054

1055
                                                for (int i = 0; i < wcsParamsTabbedPane                                                                .getLstSelectedCoverages().getModel()
1056
                                                        .getSize(); i++) {
1057
                                                 coverages.add(wcsParamsTabbedPane
1058
                                                                        .getLstSelectedCoverages().getModel()
1059
                                                                        .getElementAt(i));
1060
                                                }
1061
                                                String s = (String) wcsParamsTabbedPane.getLstCoverages().getSelectedValue();
1062
                                                actualizaListaParametros(s);
1063
                                                //actualizaListaParametros(coverages.toArray());
1064
                                        }
1065
                                });
1066
                wcsParamsTabbedPane.getBtnAddTemps().addActionListener(
1067
                                new java.awt.event.ActionListener() {
1068
                                        public void actionPerformed(java.awt.event.ActionEvent e) {
1069
                                                addTiempo();
1070
                                        }
1071
                                });
1072
                wcsParamsTabbedPane.getBtnDelTemps().addActionListener(
1073
                                new java.awt.event.ActionListener() {
1074
                                        public void actionPerformed(java.awt.event.ActionEvent e) {
1075
                                                delTiempo();
1076
                                        }
1077
                                });
1078
                panelPage2.add(wcsParamsTabbedPane, null);
1079
                panelPage2.setBounds(10, 5, 496, 276);
1080

1081
        }
1082

1083
        return panelPage2;
1084
}
1085
*/
1086
/**
1087
 * Elimina las coberturas seleccionadas de la lista "coberturas
1088
 * seleccionadas"
1089
 *  
1090
 */
1091
/*protected void delCoverage() {
1092
        ArrayList coverages = new ArrayList();
1093
        Object[] obj = wcsParamsTabbedPane.getLstSelectedCoverages()
1094
                        .getSelectedValues();
1095
        if (wcsParamsTabbedPane.getLstSelectedCoverages().getModel().getSize() == 1) {
1096
                limpiaWizard();
1097
        } else {
1098
                for (int i = 0; i < wcsParamsTabbedPane.getLstSelectedCoverages()
1099
                                .getModel().getSize(); i++)
1100
                        coverages.add(wcsParamsTabbedPane.getLstSelectedCoverages()
1101
                                        .getModel().getElementAt(i));
1102

1103
                for (int j = 0; j < obj.length; j++)
1104
                        if (coverages.contains(obj[j]))
1105
                                coverages.remove(obj[j]);
1106
                obj = new Object[coverages.size()];
1107
                for (int i = 0; i < obj.length; i++) {
1108
                        obj[i] = coverages.get(i);
1109
                }
1110
                wcsParamsTabbedPane.getLstSelectedCoverages().clearSelection();
1111
                actualizarSRSs(obj);
1112
                actualizarFormatos(obj);
1113
                actualizarTiempos(obj);
1114
        }
1115
}*/
1116

    
1117
/**
1118
 * @param objects
1119
 * @return
1120
 */
1121
/*private boolean actualizarParametros(Object[] coverages) {
1122
        // Solamente se permiten cruzar coberturas que no contengan parametros
1123
        
1124
        if (coverages.length == 1) {
1125
                // Si solo hay una cobertura seleccionada, la a?adimos
1126
                ArrayList listaParametros = data.getCoverageInfo(
1127
                                (String) coverages[0]).getParametros();
1128
                Iterator it = listaParametros.iterator();
1129
                while (it.hasNext()) {
1130
                        Parametro p = (Parametro) it.next();
1131
                        wcsParamsTabbedPane.getCmbParam().addItem(p.getName());
1132
                }
1133
                return true;
1134
        }
1135
        else {
1136
                // Si no, si las que hay no requieren Parametros, tambi?n las a?adimos
1137
                int i = 0;
1138
                boolean hayParametros = false;
1139
                while (i<coverages.length && !hayParametros) {
1140
                        hayParametros = data.getCoverageInfo((String) coverages[i]).hasParameter();
1141
                        i++;
1142
                }
1143
                        
1144
                if (!hayParametros)
1145
                        return true;
1146
                
1147
                alert(PluginServices.getText(this, "alerta_cruzar_coberturas_parametro"));
1148
        }
1149
        return false;
1150
}*/
1151
/*private boolean actualizarSRSs(Object[] coverages) {
1152
if (coverages.length == 1) {
1153
        wcsParamsTabbedPane.getLstCRSs().setListData(
1154
                        data.getCoverageSRSs((String) coverages[0]).toArray());
1155
        wcsParamsTabbedPane.getLstSelectedCoverages()
1156
                        .setListData(coverages);
1157
} else if (coverages.length > 1) {
1158
        ArrayList interseccionSRSs = new ArrayList();
1159
        interseccionSRSs = data.getCoverageSRSs((String) coverages[0]);
1160
        for (int i = 1; i < coverages.length; i++) {
1161
                // buscar per a cada una de les capes, quins SRS coincideixen en
1162
                // totes elles
1163
                interseccionSRSs = Conjuntos.interseccion(data
1164
                                .getCoverageSRSs((String) coverages[i]),
1165
                                interseccionSRSs);
1166
        }
1167
        if (!interseccionSRSs.isEmpty()) {
1168
                wcsParamsTabbedPane.getLstCRSs().setListData(
1169
                                interseccionSRSs.toArray());
1170

1171
        } else {
1172
                // no hay SRSs compartidos
1173
                alert(PluginServices.getText(this, "alerta_cruzar_coberturas_SRS"));
1174
                return false;
1175
        }
1176
}
1177
return true;
1178
*/
1179
/*
1180
private boolean actualizarFormatos(Object[] coverages){         
1181
           if (coverages.length == 1) {
1182
                wcsParamsTabbedPane.getLstFormats().setListData(
1183
                                data.getCoverageFormatos((String) coverages[0]).toArray());
1184
                wcsParamsTabbedPane.getLstSelectedCoverages()
1185
                                .setListData(coverages);
1186
        } else if (coverages.length > 1) {
1187
                ArrayList interseccionFormatos = new ArrayList();
1188
                interseccionFormatos = data
1189
                                .getCoverageFormatos((String) coverages[0]);
1190
                for (int i = 1; i < coverages.length; i++) {
1191
                        // buscar per a cada una de les capes, quins Formats
1192
                        // coincideixen en totes elles
1193

1194
                        interseccionFormatos = Conjuntos.interseccion(
1195
                                        interseccionFormatos, data
1196
                                                        .getCoverageFormatos((String) coverages[i]));
1197
                }
1198
                if (!interseccionFormatos.isEmpty()) {
1199
                        wcsParamsTabbedPane.getLstFormats().setListData(
1200
                                        interseccionFormatos.toArray());
1201
                        
1202
                } else {
1203
                        // no hay formatos compartidos
1204
                        alert(PluginServices.getText(this, "alerta_cruzar_coberturas_formatos"));
1205
                        return false;
1206
                }
1207
        }
1208
        return true;
1209
}
1210
*/