Statistics
| Revision:

root / trunk / applications / appgvSIG / src / com / iver / cit / gvsig / gui / wms / WMSWizard.java @ 1354

History | View | Annotate | Download (28.5 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

    
413
                        try {
414
                                String[] servers = xml.getStringArrayProperty("wms-servers");
415

    
416
                                for (int i = 0; i < servers.length; i++) {
417
                                        ((DefaultComboBoxModel) cmbHost.getModel()).addElement(servers[i]);
418
                                }
419
                        } catch (NotExistInXMLEntity e) {
420
                        }
421
                }
422

    
423
                return cmbHost;
424
        }
425

    
426
        /**
427
         * This method initializes btnDetalles
428
         *
429
         * @return javax.swing.JButton
430
         */
431
        private javax.swing.JButton getBtnDetalles() {
432
                if (btnDetalles == null) {
433
                        btnDetalles = new javax.swing.JButton();
434
                        btnDetalles.setPreferredSize(new java.awt.Dimension(100, 20));
435
                        btnDetalles.setText(PluginServices.getText(this, "detalles"));
436
                        btnDetalles.addActionListener(new java.awt.event.ActionListener() {
437
                                        public void actionPerformed(java.awt.event.ActionEvent e) {
438
                                                rellenarControles();
439
                                        }
440
                                });
441
                }
442

    
443
                return btnDetalles;
444
        }
445

    
446
        /**
447
         * This method initializes jPanel
448
         *
449
         * @return javax.swing.JPanel
450
         */
