Statistics
| Revision:

root / branches / gvSIG_03_SLD / applications / appgvSIG / src / com / iver / cit / gvsig / gui / wms / WMSWizard.java @ 2106

History | View | Annotate | Download (28.8 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.wms;
48

    
49
import com.iver.andami.PluginServices;
50
import com.iver.andami.Utilities;
51

    
52
import com.iver.cit.gvsig.gui.WizardPanel;
53

    
54
import com.iver.utiles.NotExistInXMLEntity;
55
import com.iver.utiles.XMLEntity;
56
import com.iver.utiles.swing.JComboBox;
57

    
58
import org.apache.log4j.Logger;
59

    
60
import java.awt.geom.Rectangle2D;
61

    
62
import java.net.MalformedURLException;
63
import java.net.URL;
64

    
65
import java.util.ArrayList;
66
import java.util.HashSet;
67
import java.util.Iterator;
68
import java.util.TreeSet;
69

    
70
import javax.swing.DefaultComboBoxModel;
71
import javax.swing.DefaultListModel;
72
import javax.swing.JPanel;
73
import javax.swing.JTextField;
74
import javax.swing.tree.TreePath;
75

    
76

    
77
/**
78
 * DOCUMENT ME!
79
 *
80
 * @author Fernando Gonz?lez Cort?s
81
 */
82
public class WMSWizard extends WizardPanel {
83
        private static Logger logger = Logger.getLogger(WMSWizard.class.getName());
84
        private int page = 0;
85
        private boolean conectado = false;
86
        private javax.swing.JPanel jContentPane = null;
87
        private JComboBox cmbHost = null;
88
        private javax.swing.JButton btnDetalles = null;
89
        private javax.swing.JPanel jPanel = null;
90
        private javax.swing.JLabel jLabel1 = null;
91
        private javax.swing.JLabel lblTitle = null;
92
        private javax.swing.JScrollPane jScrollPane = null;
93
        private javax.swing.JTextArea txtAbstract = null;
94
        private javax.swing.JScrollPane jScrollPane1 = null;
95
        private javax.swing.JTree treeLayers1 = null;
96
        private javax.swing.JScrollPane jScrollPane2 = null;
97
        private javax.swing.JList lstFormats1 = null;
98
        private javax.swing.JPanel panelPage1 = null;
99
        private javax.swing.JPanel panelPage2 = null;
100
        private javax.swing.JScrollPane jScrollPane5 = null;
101
        private javax.swing.JList lstSelectedLayers = null;
102
        private javax.swing.JButton btnAdd = null;
103
        private javax.swing.JButton btnDel = null;
104
        private javax.swing.JScrollPane jScrollPane6 = null;
105
        private javax.swing.JList lstSRSs = null;
106
        private LayerListModel selectedLayersModel = new LayerListModel();
107
        private javax.swing.JButton btnSiguiente = null;
108
        private javax.swing.JButton btnAnterior = null;
109
        private javax.swing.JPanel jPanel1 = null;
110
        private javax.swing.JPanel jPanel2 = null;
111
        private javax.swing.JPanel jPanel3 = null;
112
        private WizardListenerSupport listenerSupport = new WizardListenerSupport();
113
        private WizardDataSource dataSource;
114
        private JPanel jPanel4 = null;
115
        private JTextField jTxtNomCapa = null;
116

    
117
        /**
118
         * This is the default constructor
119
         */
120
        public WMSWizard() {
121
                super();
122
                initialize();
123
        }
124

    
125
        /**
126
         * This method initializes this
127
         */
128
        private void initialize() {
129
                this.setSize(510, 311);
130
                this.setLayout(null);
131
                this.setPreferredSize(new java.awt.Dimension(750, 320));
132
                this.setVisible(true);
133
                this.add(getPanelPage1(), null);
134
                this.add(getPanelPage2(), null);
135
                this.add(getBtnAnterior(), null);
136
                this.add(getBtnSiguiente(), null);
137
                activarVisualizarBotones();
138
        }
139

    
140
        /**
141
         * DOCUMENT ME!
142
         */
143
        private void actualizarSRS() {
144
                LayerInfo[] layers = ((LayerListModel) lstSelectedLayers.getModel()).getElements();
145

    
146
                if (layers.length == 0) {
147
                        lstSRSs.setModel(new DefaultListModel());
148
                } else {
149
                        TreeSet srsSet = new TreeSet();
150
                        srsSet.addAll(layers[0].getSRSs());
151

    
152
                        for (int i = 1; i < layers.length; i++) {
153
                                HashSet nuevo = new HashSet(layers[i].getSRSs());
154
                                Iterator it = srsSet.iterator();
155

    
156
                                while (it.hasNext()) {
157
                                        String srs = (String) it.next();
158

    
159
                                        if (!nuevo.contains(srs)) {
160
                                                srsSet.remove(srs);
161
                                        }
162
                                }
163
                        }
164

    
165
                        DefaultListModel model = new DefaultListModel();
166
                        String[] array = (String[]) srsSet.toArray(new String[0]);
167

    
168
                        for (int i = 0; i < array.length; i++) {
169
                                model.addElement(array[i]);
170
                        }
171

    
172
                        lstSRSs.setModel(model);
173
                }
174
        }
175

    
176
        /**
177
         * DOCUMENT ME!
178
         */
179
        private void addLayer() {
180
                boolean alguno = false;
181

    
182
                TreePath[] selecciones = getTreeLayers1().getSelectionPaths();
183

    
184
                for (int i = 0; i < selecciones.length; i++) {
185
                        LayerInfo nodo = (LayerInfo) selecciones[i].getLastPathComponent();
186

    
187
                        String name = nodo.name;
188
                        String text = nodo.text;
189
                        ArrayList srs = nodo.getSRSs();
190

    
191
                        //Se a?ade a la lista de layers seleccionados
192
                        LayerListModel modelo = (LayerListModel) lstSelectedLayers.getModel();
193

    
194
                        if (modelo.addElement(nodo)) {
195
                                alguno = true;
196
                        }
197
                }
198

    
199
                if (alguno) {
200
                        activarVisualizarBotones();
201
                        actualizarSRS();
202
                }
203
        }
204

    
205
        /**
206
         * DOCUMENT ME!
207
         */
208
        private void delLayer() {
209
                int[] index = lstSelectedLayers.getSelectedIndices();
210

    
211
                ArrayList removeList = new ArrayList();
212
                LayerListModel modelo = (LayerListModel) lstSelectedLayers.getModel();
213
                LayerInfo[] infos = modelo.getElements();
214

    
215
                for (int i = 0; i < index.length; i++) {
216
                        removeList.add(infos[index[i]]);
217
                }
218

    
219
                modelo.delElements(removeList);
220
                lstSelectedLayers.clearSelection();
221

    
222
                activarVisualizarBotones();
223

    
224
                actualizarSRS();
225
        }
226

    
227
        /**
228
         * DOCUMENT ME!
229
         *
230
         * @param host DOCUMENT ME!
231
         */
232
        private void addHost(String host) {
233
                host = host.trim();
234

    
235
                DefaultComboBoxModel model = (DefaultComboBoxModel) getTxtHost()
236
                                                                                                                                .getModel();
237

    
238
                if (model.getIndexOf(host) < 0) {
239
                        model.addElement(host);
240

    
241
                        PluginServices ps = PluginServices.getPluginServices(this);
242
                        XMLEntity xml = ps.getPersistentXML();
243

    
244
                        try {
245
                                String[] servers = xml.getStringArrayProperty("wms-servers");
246
                                String[] newServers = new String[servers.length + 1];
247
                                System.arraycopy(servers, 0, newServers, 0, servers.length);
248
                                newServers[servers.length] = host;
249
                                xml.putProperty("wms-servers", newServers);
250
                        } catch (NotExistInXMLEntity e) {
251
                                xml.putProperty("wms-servers", new String[] { host });
252
                        }
253

    
254
                        ps.setPersistentXML(xml);
255
                }
256
        }
257

    
258
        /**
259
         * DOCUMENT ME!
260
         */
261
        private void rellenarControles() {
262
                try {
263
                        String host = cmbHost.getModel().getSelectedItem().toString();
264

    
265
                        // if (!host.endsWith("?")) {
266
                        //         host += "?";
267
                        // }
268

    
269
                        WizardData data = dataSource.detalles(new URL(host));
270

    
271
                        addHost(host);
272

    
273
                        ((LayerListModel) lstSelectedLayers.getModel()).clear();
274
                        lstSelectedLayers.repaint();
275
                        lblTitle.setText(data.getTitle());
276
                        txtAbstract.setText(data.getAbstract());
277
                        lstFormats1.setModel(new FormatListModel(data.getFormats()));
278
                        treeLayers1.setModel(new LayerTreeModel(data.getLayer()));
279
                        conectado = true;
280
                        activarVisualizarBotones();
281
                } catch (Exception e) {
282
                        listenerSupport.callError(e);
283
                }
284
        }
285

    
286
        /**
287
         * DOCUMENT ME!
288
         */
289
        private void activarVisualizarBotones() {
290
                if (page == 0) {
291
                        getBtnAnterior().setEnabled(false);
292
                        getBtnSiguiente().setVisible(true);
293

    
294
                        if (conectado) {
295
                                getBtnSiguiente().setEnabled(true);
296
                        } else {
297
                                getBtnSiguiente().setEnabled(false);
298
                        }
299
                } else if (page == 1) {
300
                        getBtnAnterior().setEnabled(true);
301
                        getBtnSiguiente().setVisible(false);
302
                        listenerSupport.callStateChanged(true);
303

    
304
                        if ((getLstSRSs().getSelectedIndex() != -1) &&
305
                                        (getLstFormats1().getSelectedIndex() != -1) &&
306
                                        (getLstSelectedLayers().getModel().getSize() > 0)) {
307
                                listenerSupport.callStateChanged(true);
308
                        } else {
309
                                listenerSupport.callStateChanged(false);
310
                        }
311

    
312
                        if (getTreeLayers1().getSelectionCount() > 0) {
313
                                LayerInfo nodo = (LayerInfo) getTreeLayers1().getSelectionPath()
314
                                                                                                 .getLastPathComponent();
315
                                String name = nodo.name;
316

    
317
                                if (name != null) {
318
                                        getBtnAdd().setEnabled(true);
319
                                } else {
320
                                        getBtnAdd().setEnabled(false);
321
                                }
322
                        } else {
323
                                getBtnAdd().setEnabled(false);
324
                        }
325

    
326
                        if (getLstSelectedLayers().getSelectedIndex() != -1) {
327
                                getBtnDel().setEnabled(true);
328
                        } else {
329
                                getBtnDel().setEnabled(false);
330
                        }
331
                }
332
        }
333

    
334
        /*
335
         * DOCUMENT ME!
336
         *
337
                     private void finalizar() {
338
                         LayerInfo[] layers = ((LayerListModel) lstSelectedLayers.getModel()).getElements();
339
                         String srs = (String) lstSRSs.getSelectedValue();
340
                         //Nombre separado por comas de las capas
341
                         String layersQuery = layers[0].name;
342
                         for (int i = 1; i < layers.length; i++) {
343
                             layersQuery += ("," + layers[i].name);
344
                         }
345
                         Rectangle2D rect;
346
                         rect = v.getMapControl().getExtent();
347
                         if (rect == null) {
348
                             //Boundingbox de todas las capas
349
                             ArrayList rectangulos = new ArrayList();
350
                             for (int i = 0; i < layers.length; i++) {
351
                                 rect = wms.getBoundingBox(layers[i].name, srs);
352
                                 if (rect != null) {
353
                                     rectangulos.add(rect);
354
                                 }
355
                             }
356
                             rect = Utilities.getRectangle((Rectangle2D.Double[]) rectangulos.toArray(
357
                                         new Rectangle2D.Double[0]));
358
                             if (rect == null) {
359
                                 App.instance.getNm().addInfo("Si no hay un bounding box en la especificaci?n, y tampoco en el FMap.",
360
                                     null);
361
                                 return; //Si no hay un bounding box en la especificaci?n, y tampoco en el FMap.
362
                             }
363
                             logger.debug("(" + rect.getMinX() + ", " + rect.getMinY() + ")-(" +
364
                                 rect.getMaxX() + ", " + rect.getMaxY() + ")");
365
                         }
366
                         if (rect != null) {
367
                             IFLayer lyr = new FLyrWMS(rect,
368
                                     (String) lstFormats1.getSelectedValue(), layersQuery, srs,
369
                                     wms);
370
                             v.getMapControl().getLayers().addLayer(lyr);
371
                             v.getTOC().refresh();
372
                             v.getMapControl().drawMap();
373
                         } else {
374
                         }
375
                         /*MapQuery query = new MapQuery();
376
                            query.setBBOX(rect);
377
                            query.setFormat((String) lstFormats1.getSelectedValue());
378
                            query.setHeight(300);
379
                            query.setLayers(layersQuery);
380
                            query.setSRS(srs);
381
                            query.setStyles("");
382
                            query.setVersion("1.0.0");
383
                            query.setWidth(300);
384
                            byte[] bytes;
385
                            try {
386
                                    bytes = wms.doMapQuery(query);
387
                                    FileOutputStream out;
388
                                    out = new FileOutputStream("res.png");
389
                                    out.write(bytes);
390
                                    out.close();
391
                            } catch (WMSException e1) {
392
                                    e1.printStackTrace();
393
                            } catch (Exception e1) {
394
                                    e1.printStackTrace();
395
                            }
396
                     }*/
397

    
398
        /**
399
         * This method initializes txtHost
400
         *
401
         * @return javax.swing.JTextField
402
         */
403
        private javax.swing.JComboBox getTxtHost() {
404
                if (cmbHost == null) {
405
                        cmbHost = new JComboBox();
406
                        cmbHost.setModel(new DefaultComboBoxModel());
407
                        cmbHost.setPreferredSize(new java.awt.Dimension(350, 20));
408
                        cmbHost.setEditable(true);
409

    
410
                        XMLEntity xml = PluginServices.getPluginServices(this)
411
                                                                                  .getPersistentXML();
412
                        if (xml == null)
413
                                xml = new XMLEntity();
414
                        
415
                        if (!xml.contains("wms-servers")) {
416
                                String[] servers = new String[2];
417
                                servers[0] = "http://demo.deegree.org:8080/deegree/wms";
418
                                servers[1] = "http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?";
419

    
420
                                xml.putProperty("wms-servers", servers);
421
                        }
422

    
423
                        try {
424
                                String[] servers = xml.getStringArrayProperty("wms-servers");
425

    
426
                                for (int i = 0; i < servers.length; i++) {
427
                                        ((DefaultComboBoxModel) cmbHost.getModel()).addElement(servers[i]);
428
                                }
429
                        } catch (NotExistInXMLEntity e) {
430
                        }
431
                }
432

    
433
                return cmbHost;
434
        }
435

    
436
        /**
437
         * This method initializes btnDetalles
438
         *
439
         * @return javax.swing.JButton
440
         */
441
        private javax.swing.JButton getBtnDetalles() {
442
                if (btnDetalles == null) {
443
                        btnDetalles = new javax.swing.JButton();
444
                        btnDetalles.setPreferredSize(new java.awt.Dimension(100, 20));
445
                        btnDetalles.setText(PluginServices.getText(this, "detalles"));
446
                        btnDetalles.addActionListener(new java.awt.event.ActionListener() {
447
                                        public void actionPerformed(java.awt.event.ActionEvent e) {
448
                                                rellenarControles();
449
                                        }
450
                                });
451
                }
452

    
453
                return btnDetalles;
454
        }
455

    
456
        /**
457
         * This method initializes jPanel
458
         *
459
         * @return javax.swing.JPanel
460
         */
461
        private javax.swing.JPanel getJPanel() {
462
                if (jPanel == null) {
463
                        jPanel = new javax.swing.JPanel();
464
                        jPanel.setLayout(null);
465
                        jPanel.setPreferredSize(new java.awt.Dimension(470, 130));
466
                        jPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(
467
                                        null, PluginServices.getText(this, "descripcion"),
468
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
469
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
470
                        jPanel.setBounds(2, 67, 477, 197);
471
                        jPanel.add(getJLabel1(), null);
472
                        jPanel.add(getLblTitle(), null);
473
                        jPanel.add(getJScrollPane(), null);
474
                }
475

    
476
                return jPanel;
477
        }
478

    
479
        /**
480
         * This method initializes jLabel1
481
         *
482
         * @return javax.swing.JLabel
483
         */
484
        private javax.swing.JLabel getJLabel1() {
485
                if (jLabel1 == null) {
486
                        jLabel1 = new javax.swing.JLabel();
487
                        jLabel1.setText(PluginServices.getText(this, "nombre") + ":");
488
                        jLabel1.setBounds(37, 26, 40, 15);
489
                }
490

    
491
                return jLabel1;
492
        }
493

    
494
        /**
495
         * This method initializes lblTitle
496
         *
497
         * @return javax.swing.JLabel
498
         */
499
        private javax.swing.JLabel getLblTitle() {
500
                if (lblTitle == null) {
501
                        lblTitle = new javax.swing.JLabel();
502
                        lblTitle.setText("-");
503
                        lblTitle.setPreferredSize(new java.awt.Dimension(350, 16));
504
                        lblTitle.setBounds(82, 26, 350, 16);
505
                }
506

    
507
                return lblTitle;
508
        }
509

    
510
        /**
511
         * This method initializes jScrollPane
512
         *
513
         * @return javax.swing.JScrollPane
514
         */
515
        private javax.swing.JScrollPane getJScrollPane() {
516
                if (jScrollPane == null) {
517
                        jScrollPane = new javax.swing.JScrollPane();
518
                        jScrollPane.setViewportView(getTxtAbstract());
519
                        jScrollPane.setPreferredSize(new java.awt.Dimension(450, 60));
520
                        jScrollPane.setBounds(10, 47, 450, 137);
521
                }
522

    
523
                return jScrollPane;
524
        }
525

    
526
        /**
527
         * This method initializes txtAbstract
528
         *
529
         * @return javax.swing.JTextArea
530
         */
531
        private javax.swing.JTextArea getTxtAbstract() {
532
                if (txtAbstract == null) {
533
                        txtAbstract = new javax.swing.JTextArea();
534
                        txtAbstract.setWrapStyleWord(true);
535
                        txtAbstract.setColumns(30);
536
                        txtAbstract.setLineWrap(true);
537
                }
538

    
539
                return txtAbstract;
540
        }
541

    
542
        /**
543
         * This method initializes jScrollPane1
544
         *
545
         * @return javax.swing.JScrollPane
546
         */
547
        private javax.swing.JScrollPane getJScrollPane1() {
548
                if (jScrollPane1 == null) {
549
                        jScrollPane1 = new javax.swing.JScrollPane();
550
                        jScrollPane1.setViewportView(getTreeLayers1());
551
                        jScrollPane1.setPreferredSize(new java.awt.Dimension(205, 75));
552
                }
553

    
554
                return jScrollPane1;
555
        }
556

    
557
        /**
558
         * This method initializes treeLayers1
559
         *
560
         * @return javax.swing.JTree
561
         */
562
        private javax.swing.JTree getTreeLayers1() {
563
                if (treeLayers1 == null) {
564
                        treeLayers1 = new javax.swing.JTree();
565
                        treeLayers1.setRootVisible(true);
566
                        treeLayers1.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
567
                                        public void valueChanged(
568
                                                javax.swing.event.TreeSelectionEvent e) {
569
                                                activarVisualizarBotones();
570
                                        }
571
                                });
572
                }
573

    
574
                return treeLayers1;
575
        }
576

    
577
        /**
578
         * This method initializes jScrollPane2
579
         *
580
         * @return javax.swing.JScrollPane
581
         */
582
        private javax.swing.JScrollPane getJScrollPane2() {
583
                if (jScrollPane2 == null) {
584
                        jScrollPane2 = new javax.swing.JScrollPane();
585
                        jScrollPane2.setViewportView(getLstFormats1());
586
                        jScrollPane2.setPreferredSize(new java.awt.Dimension(100, 200));
587
                        jScrollPane2.setBounds(297, 26, 183, 66);
588
                }
589

    
590
                return jScrollPane2;
591
        }
592

    
593
        /**
594
         * This method initializes lstFormats1
595
         *
596
         * @return javax.swing.JList
597
         */
598
        private javax.swing.JList getLstFormats1() {
599
                if (lstFormats1 == null) {
600
                        lstFormats1 = new javax.swing.JList();
601
                        lstFormats1.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
602
                        lstFormats1.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
603
                                        public void valueChanged(
604
                                                javax.swing.event.ListSelectionEvent e) {
605
                                                activarVisualizarBotones();
606
                                        }
607
                                });
608
                }
