Statistics
| Revision:

svn-gvsig-desktop / branches / gvSIG_WMSv2 / extensions / extWMS / src / com / iver / cit / gvsig / gui / wizard / WizardWMS.java @ 3377

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

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

    
53
import javax.swing.DefaultComboBoxModel;
54
import javax.swing.JPanel;
55
import javax.swing.tree.TreePath;
56

    
57
import org.apache.log4j.Logger;
58

    
59
import com.iver.andami.PluginServices;
60
import com.iver.cit.gvsig.fmap.layers.FLayer;
61
import com.iver.cit.gvsig.fmap.layers.FLyrWMS;
62
import com.iver.cit.gvsig.gui.WMSDataSourceAdapter;
63
import com.iver.cit.gvsig.gui.WizardPanel;
64
import com.iver.cit.gvsig.gui.panels.WMSParamsPanel;
65
import com.iver.cit.gvsig.gui.wizards.WizardListener;
66
import com.iver.cit.gvsig.gui.wizards.WizardListenerSupport;
67
import com.iver.utiles.NotExistInXMLEntity;
68
import com.iver.utiles.XMLEntity;
69
import com.iver.utiles.swing.JComboBox;
70

    
71

    
72
/**
73
 * DOCUMENT ME!
74
 *
75
 * @author Fernando Gonz?lez Cort?s
76
 */