451
        private javax.swing.JPanel getJPanel() {
452
                if (jPanel == null) {
453
                        jPanel = new javax.swing.JPanel();
454
                        jPanel.setLayout(null);
455
                        jPanel.setPreferredSize(new java.awt.Dimension(470, 130));
456
                        jPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(
457
                                        null, PluginServices.getText(this, "descripcion"),
458
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
459
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
460
                        jPanel.setBounds(2, 67, 477, 197);
461
                        jPanel.add(getJLabel1(), null);
462
                        jPanel.add(getLblTitle(), null);
463
                        jPanel.add(getJScrollPane(), null);
464
                }
465

    
466
                return jPanel;
467
        }
468

    
469
        /**
470
         * This method initializes jLabel1
471
         *
472
         * @return javax.swing.JLabel
473
         */
474
        private javax.swing.JLabel getJLabel1() {
475
                if (jLabel1 == null) {
476
                        jLabel1 = new javax.swing.JLabel();
477
                        jLabel1.setText(PluginServices.getText(this, "nombre") + ":");
478
                        jLabel1.setBounds(37, 26, 40, 15);
479
                }
480

    
481
                return jLabel1;
482
        }
483

    
484
        /**
485
         * This method initializes lblTitle
486
         *
487
         * @return javax.swing.JLabel
488
         */
489
        private javax.swing.JLabel getLblTitle() {
490
                if (lblTitle == null) {
491
                        lblTitle = new javax.swing.JLabel();
492
                        lblTitle.setText("-");
493
                        lblTitle.setPreferredSize(new java.awt.Dimension(350, 16));
494
                        lblTitle.setBounds(82, 26, 350, 16);
495
                }
496

    
497
                return lblTitle;
498
        }
499

    
500
        /**
501
         * This method initializes jScrollPane
502
         *
503
         * @return javax.swing.JScrollPane
504
         */
505
        private javax.swing.JScrollPane getJScrollPane() {
506
                if (jScrollPane == null) {
507
                        jScrollPane = new javax.swing.JScrollPane();
508
                        jScrollPane.setViewportView(getTxtAbstract());
509
                        jScrollPane.setPreferredSize(new java.awt.Dimension(450, 60));
510
                        jScrollPane.setBounds(10, 47, 450, 137);
511
                }
512

    
513
                return jScrollPane;
514
        }
515

    
516
        /**
517
         * This method initializes txtAbstract
518
         *
519
         * @return javax.swing.JTextArea
520
         */
521
        private javax.swing.JTextArea getTxtAbstract() {
522
                if (txtAbstract == null) {
523
                        txtAbstract = new javax.swing.JTextArea();
524
                        txtAbstract.setWrapStyleWord(true);
525
                        txtAbstract.setColumns(30);
526
                        txtAbstract.setLineWrap(true);
527
                }
528

    
529
                return txtAbstract;
530
        }
531

    
532
        /**
533
         * This method initializes jScrollPane1
534
         *
535
         * @return javax.swing.JScrollPane
536
         */
537
        private javax.swing.JScrollPane getJScrollPane1() {
538
                if (jScrollPane1 == null) {
539
                        jScrollPane1 = new javax.swing.JScrollPane();
540
                        jScrollPane1.setViewportView(getTreeLayers1());
541
                        jScrollPane1.setPreferredSize(new java.awt.Dimension(205, 75));
542
                }
543

    
544
                return jScrollPane1;
545
        }
546

    
547
        /**
548
         * This method initializes treeLayers1
549
         *
550
         * @return javax.swing.JTree
551
         */
552
        private javax.swing.JTree getTreeLayers1() {
553
                if (treeLayers1 == null) {
554
                        treeLayers1 = new javax.swing.JTree();
555
                        treeLayers1.setRootVisible(true);
556
                        treeLayers1.addTreeSelectionListener(new javax.swing.event.TreeSelectionListener() {
557
                                        public void valueChanged(
558
                                                javax.swing.event.TreeSelectionEvent e) {
559
                                                activarVisualizarBotones();
560
                                        }
561
                                });
562
                }
563

    
564
                return treeLayers1;
565
        }
566

    
567
        /**
568
         * This method initializes jScrollPane2
569
         *
570
         * @return javax.swing.JScrollPane
571
         */
572
        private javax.swing.JScrollPane getJScrollPane2() {
573
                if (jScrollPane2 == null) {
574
                        jScrollPane2 = new javax.swing.JScrollPane();
575
                        jScrollPane2.setViewportView(getLstFormats1());
576
                        jScrollPane2.setPreferredSize(new java.awt.Dimension(100, 200));
577
                        jScrollPane2.setBounds(297, 26, 183, 66);
578
                }
579

    
580
                return jScrollPane2;
581
        }
582

    
583
        /**
584
         * This method initializes lstFormats1
585
         *
586
         * @return javax.swing.JList
587
         */
588
        private javax.swing.JList getLstFormats1() {
589
                if (lstFormats1 == null) {
590
                        lstFormats1 = new javax.swing.JList();
591
                        lstFormats1.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
592
                        lstFormats1.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
593
                                        public void valueChanged(
594
                                                javax.swing.event.ListSelectionEvent e) {
595
                                                activarVisualizarBotones();
596
                                        }
597
                                });
598
                }
599

    
600
                return lstFormats1;
601
        }
602

    
603
        /**
604
         * This method initializes panelPage1
605
         *
606
         * @return javax.swing.JPanel
607
         */
608
        private javax.swing.JPanel getPanelPage1() {
609
                if (panelPage1 == null) {
610
                        panelPage1 = new javax.swing.JPanel();
611
                        panelPage1.setLayout(null);
612
                        panelPage1.setPreferredSize(new java.awt.Dimension(480, 220));
613
                        panelPage1.setVisible(true);
614
                        panelPage1.setBounds(15, 5, 480, 262);
615
                        panelPage1.add(getJPanel1(), null);
616
                        panelPage1.add(getJPanel(), null);
617
                }
618

    
619
                return panelPage1;
620
        }
621

    
622
        /**
623
         * This method initializes panelPage2
624
         *
625
         * @return javax.swing.JPanel
626
         */