609

    
610
                return lstFormats1;
611
        }
612

    
613
        /**
614
         * This method initializes panelPage1
615
         *
616
         * @return javax.swing.JPanel
617
         */
618
        private javax.swing.JPanel getPanelPage1() {
619
                if (panelPage1 == null) {
620
                        panelPage1 = new javax.swing.JPanel();
621
                        panelPage1.setLayout(null);
622
                        panelPage1.setPreferredSize(new java.awt.Dimension(480, 220));
623
                        panelPage1.setVisible(true);
624
                        panelPage1.setBounds(15, 5, 480, 262);
625
                        panelPage1.add(getJPanel1(), null);
626
                        panelPage1.add(getJPanel(), null);
627
                }
628

    
629
                return panelPage1;
630
        }
631

    
632
        /**
633
         * This method initializes panelPage2
634
         *
635
         * @return javax.swing.JPanel
636
         */
637
        private javax.swing.JPanel getPanelPage2() {
638
                if (panelPage2 == null) {
639
                        panelPage2 = new javax.swing.JPanel();
640
                        panelPage2.setLayout(null);
641
                        panelPage2.setPreferredSize(new java.awt.Dimension(490, 300));
642
                        panelPage2.setVisible(false);
643
                        panelPage2.setBounds(10, 5, 490, 276);
644
                        panelPage2.add(getJPanel2(), null);
645
                        panelPage2.add(getJPanel3(), null);
646
                        panelPage2.add(getJPanel4(), null);
647
                }
648

    
649
                return panelPage2;
650
        }