77
public class WizardWMS extends WizardPanel {
78
        private static Logger logger = Logger.getLogger(WizardWMS.class.getName());
79
        private int page = 0;
80
        private boolean conectado = false;
81
        private javax.swing.JPanel jContentPane = null;
82
        private JComboBox cmbHost = null;
83
        private javax.swing.JButton btnDetalles = null;
84
        private javax.swing.JPanel jPanel = null;
85
        private javax.swing.JLabel jLabel1 = null;
86
        private javax.swing.JLabel lblTitle = null;
87
        private javax.swing.JScrollPane jScrollPane = null;
88
        private javax.swing.JTextArea txtAbstract = null;
89
        private javax.swing.JPanel panelPage1 = null;
90
        private javax.swing.JButton btnSiguiente = null;
91
        private javax.swing.JButton btnAnterior = null;
92
        private javax.swing.JPanel jPanel1 = null;
93
        private WizardListenerSupport listenerSupport = new WizardListenerSupport();
94
        private WizardDataSource dataSource;
95
        private WMSParamsPanel wmsParamsPanel = null;
96

    
97
        /**
98
         * This is the default constructor
99
         */
100
        public WizardWMS() {
101
                super();
102
                initialize();
103
        }
104

    
105
        /**
106
         * This method initializes this
107
         */
108
        private void initialize() {
109
                setTabName("WMS");
110
                
111
                this.setSize(510, 468);
112
                this.setLayout(null);
113
                this.setPreferredSize(new java.awt.Dimension(750, 420));
114
                this.setVisible(true);
115
                this.add(getPanelPage1(), null);
116
                this.add(getPanelPage2(), null);
117
                this.add(getBtnAnterior(), null);
118
                this.add(getBtnSiguiente(), null);
119
                activarVisualizarBotones();
120
        }
121

    
122

    
123
        private JPanel getPanelPage2(){
124
                if (wmsParamsPanel == null){
125
                        wmsParamsPanel = new WMSParamsPanel();
126
                        wmsParamsPanel.setListenerSupport(this.listenerSupport);
127
                        wmsParamsPanel.setBounds(15, 5, 480, 428);
128
                        
129
                }
130
                return wmsParamsPanel;
131
        }
132
        /**
133
         * DOCUMENT ME!
134
         *
135
         * @param host DOCUMENT ME!
136
         */
137
        private void addHost(String host) {
138
                host = host.trim();
139

    
140
                DefaultComboBoxModel model = (DefaultComboBoxModel) getTxtHost()
141
                                                                                                                                .getModel();
142

    
143
                if (model.getIndexOf(host) < 0) {
144
                        model.addElement(host);
145

    
146
                        PluginServices ps = PluginServices.getPluginServices(this);
147
                        XMLEntity xml = ps.getPersistentXML();
148

    
149
                        try {
150
                                String[] servers = xml.getStringArrayProperty("wms-servers");
151
                                String[] newServers = new String[servers.length + 1];
152
                                System.arraycopy(servers, 0, newServers, 0, servers.length);
153
                                newServers[servers.length] = host;
154
                                xml.putProperty("wms-servers", newServers);
155
                        } catch (NotExistInXMLEntity e) {
156
                                xml.putProperty("wms-servers", new String[] { host });
157
                        }
158

    
159
                        ps.setPersistentXML(xml);
160
                }
161
        }
162

    
163
        /**
164
         * DOCUMENT ME!
165
         */
166
        private void rellenarControles() {
167
                try {
168
                        String host = cmbHost.getModel().getSelectedItem().toString();
169
                        URL url = new URL(host);
170
                        WizardData data = dataSource.detalles(url);
171
                        lblTitle.setText(data.getTitle());
172
                        txtAbstract.setText(data.getAbstract());
173
                        
174
                        addHost(host);
175
                        wmsParamsPanel.setWizardData(data);
176
                        wmsParamsPanel.setDataSource(dataSource);
177
                        conectado = true;
178
                        activarVisualizarBotones();
179
                } catch (Exception e) {
180
                        listenerSupport.callError(e);
181
                }
182
        }
183

    
184
        /**
185
         * DOCUMENT ME!
186
         */
187
        private void activarVisualizarBotones() {
188
                if (page == 0) {
189
                        getBtnAnterior().setEnabled(false);
190
                        getBtnSiguiente().setVisible(true);
191

    
192
                        if (conectado) {
193
                                getBtnSiguiente().setEnabled(true);
194
                        } else {
195
                                getBtnSiguiente().setEnabled(false);
196
                        }
197
                } else if (page < wmsParamsPanel.getNumTabs()) {
198
                        getBtnSiguiente().setEnabled(true);
199
                        getBtnSiguiente().setVisible(true);
200
                        getBtnAnterior().setEnabled(true);
201
                        getBtnAnterior().setVisible(true);
202
                        if (wmsParamsPanel.nextPageEnabled()==-1){
203
                            getBtnSiguiente().setEnabled(false);
204
                        }
205
                        listenerSupport.callStateChanged(wmsParamsPanel.isCorretlyConfigured());
206
                } else if (page == wmsParamsPanel.getNumTabs()) {
207
                        getBtnSiguiente().setVisible(false);
208
                        getBtnSiguiente().setEnabled(false);
209
                        listenerSupport.callStateChanged(wmsParamsPanel 
210
                                        .isCorretlyConfigured());
211
                }
212
        }
213

    
214
        /**
215
         * This method initializes txtHost
216
         *
217
         * @return javax.swing.JTextField
218
         */
219
        private javax.swing.JComboBox getTxtHost() {
220
                if (cmbHost == null) {
221
                        cmbHost = new JComboBox();
222
                        cmbHost.setModel(new DefaultComboBoxModel());
223
                        cmbHost.setPreferredSize(new java.awt.Dimension(350, 20));
224
                        cmbHost.setBounds(11, 26, 454, 20);
225
                        cmbHost.setEditable(true);
226

    
227
                        XMLEntity xml = PluginServices.getPluginServices(this)
228
                                                                                  .getPersistentXML();
229
                        if (xml == null)
230
                                xml = new XMLEntity();
231
                        
232
                        if (!xml.contains("wms-servers")) {
233
                                String[] servers = new String[8];
234
                servers[0] = "http://www.idee.es/wms/IDEE-Base/IDEE-Base";
235
                servers[1] = "http://wms.jpl.nasa.gov/wms.cgi?";
236
                servers[2] = "http://www2.dmsolutions.ca/cgi-bin/mswms_gmap?";
237
                                servers[3] = "http://demo.deegree.org:8080/deegree/wms";
238
                servers[4] = "http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_patricova";
239
                servers[5] = "http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_parque_fondo_prug";
240
                servers[6] = "http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_pgof";
241
                servers[7] = "http://orto.cth.gva.es/wmsconnector/com.esri.wms.Esrimap/wms_urbanismo_tematicos";
242

    
243
                                xml.putProperty("wms-servers", servers);
244
                        }
245

    
246
                        try {
247
                                String[] servers = xml.getStringArrayProperty("wms-servers");
248

    
249
                                for (int i = 0; i < servers.length; i++) {
250
                                        ((DefaultComboBoxModel) cmbHost.getModel()).addElement(servers[i]);
251
                                }
252
                        } catch (NotExistInXMLEntity e) {
253
                        }
254
                }
255

    
256
                return cmbHost;
257
        }
258

    
259
        /**
260
         * This method initializes btnDetalles
261
         *
262
         * @return javax.swing.JButton
263
         */
264
        private javax.swing.JButton getBtnDetalles() {
265
                if (btnDetalles == null) {
266
                        btnDetalles = new javax.swing.JButton();
267
                        btnDetalles.setPreferredSize(new java.awt.Dimension(100, 20));
268
                        btnDetalles.setBounds(366, 50, 100, 20);
269
                        btnDetalles.setText(PluginServices.getText(this, "detalles"));
270
                        btnDetalles.addActionListener(new java.awt.event.ActionListener() {
271
                                        public void actionPerformed(java.awt.event.ActionEvent e) {
272
                                                rellenarControles();
273
                                        }
274
                                });
275
                }
276

    
277
                return btnDetalles;
278
        }
279

    
280
        /**
281
         * This method initializes jPanel
282
         *
283
         * @return javax.swing.JPanel
284
         */
285
        private javax.swing.JPanel getJPanel() {
286
                if (jPanel == null) {
287
                        jPanel = new javax.swing.JPanel();
288
                        jPanel.setLayout(null);
289
                        jPanel.setPreferredSize(new java.awt.Dimension(470, 130));
290
                        jPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(
291
                                        null, PluginServices.getText(this, "descripcion"),
292
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
293
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
294
                        jPanel.setBounds(2, 96, 477, 324);
295
                        jPanel.add(getJLabel1(), null);
296
                        jPanel.add(getLblTitle(), null);
297
                        jPanel.add(getJScrollPane(), null);
298
                }
299

    
300
                return jPanel;
301
        }
302

    
303
        /**
304
         * This method initializes jLabel1
305
         *
306
         * @return javax.swing.JLabel
307
         */
308
        private javax.swing.JLabel getJLabel1() {
309
                if (jLabel1 == null) {
310
                        jLabel1 = new javax.swing.JLabel();
311
                        jLabel1.setText(PluginServices.getText(this, "nombre") + ":");
312
                        jLabel1.setBounds(37, 26, 40, 15);
313
                }
314

    
315
                return jLabel1;
316
        }
317

    
318
        /**
319
         * This method initializes lblTitle
320
         *
321
         * @return javax.swing.JLabel
322
         */
323
        private javax.swing.JLabel getLblTitle() {
324
                if (lblTitle == null) {
325
                        lblTitle = new javax.swing.JLabel();
326
                        lblTitle.setText("-");
327
                        lblTitle.setPreferredSize(new java.awt.Dimension(350, 16));
328
                        lblTitle.setBounds(82, 26, 350, 16);
329
                }
330

    
331
                return lblTitle;
332
        }
333

    
334
        /**
335
         * This method initializes jScrollPane
336
         *
337
         * @return javax.swing.JScrollPane
338
         */
339
        private javax.swing.JScrollPane getJScrollPane() {
340
                if (jScrollPane == null) {
341
                        jScrollPane = new javax.swing.JScrollPane();
342
                        jScrollPane.setViewportView(getTxtAbstract());
343
                        jScrollPane.setPreferredSize(new java.awt.Dimension(450, 60));
344
                        jScrollPane.setBounds(10, 47, 450, 267);
345
                }
346

    
347
                return jScrollPane;
348
        }
349

    
350
        /**
351
         * This method initializes txtAbstract
352
         *
353
         * @return javax.swing.JTextArea
354
         */
355
        private javax.swing.JTextArea getTxtAbstract() {
356
                if (txtAbstract == null) {
357
                        txtAbstract = new javax.swing.JTextArea();
358
                        txtAbstract.setWrapStyleWord(true);
359
                        txtAbstract.setColumns(30);
360
                        txtAbstract.setLineWrap(true);
361
                }
362

    
363
                return txtAbstract;
364
        }
365

    
366
        /**
367
         * This method initializes panelPage1
368
         *
369
         * @return javax.swing.JPanel
370
         */
371
        private javax.swing.JPanel getPanelPage1() {
372
                if (panelPage1 == null) {
373
                        panelPage1 = new javax.swing.JPanel();
374
                        panelPage1.setLayout(null);
375
                        panelPage1.setPreferredSize(new java.awt.Dimension(480, 220));
376
                        panelPage1.setVisible(true);
377
                        panelPage1.setBounds(15, 5, 480, 427);
378
                        panelPage1.add(getJPanel1(), null);
379
                        panelPage1.add(getJPanel(), null);
380
                }
381

    
382
                return panelPage1;
383
        }
384

    
385
        /**
386
         * This method initializes btnSiguiente
387
         *
388
         * @return javax.swing.JButton
389
         */
390
        private javax.swing.JButton getBtnSiguiente() {
391
                if (btnSiguiente == null) {
392
                        btnSiguiente = new javax.swing.JButton();
393
                        btnSiguiente.setPreferredSize(new java.awt.Dimension(100, 30));
394
                        btnSiguiente.setBounds(395, 444, 100, 20);
395
                        btnSiguiente.setText(PluginServices.getText(this, "siguiente"));
396
                        btnSiguiente.addActionListener(new java.awt.event.ActionListener() {
397
                                        public void actionPerformed(java.awt.event.ActionEvent e) {
398
                                                if (page > 0) {
399
                                                        // si page es mayor que cero, vamos enfocando las
400
                                                        // sucesivas SOLAPAS del WCSParamsPanel
401
                                                        wmsParamsPanel.avanzaTab();
402
                                                        page = wmsParamsPanel.getIndiceSolapaActual();
403
                                                }
404
                                                page++;
405
                                                getPanelPage1().setVisible(false);
406
                                                getPanelPage2().setVisible(true);
407
                                                activarVisualizarBotones();
408
                                        }
409
                                });
410
                }
411
                return btnSiguiente;
412
        }
413

    
414
        /**
415
         * This method initializes btnAnterior
416
         *
417
         * @return javax.swing.JButton
418
         */
419
        private javax.swing.JButton getBtnAnterior() {
420
                if (btnAnterior == null) {
421
                        btnAnterior = new javax.swing.JButton();
422
                        btnAnterior.setText(PluginServices.getText(this, "anterior"));
423
                        btnAnterior.setBounds(292, 444, 100, 20);
424
                        btnAnterior.setPreferredSize(new java.awt.Dimension(100, 30));
425
                        btnAnterior.addActionListener(new java.awt.event.ActionListener() {
426
                                public void actionPerformed(java.awt.event.ActionEvent e) {
427
                                        page --;
428
                                        if (page > 0) {
429
                                                // Tenemos que retroceder en el wcsParamsPanel
430
                                                wmsParamsPanel.retrocedeTab();
431
                                                page = wmsParamsPanel.getIndiceSolapaActual() + 1;
432
                                                activarVisualizarBotones();
433
                                        } else if (page==0){
434
                                                activarVisualizarBotones();
435
                                                page = 1;
436
                                                //wmsParamsPanel.limpiaWizard();
437
                                                getLblTitle().setText("-");
438
                                                getTxtAbstract().setText("");
439
                                                wmsParamsPanel.retrocedeTab();
440
                                                getPanelPage1().setVisible(true);
441
                                                getPanelPage2().setVisible(false);
442
                                                getBtnSiguiente().setEnabled(false);
443
                                                conectado = false; 
444
                                        }
445
                                        listenerSupport.callStateChanged(wmsParamsPanel.isCorretlyConfigured());
446
                                }
447
                        });
448
                }
449

    
450
                return btnAnterior;
451
        }
452

    
453
        /**
454
         * This method initializes jPanel1
455
         *
456
         * @return javax.swing.JPanel
457
         */
458
        private javax.swing.JPanel getJPanel1() {
459
                if (jPanel1 == null) {
460
                        jPanel1 = new javax.swing.JPanel();
461
                        jPanel1.setLayout(null);
462
                        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(
463
                                        null, PluginServices.getText(this, "servidor"),
464
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
465
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
466
                        jPanel1.setBounds(2, 5, 477, 85);
467
                        jPanel1.add(getTxtHost(), null);
468
                        jPanel1.add(getBtnDetalles(), null);
469
                }
470

    
471
                return jPanel1;
472
        }
473

    
474
        /**
475
         * DOCUMENT ME!
476
         *
477
         * @param listener
478
         */
479
        public void addWizardListener(WizardListener listener) {
480
                listenerSupport.addWizardListener(listener);
481
        }
482

    
483
        /**
484
         * DOCUMENT ME!
485
         *
486
         * @param listener
487
         */
488
        public void removeWizardListener(WizardListener listener) {
489
                listenerSupport.removeWizardListener(listener);
490
        }
491

    
492
        /**
493
         * DOCUMENT ME!
494
         *
495
         * @return
496
         */
497
        public WizardDataSource getDataSource() {
498
                return dataSource;
499
        }
500

    
501
        /**
502
         * DOCUMENT ME!
503
         *
504
         * @param source
505
         */
506
        public void setDataSource(WizardDataSource source) {
507
                dataSource = source;
508
        }
509

    
510

    
511
        /**
512
         * DOCUMENT ME!
513
         *
514
         * @return DOCUMENT ME!
515
         */
516
        public String getSRS() {
517
                return (String) wmsParamsPanel.getSRS();
518
        }
519

    
520
        /**
521
         * DOCUMENT ME!
522
         *
523
         * @return DOCUMENT ME!
524
         */
525
        public String getFormat() {
526
                return (String) wmsParamsPanel.getFormat();
527
        }
528

    
529
        /**
530
         * DOCUMENT ME!
531
         *
532
         * @return DOCUMENT ME!
533
         */
534
        public TreePath[] getSelectedLayers() {
535
                return wmsParamsPanel.getSelectedLayers();
536
        }
537

    
538
        /**
539
         * DOCUMENT ME!
540
         *
541
         * @return DOCUMENT ME!
542
         */
543
        public Rectangle2D getLayersRectangle() {
544
                return wmsParamsPanel.getLayersRectangle();
545
        }
546

    
547

    
548

    
549
        /**
550
         * Devuelve el host que est? escrito en el cuadro de texto del host o null
551
         * en caso de que no haya nada escrito o est? mal escrito
552
         *
553
         * @return URL del host
554
         */
555
        public URL getHost() {
556
                try {
557
                        return new URL(cmbHost.getModel().getSelectedItem().toString());
558
                } catch (MalformedURLException e) {
559
                        return null;
560
                }
561
        }
562

    
563
        /**
564
         * DOCUMENT ME!
565
         *
566
         * @return Nombre de la capa que aparece en el TOC.
567
         */
568
        public String getLayerName() {
569
                return wmsParamsPanel.getLayerName();
570
        }
571

    
572

    
573
        /* (non-Javadoc)
574
         * @see com.iver.cit.gvsig.gui.WizardPanel#initWizard()
575
         */
576
        public void initWizard() {
577
                setDataSource(new WMSDataSourceAdapter()); 
578
        }
579

    
580
        /* (non-Javadoc)
581
         * @see com.iver.cit.gvsig.gui.WizardPanel#execute()
582
         */
583
        public void execute() {
584
        }
585

    
586
        /**
587
         * DOCUMENT ME!
588
         *
589
         * @return DOCUMENT ME!
590
         */
591
        private String getLayersQuery() {
592
                return wmsParamsPanel.getLayersQuery();
593
        }
594
        
595
        /* (non-Javadoc)
596
         * @see com.iver.cit.gvsig.gui.WizardPanel#getLayer()
597
         */
598
        public FLayer getLayer() {
599
                WizardWMS wms = this;
600
                FLyrWMS layer = new FLyrWMS();
601
                layer.setHost(wms.getHost());
602
                layer.setFullExtent(wms.getLayersRectangle());
603
                layer.setFormat(wms.getFormat());
604
                layer.setLayerQuery(wms.getLayersQuery());
605
                layer.setInfoLayerQuery(wms.getQueryableLayerQuery());
606
                layer.setSRS(wms.getSRS());
607
                layer.setName(wms.getLayerName());
608
                return layer;
609
        }
610

    
611
        
612
        /**
613
         * DOCUMENT ME!
614
         *
615
         * @return DOCUMENT ME!
616
         */
617
        public String getQueryableLayerQuery() {
618
                return wmsParamsPanel.getQueryableLayerQuery();
619
        }
620
}  //  @jve:decl-index=0:visual-constraint="10,10"