627
        private javax.swing.JPanel getPanelPage2() {
628
                if (panelPage2 == null) {
629
                        panelPage2 = new javax.swing.JPanel();
630
                        panelPage2.setLayout(null);
631
                        panelPage2.setPreferredSize(new java.awt.Dimension(490, 300));
632
                        panelPage2.setVisible(false);
633
                        panelPage2.setBounds(10, 5, 490, 276);
634
                        panelPage2.add(getJPanel2(), null);
635
                        panelPage2.add(getJPanel3(), null);
636
                        panelPage2.add(getJPanel4(), null);
637
                }
638

    
639
                return panelPage2;
640
        }
641

    
642
        /**
643
         * This method initializes jScrollPane5
644
         *
645
         * @return javax.swing.JScrollPane
646
         */
647
        private javax.swing.JScrollPane getJScrollPane5() {
648
                if (jScrollPane5 == null) {
649
                        jScrollPane5 = new javax.swing.JScrollPane();
650
                        jScrollPane5.setViewportView(getLstSelectedLayers());
651
                        jScrollPane5.setPreferredSize(new java.awt.Dimension(205, 75));
652
                }
653

    
654
                return jScrollPane5;
655
        }
656

    
657
        /**
658
         * This method initializes lstSelectedLayers
659
         *
660
         * @return javax.swing.JList
661
         */
662
        private javax.swing.JList getLstSelectedLayers() {
663
                if (lstSelectedLayers == null) {
664
                        lstSelectedLayers = new javax.swing.JList();
665
                        lstSelectedLayers.setModel(selectedLayersModel);
666
                        lstSelectedLayers.setSelectionMode(javax.swing.ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
667
                        lstSelectedLayers.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
668
                                        public void valueChanged(
669
                                                javax.swing.event.ListSelectionEvent e) {
670
                                                activarVisualizarBotones();
671
                                        }
672
                                });
673
                }
674

    
675
                return lstSelectedLayers;
676
        }
677

    
678
        /**
679
         * This method initializes btnAdd
680
         *
681
         * @return javax.swing.JButton
682
         */
683
        private javax.swing.JButton getBtnAdd() {
684
                if (btnAdd == null) {
685
                        btnAdd = new javax.swing.JButton();
686
                        btnAdd.setPreferredSize(new java.awt.Dimension(23, 23));
687
                        btnAdd.setText(">");
688
                        btnAdd.setMargin(new java.awt.Insets(2, 0, 2, 0));
689
                        btnAdd.setEnabled(false);
690
                        btnAdd.addActionListener(new java.awt.event.ActionListener() {
691
                                        public void actionPerformed(java.awt.event.ActionEvent e) {
692
                                                addLayer();
693
                                        }
694
                                });
695
                }
696

    
697
                return btnAdd;
698
        }
699

    
700
        /**
701
         * This method initializes btnDel
702
         *
703
         * @return javax.swing.JButton
704
         */
705
        private javax.swing.JButton getBtnDel() {
706
                if (btnDel == null) {
707
                        btnDel = new javax.swing.JButton();
708
                        btnDel.setPreferredSize(new java.awt.Dimension(23, 23));
709
                        btnDel.setText("<");
710
                        btnDel.setMargin(new java.awt.Insets(2, 0, 2, 0));
711
                        btnDel.setEnabled(false);
712
                        btnDel.addActionListener(new java.awt.event.ActionListener() {
713
                                        public void actionPerformed(java.awt.event.ActionEvent e) {
714
                                                delLayer();
715
                                        }
716
                                });
717
                }
718

    
719
                return btnDel;
720
        }
721

    
722
        /**
723
         * This method initializes jScrollPane6
724
         *
725
         * @return javax.swing.JScrollPane
726
         */
727
        private javax.swing.JScrollPane getJScrollPane6() {
728
                if (jScrollPane6 == null) {
729
                        jScrollPane6 = new javax.swing.JScrollPane();
730
                        jScrollPane6.setViewportView(getLstSRSs());
731
                        jScrollPane6.setPreferredSize(new java.awt.Dimension(250, 200));
732
                        jScrollPane6.setBounds(10, 26, 272, 68);
733
                }
734

    
735
                return jScrollPane6;
736
        }