651

    
652
        /**
653
         * This method initializes jScrollPane5
654
         *
655
         * @return javax.swing.JScrollPane
656
         */
657
        private javax.swing.JScrollPane getJScrollPane5() {
658
                if (jScrollPane5 == null) {
659
                        jScrollPane5 = new javax.swing.JScrollPane();
660
                        jScrollPane5.setViewportView(getLstSelectedLayers());
661
                        jScrollPane5.setPreferredSize(new java.awt.Dimension(205, 75));
662
                }
663

    
664
                return jScrollPane5;
665
        }
666

    
667
        /**
668
         * This method initializes lstSelectedLayers
669
         *
670
         * @return javax.swing.JList
671
         */
672
        private javax.swing.JList getLstSelectedLayers() {
673
                if (lstSelectedLayers == null) {
674
                        lstSelectedLayers = new javax.swing.JList();
675
                        lstSelectedLayers.setModel(selectedLayersModel);
676
                        lstSelectedLayers.setSelectionMode(javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
677
                        lstSelectedLayers.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
678
                                        public void valueChanged(
679
                                                javax.swing.event.ListSelectionEvent e) {
680
                                                activarVisualizarBotones();
681
                                        }
682
                                });
683
                }
684

    
685
                return lstSelectedLayers;
686
        }
687

    
688
        /**
689
         * This method initializes btnAdd
690
         *
691
         * @return javax.swing.JButton
692
         */
693
        private javax.swing.JButton getBtnAdd() {
694
                if (btnAdd == null) {
695
                        btnAdd = new javax.swing.JButton();
696
                        btnAdd.setPreferredSize(new java.awt.Dimension(23, 23));
697
                        btnAdd.setText(">");
698
                        btnAdd.setMargin(new java.awt.Insets(2, 0, 2, 0));
699
                        btnAdd.setEnabled(false);
700
                        btnAdd.addActionListener(new java.awt.event.ActionListener() {
701
                                        public void actionPerformed(java.awt.event.ActionEvent e) {
702
                                                addLayer();
703
                                        }
704
                                });
705
                }
706

    
707
                return btnAdd;
708
        }
709

    
710
        /**
711
         * This method initializes btnDel
712
         *
713
         * @return javax.swing.JButton
714
         */
715
        private javax.swing.JButton getBtnDel() {
716
                if (btnDel == null) {
717
                        btnDel = new javax.swing.JButton();
718
                        btnDel.setPreferredSize(new java.awt.Dimension(23, 23));
719
                        btnDel.setText("<");
720
                        btnDel.setMargin(new java.awt.Insets(2, 0, 2, 0));
721
                        btnDel.setEnabled(false);
722
                        btnDel.addActionListener(new java.awt.event.ActionListener() {
723
                                        public void actionPerformed(java.awt.event.ActionEvent e) {
724
                                                delLayer();
725
                                        }
726
                                });
727
                }
728

    
729
                return btnDel;
730
        }