737

    
738
        /**
739
         * This method initializes lstSRSs
740
         *
741
         * @return javax.swing.JList
742
         */
743
        private javax.swing.JList getLstSRSs() {
744
                if (lstSRSs == null) {
745
                        lstSRSs = new javax.swing.JList();
746
                        lstSRSs.setModel(new SRSListModel());
747
                        lstSRSs.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
748
                        lstSRSs.addListSelectionListener(new javax.swing.event.ListSelectionListener() {
749
                                        public void valueChanged(
750
                                                javax.swing.event.ListSelectionEvent e) {
751
                                                activarVisualizarBotones();
752
                                        }
753
                                });
754
                }
755

    
756
                return lstSRSs;
757
        }
758

    
759
        /**
760
         * This method initializes btnSiguiente
761
         *
762
         * @return javax.swing.JButton
763
         */
764
        private javax.swing.JButton getBtnSiguiente() {
765
                if (btnSiguiente == null) {
766
                        btnSiguiente = new javax.swing.JButton();
767
                        btnSiguiente.setPreferredSize(new java.awt.Dimension(100, 30));
768
                        btnSiguiente.setText(PluginServices.getText(this, "siguiente"));
769
                        btnSiguiente.setBounds(205, 282, 100, 21);
770
                        btnSiguiente.addActionListener(new java.awt.event.ActionListener() {
771
                                        public void actionPerformed(java.awt.event.ActionEvent e) {
772
                                                page++;
773
                                                getPanelPage1().setVisible(false);
774
                                                getPanelPage2().setVisible(true);
775
                                                activarVisualizarBotones();
776
                                        }
777
                                });
778
                }
779

    
780
                return btnSiguiente;
781
        }
782

    
783
        /**
784
         * This method initializes btnAnterior
785
         *
786
         * @return javax.swing.JButton
787
         */
788
        private javax.swing.JButton getBtnAnterior() {
789
                if (btnAnterior == null) {
790
                        btnAnterior = new javax.swing.JButton();
791
                        btnAnterior.setText(PluginServices.getText(this, "anterior"));
792
                        btnAnterior.setPreferredSize(new java.awt.Dimension(100, 30));
793
                        btnAnterior.setBounds(100, 282, 100, 21);
794
                        btnAnterior.addActionListener(new java.awt.event.ActionListener() {
795
                                        public void actionPerformed(java.awt.event.ActionEvent e) {
796
                                                page--;
797
                                                getPanelPage1().setVisible(true);
798
                                                getPanelPage2().setVisible(false);
799
                                                activarVisualizarBotones();
800
                                        }
801
                                });
802
                }
803

    
804
                return btnAnterior;
805
        }
806

    
807
        /**
808
         * This method initializes jPanel1
809
         *
810
         * @return javax.swing.JPanel
811
         */