731

    
732
        /**
733
         * This method initializes jScrollPane6
734
         *
735
         * @return javax.swing.JScrollPane
736
         */
737
        private javax.swing.JScrollPane getJScrollPane6() {
738
                if (jScrollPane6 == null) {
739
                        jScrollPane6 = new javax.swing.JScrollPane();
740
                        jScrollPane6.setViewportView(getLstSRSs());
741
                        jScrollPane6.setPreferredSize(new java.awt.Dimension(250, 200));
742
                        jScrollPane6.setBounds(10, 26, 272, 68);
743
                }
744

    
745
                return jScrollPane6;
746
        }
747

    
748
        /**
749
         * This method initializes lstSRSs
750
         *
751
         * @return javax.swing.JList
752
         */
753
        private javax.swing.JList getLstSRSs() {
754
                if (lstSRSs == null) {
755
                        lstSRSs = new javax.swing.JList();
756
                        lstSRSs.setModel(new SRSListModel());
757
                        lstSRSs.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
758
                        lstSRSs.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
759
                                        public void valueChanged(
760
                                                javax.swing.event.ListSelectionEvent e) {
761
                                                activarVisualizarBotones();
762
                                        }
763
                                });
764
                }
765

    
766
                return lstSRSs;
767
        }
768

    
769
        /**
770
         * This method initializes btnSiguiente
771
         *
772
         * @return javax.swing.JButton
773
         */
774
        private javax.swing.JButton getBtnSiguiente() {
775
                if (btnSiguiente == null) {
776
                        btnSiguiente = new javax.swing.JButton();
777
                        btnSiguiente.setPreferredSize(new java.awt.Dimension(100, 30));
778
                        btnSiguiente.setText(PluginServices.getText(this, "siguiente"));
779
                        btnSiguiente.setBounds(205, 282, 100, 21);
780
                        btnSiguiente.addActionListener(new java.awt.event.ActionListener() {
781
                                        public void actionPerformed(java.awt.event.ActionEvent e) {
782
                                                page++;
783
                                                getPanelPage1().setVisible(false);
784
                                                getPanelPage2().setVisible(true);
785
                                                activarVisualizarBotones();
786
                                        }
787
                                });
788
                }
789

    
790
                return btnSiguiente;
791
        }
792

    
793
        /**
794
         * This method initializes btnAnterior
795
         *
796
         * @return javax.swing.JButton
797
         */
798
        private javax.swing.JButton getBtnAnterior() {
799
                if (btnAnterior == null) {
800
                        btnAnterior = new javax.swing.JButton();
801
                        btnAnterior.setText(PluginServices.getText(this, "anterior"));
802
                        btnAnterior.setPreferredSize(new java.awt.Dimension(100, 30));
803
                        btnAnterior.setBounds(100, 282, 100, 21);
804
                        btnAnterior.addActionListener(new java.awt.event.ActionListener() {
805
                                        public void actionPerformed(java.awt.event.ActionEvent e) {
806
                                                page--;
807
                                                getPanelPage1().setVisible(true);
808
                                                getPanelPage2().setVisible(false);
809
                                                activarVisualizarBotones();
810
                                        }
811
                                });
812
                }
813

    
814
                return btnAnterior;
815
        }