812
        private javax.swing.JPanel getJPanel1() {
813
                if (jPanel1 == null) {
814
                        jPanel1 = new javax.swing.JPanel();
815
                        jPanel1.add(getTxtHost(), null);
816
                        jPanel1.add(getBtnDetalles(), null);
817
                        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(
818
                                        null, PluginServices.getText(this, "servidor"),
819
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
820
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
821
                        jPanel1.setBounds(2, 5, 477, 57);
822
                }
823

    
824
                return jPanel1;
825
        }
826

    
827
        /**
828
         * This method initializes jPanel2
829
         *
830
         * @return javax.swing.JPanel
831
         */
832
        private javax.swing.JPanel getJPanel2() {
833
                if (jPanel2 == null) {
834
                        jPanel2 = new javax.swing.JPanel();
835
                        jPanel2.add(getJScrollPane1(), null);
836
                        jPanel2.add(getBtnDel(), null);
837
                        jPanel2.add(getBtnAdd(), null);
838
                        jPanel2.add(getJScrollPane5(), null);
839
                        jPanel2.setBorder(javax.swing.BorderFactory.createTitledBorder(
840
                                        null, PluginServices.getText(this, "seleccionar_capas"),
841
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
842
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
843
                        jPanel2.setBounds(-1, 5, 493, 112);
844
                }
845

    
846
                return jPanel2;
847
        }
848

    
849
        /**
850
         * This method initializes jPanel3
851
         *
852
         * @return javax.swing.JPanel
853
         */
854
        private javax.swing.JPanel getJPanel3() {
855
                if (jPanel3 == null) {
856
                        jPanel3 = new javax.swing.JPanel();
857
                        jPanel3.setLayout(null);
858
                        jPanel3.setBorder(javax.swing.BorderFactory.createTitledBorder(
859
                                        null, PluginServices.getText(this, "seleccionar_formato"),
860
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
861
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
862
                        jPanel3.setPreferredSize(new java.awt.Dimension(493, 300));
863
                        jPanel3.setLocation(-1, 122);
864
                        jPanel3.setSize(493, 101);
865
                        jPanel3.add(getJScrollPane6(), null);
866
                        jPanel3.add(getJScrollPane2(), null);
867
                }
868

    
869
                return jPanel3;
870
        }
871

    
872
        /**
873
         * DOCUMENT ME!
874
         *
875
         * @param listener
876
         */
877
        public void addWizardListener(WizardListener listener) {
878
                listenerSupport.addWizardListener(listener);
879
        }
880

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

    
890
        /**
891
         * DOCUMENT ME!
892
         *
893
         * @return
894
         */
895
        public WizardDataSource getDataSource() {
896
                return dataSource;
897
        }
898

    
899
        /**
900
         * DOCUMENT ME!
901
         *
902
         * @param source
903
         */
904
        public void setDataSource(WizardDataSource source) {
905
                dataSource = source;
906
        }
907

    
908
        /**
909
         * DOCUMENT ME!
910
         *
911
         * @return DOCUMENT ME!
912
         */
913
        public String getLayersQuery() {
914
                LayerInfo[] layers = ((LayerListModel) lstSelectedLayers.getModel()).getElements();
915

    
916
                //Nombre separado por comas de las capas
917
                String layersQuery = layers[0].name;
918

    
919
                for (int i = 1; i < layers.length; i++) {
920
                        layersQuery += ("," + layers[i].name);
921
                }
922

    
923
                return layersQuery;
924
        }
925

    
926
        /**
927
         * DOCUMENT ME!
928
         *
929
         * @return DOCUMENT ME!
930
         */
931
        public String getQueryableLayerQuery() {
932
                LayerInfo[] layers = ((LayerListModel) lstSelectedLayers.getModel()).getElements();
933

    
934
                //Nombre separado por comas de las capas
935
                String layersQuery = "";
936
                int i;
937

    
938
                for (i = 0; i < layers.length; i++) {
939
                        if (layers[i].queryable) {
940
                                layersQuery = layers[i].name;
941

    
942
                                break;
943
                        }
944
                }
945

    
946
                for (int j = i + 1; j < layers.length; j++) {
947
                        if (layers[j].queryable) {
948
                                layersQuery += ("," + layers[j].name);
949
                        }
950
                }
951

    
952
                return layersQuery;
953
        }
954

    
955
        /**
956
         * DOCUMENT ME!
957
         *
958
         * @return DOCUMENT ME!
959
         */
960
        public String getSRS() {
961
                return (String) lstSRSs.getSelectedValue();
962
        }
963

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

    
973
        /**
974
         * DOCUMENT ME!
975
         *
976
         * @return DOCUMENT ME!
977
         */
978
        public TreePath[] getSelectedLayers() {
979
                return getTreeLayers1().getSelectionPaths();
980
        }
981

    
982
        /**
983
         * DOCUMENT ME!
984
         *
985
         * @return DOCUMENT ME!
986
         */
987
        public Rectangle2D getLayersRectangle() {
988
                TreePath[] layers = getSelectedLayers();
989

    
990
                //Boundingbox de todas las capas
991
                ArrayList rectangulos = new ArrayList();
992

    
993
                Rectangle2D rect;
994

    
995
                for (int i = 0; i < layers.length; i++) {
996
                        String[] rutaCapa = new String[layers[i].getPathCount()];
997

    
998
                        for (int j = 0; j < layers[i].getPathCount(); j++) {
999
                                rutaCapa[j] = ((LayerInfo) layers[i].getPathComponent(j)).text;
1000
                        }
1001

    
1002
                        rect = dataSource.getBoundingBox(rutaCapa, getSRS());
1003

    
1004
                        if (rect != null) {
1005
                                rectangulos.add(rect);
1006
                        }
1007
                }
1008

    
1009
                rect = getRectangle((Rectangle2D.Double[]) rectangulos.toArray(
1010
                                        new Rectangle2D.Double[0]));
1011

    
1012
                return rect;
1013
        }
1014

    
1015
        /**
1016
         * Obtiene el rect?ngulo que contiene a todos los otros
1017
         *
1018
         * @param rects rectangulos
1019
         *
1020
         * @return Rectangulo que contiene a todos los demas
1021
         */
1022
        public static Rectangle2D getRectangle(Rectangle2D[] rects) {
1023
                Rectangle2D ret = rects[0];
1024

    
1025
                for (int i = 1; i < rects.length; i++) {
1026
                        ret.add(rects[i]);
1027
                }
1028

    
1029
                return ret;
1030
        }
1031

    
1032
        /**
1033
         * Devuelve el host que est? escrito en el cuadro de texto del host o null
1034
         * en caso de que no haya nada escrito o est? mal escrito
1035
         *
1036
         * @return URL del host
1037
         */
1038
        public URL getHost() {
1039
                try {
1040
                        return new URL(cmbHost.getModel().getSelectedItem().toString());
1041
                } catch (MalformedURLException e) {
1042
                        return null;
1043
                }
1044
        }
1045

    
1046
        /**
1047
         * DOCUMENT ME!
1048
         *
1049
         * @return Nombre de la capa que aparece en el TOC.
1050
         */
1051
        public String getLayerName() {
1052
                return jTxtNomCapa.getText();
1053
        }
1054

    
1055
        /**
1056
         * This method initializes jPanel4
1057
         *
1058
         * @return javax.swing.JPanel
1059
         */
1060
        private JPanel getJPanel4() {
1061
                if (jPanel4 == null) {
1062
                        jPanel4 = new JPanel();
1063
                        jPanel4.setLayout(null);
1064
                        jPanel4.setBorder(javax.swing.BorderFactory.createTitledBorder(
1065
                                        null, PluginServices.getText(this, "nombre_capa"),
1066
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
1067
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
1068
                        jPanel4.setBounds(-1, 223, 493, 48);
1069
                        jPanel4.add(getJTxtNomCapa(), null);
1070
                }
1071

    
1072
                return jPanel4;
1073
        }
1074

    
1075
        /**
1076
         * This method initializes jTextField
1077
         *
1078
         * @return javax.swing.JTextField
1079
         */
1080
        private JTextField getJTxtNomCapa() {
1081
                if (jTxtNomCapa == null) {
1082
                        jTxtNomCapa = new JTextField();
1083
                        jTxtNomCapa.setBounds(10, 19, 474, 20);
1084
                        jTxtNomCapa.setText(PluginServices.getText(this, "capaWMS"));
1085
                }
1086

    
1087
                return jTxtNomCapa;
1088
        }
1089
}
1090

    
1091
//  @jve:decl-index=0:visual-constraint="10,10"
1092
//  @jve:visual-info  decl-index=0 visual-constraint="16,10"
1093
//  @jve:visual-info  decl-index=0 visual-constraint="10,10"
1094
//  @jve:visual-info  decl-index=0 visual-constraint="10,10"
1095
//        @jve:visual-info  decl-index=0 visual-constraint="10,10"