816

    
817
        /**
818
         * This method initializes jPanel1
819
         *
820
         * @return javax.swing.JPanel
821
         */
822
        private javax.swing.JPanel getJPanel1() {
823
                if (jPanel1 == null) {
824
                        jPanel1 = new javax.swing.JPanel();
825
                        jPanel1.add(getTxtHost(), null);
826
                        jPanel1.add(getBtnDetalles(), null);
827
                        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(
828
                                        null, PluginServices.getText(this, "servidor"),
829
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
830
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
831
                        jPanel1.setBounds(2, 5, 477, 57);
832
                }
833

    
834
                return jPanel1;
835
        }
836

    
837
        /**
838
         * This method initializes jPanel2
839
         *
840
         * @return javax.swing.JPanel
841
         */
842
        private javax.swing.JPanel getJPanel2() {
843
                if (jPanel2 == null) {
844
                        jPanel2 = new javax.swing.JPanel();
845
                        jPanel2.add(getJScrollPane1(), null);
846
                        jPanel2.add(getBtnDel(), null);
847
                        jPanel2.add(getBtnAdd(), null);
848
                        jPanel2.add(getJScrollPane5(), null);
849
                        jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(
850
                                        null, PluginServices.getText(this, "seleccionar_capas"),
851
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
852
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
853
                        jPanel2.setBounds(-1, 5, 493, 112);
854
                }
855

    
856
                return jPanel2;
857
        }
858

    
859
        /**
860
         * This method initializes jPanel3
861
         *
862
         * @return javax.swing.JPanel
863
         */
864
        private javax.swing.JPanel getJPanel3() {
865
                if (jPanel3 == null) {
866
                        jPanel3 = new javax.swing.JPanel();
867
                        jPanel3.setLayout(null);
868
                        jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(
869
                                        null, PluginServices.getText(this, "seleccionar_formato"),
870
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
871
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
872
                        jPanel3.setPreferredSize(new java.awt.Dimension(493, 300));
873
                        jPanel3.setLocation(-1, 122);
874
                        jPanel3.setSize(493, 101);
875
                        jPanel3.add(getJScrollPane6(), null);
876
                        jPanel3.add(getJScrollPane2(), null);
877
                }
878

    
879
                return jPanel3;
880
        }
881

    
882
        /**
883
         * DOCUMENT ME!
884
         *
885
         * @param listener
886
         */
887
        public void addWizardListener(WizardListener listener) {
888
                listenerSupport.addWizardListener(listener);
889
        }
890

    
891
        /**
892
         * DOCUMENT ME!
893
         *
894
         * @param listener
895
         */
896
        public void removeWizardListener(WizardListener listener) {
897
                listenerSupport.removeWizardListener(listener);
898
        }
899

    
900
        /**
901
         * DOCUMENT ME!
902
         *
903
         * @return
904
         */
905
        public WizardDataSource getDataSource() {
906
                return dataSource;
907
        }
908

    
909
        /**
910
         * DOCUMENT ME!
911
         *
912
         * @param source
913
         */
914
        public void setDataSource(WizardDataSource source) {
915
                dataSource = source;
916
        }
917

    
918
        /**
919
         * DOCUMENT ME!
920
         *
921
         * @return DOCUMENT ME!
922
         */
923
        public String getLayersQuery() {
924
                LayerInfo[] layers = ((LayerListModel) lstSelectedLayers.getModel()).getElements();
925

    
926
                //Nombre separado por comas de las capas
927
                String layersQuery = layers[0].name;
928

    
929
                for (int i = 1; i < layers.length; i++) {
930
                        layersQuery += ("," + layers[i].name);
931
                }
932

    
933
                return layersQuery;
934
        }
935

    
936
        /**
937
         * DOCUMENT ME!
938
         *
939
         * @return DOCUMENT ME!
940
         */
941
        public String getQueryableLayerQuery() {
942
                LayerInfo[] layers = ((LayerListModel) lstSelectedLayers.getModel()).getElements();
943

    
944
                //Nombre separado por comas de las capas
945
                String layersQuery = "";
946
                int i;
947

    
948
                for (i = 0; i < layers.length; i++) {
949
                        if (layers[i].queryable) {
950
                                layersQuery = layers[i].name;
951

    
952
                                break;
953
                        }
954
                }
955

    
956
                for (int j = i + 1; j < layers.length; j++) {
957
                        if (layers[j].queryable) {
958
                                layersQuery += ("," + layers[j].name);
959
                        }
960
                }
961

    
962
                return layersQuery;
963
        }
964

    
965
        /**
966
         * DOCUMENT ME!
967
         *
968
         * @return DOCUMENT ME!
969
         */
970
        public String getSRS() {
971
                return (String) lstSRSs.getSelectedValue();
972
        }
973

    
974
        /**
975
         * DOCUMENT ME!
976
         *
977
         * @return DOCUMENT ME!
978
         */
979
        public String getFormat() {
980
                return (String) lstFormats1.getSelectedValue();
981
        }
982

    
983
        /**
984
         * DOCUMENT ME!
985
         *
986
         * @return DOCUMENT ME!
987
         */
988
        public TreePath[] getSelectedLayers() {
989
                return getTreeLayers1().getSelectionPaths();
990
        }
991

    
992
        /**
993
         * DOCUMENT ME!
994
         *
995
         * @return DOCUMENT ME!
996
         */
997
        public Rectangle2D getLayersRectangle() {
998
                TreePath[] layers = getSelectedLayers();
999

    
1000
                //Boundingbox de todas las capas
1001
                ArrayList rectangulos = new ArrayList();
1002

    
1003
                Rectangle2D rect;
1004

    
1005
                for (int i = 0; i < layers.length; i++) {
1006
                        String[] rutaCapa = new String[layers[i].getPathCount()];
1007

    
1008
                        for (int j = 0; j < layers[i].getPathCount(); j++) {
1009
                                rutaCapa[j] = ((LayerInfo) layers[i].getPathComponent(j)).text;
1010
                        }
1011

    
1012
                        rect = dataSource.getBoundingBox(rutaCapa, getSRS());
1013

    
1014
                        if (rect != null) {
1015
                                rectangulos.add(rect);
1016
                        }
1017
                }
1018

    
1019
                rect = getRectangle((Rectangle2D.Double[]) rectangulos.toArray(
1020
                                        new Rectangle2D.Double[0]));
1021

    
1022
                return rect;
1023
        }
1024

    
1025
        /**
1026
         * Obtiene el rect?ngulo que contiene a todos los otros
1027
         *
1028
         * @param rects rectangulos
1029
         *
1030
         * @return Rectangulo que contiene a todos los demas
1031
         */
1032
        public static Rectangle2D getRectangle(Rectangle2D[] rects) {
1033
                Rectangle2D ret = rects[0];
1034

    
1035
                for (int i = 1; i < rects.length; i++) {
1036
                        ret.add(rects[i]);
1037
                }
1038

    
1039
                return ret;
1040
        }
1041

    
1042
        /**
1043
         * Devuelve el host que est? escrito en el cuadro de texto del host o null
1044
         * en caso de que no haya nada escrito o est? mal escrito
1045
         *
1046
         * @return URL del host
1047
         */
1048
        public URL getHost() {
1049
                try {
1050
                        return new URL(cmbHost.getModel().getSelectedItem().toString());
1051
                } catch (MalformedURLException e) {
1052
                        return null;
1053
                }
1054
        }
1055

    
1056
        /**
1057
         * DOCUMENT ME!
1058
         *
1059
         * @return Nombre de la capa que aparece en el TOC.
1060
         */
1061
        public String getLayerName() {
1062
                return jTxtNomCapa.getText();
1063
        }
1064

    
1065
        /**
1066
         * This method initializes jPanel4
1067
         *
1068
         * @return javax.swing.JPanel
1069
         */
1070
        private JPanel getJPanel4() {
1071
                if (jPanel4 == null) {
1072
                        jPanel4 = new JPanel();
1073
                        jPanel4.setLayout(null);
1074
                        jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder(
1075
                                        null, PluginServices.getText(this, "nombre_capa"),
1076
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
1077
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
1078
                        jPanel4.setBounds(-1, 223, 493, 48);
1079
                        jPanel4.add(getJTxtNomCapa(), null);
1080
                }
1081

    
1082
                return jPanel4;
1083
        }
1084

    
1085
        /**
1086
         * This method initializes jTextField
1087
         *
1088
         * @return javax.swing.JTextField
1089
         */
1090
        private JTextField getJTxtNomCapa() {
1091
                if (jTxtNomCapa == null) {
1092
                        jTxtNomCapa = new JTextField();
1093
                        jTxtNomCapa.setBounds(10, 19, 474, 20);
1094
                        jTxtNomCapa.setText(PluginServices.getText(this, "capaWMS"));
1095
                }
1096

    
1097
                return jTxtNomCapa;
1098
        }
1099
}
1100

    
1101
//  @jve:decl-index=0:visual-constraint="10,10"
1102
//  @jve:visual-info  decl-index=0 visual-constraint="16,10"
1103
//  @jve:visual-info  decl-index=0 visual-constraint="10,10"
1104
//  @jve:visual-info  decl-index=0 visual-constraint="10,10"
1105
//        @jve:visual-info  decl-index=0 visual-constraint="10,10"