Statistics
| Revision:

root / branches / gvSIG_WMSv2 / extensions / extWMS / src / com / iver / cit / gvsig / gui / wizard / WizardWMS.java @ 3162

History | View | Annotate | Download (14.9 KB)

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

    
73

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

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

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

    
124

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

    
142
                DefaultComboBoxModel model = (DefaultComboBoxModel) getTxtHost()
143
                                                                                                                                .getModel();
144

    
145
                if (model.getIndexOf(host) < 0) {
146
                        model.addElement(host);
147

    
148
                        PluginServices ps = PluginServices.getPluginServices(this);
149
                        XMLEntity xml = ps.getPersistentXML();
150

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

    
161
                        ps.setPersistentXML(xml);
162
                }
163
        }
164

    
165
        /**
166
         * DOCUMENT ME!
167
         */
168
        private void rellenarControles() {
169
                try {
170
                        String host = cmbHost.getModel().getSelectedItem().toString();
171

    
172
                        WizardData data = dataSource.detalles(new URL(host));
173
                        lblTitle.setText(data.getTitle());
174
                        txtAbstract.setText(data.getAbstract());
175
                        
176
                        addHost(host);
177
                        wmsParamsPanel.setWizardData(data);
178
                        wmsParamsPanel.setDataSource(dataSource);
179
                        conectado = true;
180
                        activarVisualizarBotones();
181
                } catch (Exception e) {
182
                        listenerSupport.callError(e);
183
                }
184
        }
185

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

    
194
                        if (conectado) {
195
                                getBtnSiguiente().setEnabled(true);
196
                        } else {
197
                                getBtnSiguiente().setEnabled(false);
198
                        }
199
                } else if (page == 1) {
200
                        getBtnAnterior().setEnabled(true);
201
                        getBtnSiguiente().setVisible(false);
202
                }
203
        }
204

    
205
        /**
206
         * This method initializes txtHost
207
         *
208
         * @return javax.swing.JTextField
209
         */
210
        private javax.swing.JComboBox getTxtHost() {
211
                if (cmbHost == null) {
212
                        cmbHost = new JComboBox();
213
                        cmbHost.setModel(new DefaultComboBoxModel());
214
                        cmbHost.setPreferredSize(new java.awt.Dimension(350, 20));
215
                        cmbHost.setBounds(11, 26, 454, 20);
216
                        cmbHost.setEditable(true);
217

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

    
234
                                xml.putProperty("wms-servers", servers);
235
                        }
236

    
237
                        try {
238
                                String[] servers = xml.getStringArrayProperty("wms-servers");
239

    
240
                                for (int i = 0; i < servers.length; i++) {
241
                                        ((DefaultComboBoxModel) cmbHost.getModel()).addElement(servers[i]);
242
                                }
243
                        } catch (NotExistInXMLEntity e) {
244
                        }
245
                }
246

    
247
                return cmbHost;
248
        }
249

    
250
        /**
251
         * This method initializes btnDetalles
252
         *
253
         * @return javax.swing.JButton
254
         */
255
        private javax.swing.JButton getBtnDetalles() {
256
                if (btnDetalles == null) {
257
                        btnDetalles = new javax.swing.JButton();
258
                        btnDetalles.setPreferredSize(new java.awt.Dimension(100, 20));
259
                        btnDetalles.setBounds(366, 50, 100, 20);
260
                        btnDetalles.setText(PluginServices.getText(this, "detalles"));
261
                        btnDetalles.addActionListener(new java.awt.event.ActionListener() {
262
                                        public void actionPerformed(java.awt.event.ActionEvent e) {
263
                                                rellenarControles();
264
                                        }
265
                                });
266
                }
267

    
268
                return btnDetalles;
269
        }
270

    
271
        /**
272
         * This method initializes jPanel
273
         *
274
         * @return javax.swing.JPanel
275
         */
276
        private javax.swing.JPanel getJPanel() {
277
                if (jPanel == null) {
278
                        jPanel = new javax.swing.JPanel();
279
                        jPanel.setLayout(null);
280
                        jPanel.setPreferredSize(new java.awt.Dimension(470, 130));
281
                        jPanel.setBorder(javax.swing.BorderFactory.createTitledBorder(
282
                                        null, PluginServices.getText(this, "descripcion"),
283
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
284
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
285
                        jPanel.setBounds(2, 96, 477, 324);
286
                        jPanel.add(getJLabel1(), null);
287
                        jPanel.add(getLblTitle(), null);
288
                        jPanel.add(getJScrollPane(), null);
289
                }
290

    
291
                return jPanel;
292
        }
293

    
294
        /**
295
         * This method initializes jLabel1
296
         *
297
         * @return javax.swing.JLabel
298
         */
299
        private javax.swing.JLabel getJLabel1() {
300
                if (jLabel1 == null) {
301
                        jLabel1 = new javax.swing.JLabel();
302
                        jLabel1.setText(PluginServices.getText(this, "nombre") + ":");
303
                        jLabel1.setBounds(37, 26, 40, 15);
304
                }
305

    
306
                return jLabel1;
307
        }
308

    
309
        /**
310
         * This method initializes lblTitle
311
         *
312
         * @return javax.swing.JLabel
313
         */
314
        private javax.swing.JLabel getLblTitle() {
315
                if (lblTitle == null) {
316
                        lblTitle = new javax.swing.JLabel();
317
                        lblTitle.setText("-");
318
                        lblTitle.setPreferredSize(new java.awt.Dimension(350, 16));
319
                        lblTitle.setBounds(82, 26, 350, 16);
320
                }
321

    
322
                return lblTitle;
323
        }
324

    
325
        /**
326
         * This method initializes jScrollPane
327
         *
328
         * @return javax.swing.JScrollPane
329
         */
330
        private javax.swing.JScrollPane getJScrollPane() {
331
                if (jScrollPane == null) {
332
                        jScrollPane = new javax.swing.JScrollPane();
333
                        jScrollPane.setViewportView(getTxtAbstract());
334
                        jScrollPane.setPreferredSize(new java.awt.Dimension(450, 60));
335
                        jScrollPane.setBounds(10, 47, 450, 267);
336
                }
337

    
338
                return jScrollPane;
339
        }
340

    
341
        /**
342
         * This method initializes txtAbstract
343
         *
344
         * @return javax.swing.JTextArea
345
         */
346
        private javax.swing.JTextArea getTxtAbstract() {
347
                if (txtAbstract == null) {
348
                        txtAbstract = new javax.swing.JTextArea();
349
                        txtAbstract.setWrapStyleWord(true);
350
                        txtAbstract.setColumns(30);
351
                        txtAbstract.setLineWrap(true);
352
                }
353

    
354
                return txtAbstract;
355
        }
356

    
357
        /**
358
         * This method initializes panelPage1
359
         *
360
         * @return javax.swing.JPanel
361
         */
362
        private javax.swing.JPanel getPanelPage1() {
363
                if (panelPage1 == null) {
364
                        panelPage1 = new javax.swing.JPanel();
365
                        panelPage1.setLayout(null);
366
                        panelPage1.setPreferredSize(new java.awt.Dimension(480, 220));
367
                        panelPage1.setVisible(true);
368
                        panelPage1.setBounds(15, 5, 480, 427);
369
                        panelPage1.add(getJPanel1(), null);
370
                        panelPage1.add(getJPanel(), null);
371
                }
372

    
373
                return panelPage1;
374
        }
375

    
376
        /**
377
         * This method initializes btnSiguiente
378
         *
379
         * @return javax.swing.JButton
380
         */
381
        private javax.swing.JButton getBtnSiguiente() {
382
                if (btnSiguiente == null) {
383
                        btnSiguiente = new javax.swing.JButton();
384
                        btnSiguiente.setPreferredSize(new java.awt.Dimension(100, 30));
385
                        btnSiguiente.setBounds(395, 444, 100, 20);
386
                        btnSiguiente.setText(PluginServices.getText(this, "siguiente"));
387
                        btnSiguiente.addActionListener(new java.awt.event.ActionListener() {
388
                                        public void actionPerformed(java.awt.event.ActionEvent e) {
389
                                                page++;
390
                                                getPanelPage1().setVisible(false);
391
                                                getPanelPage2().setVisible(true);
392
                                                activarVisualizarBotones();
393
                                        }
394
                                });
395
                }
396
                return btnSiguiente;
397
        }
398

    
399
        /**
400
         * This method initializes btnAnterior
401
         *
402
         * @return javax.swing.JButton
403
         */
404
        private javax.swing.JButton getBtnAnterior() {
405
                if (btnAnterior == null) {
406
                        btnAnterior = new javax.swing.JButton();
407
                        btnAnterior.setText(PluginServices.getText(this, "anterior"));
408
                        btnAnterior.setBounds(292, 444, 100, 20);
409
                        btnAnterior.setPreferredSize(new java.awt.Dimension(100, 30));
410
                        btnAnterior.addActionListener(new java.awt.event.ActionListener() {
411
                                        public void actionPerformed(java.awt.event.ActionEvent e) {
412
                                                page--;
413
                                                getPanelPage1().setVisible(true);
414
                                                getPanelPage2().setVisible(false);
415
                                                activarVisualizarBotones();
416
                                        }
417
                                });
418
                }
419

    
420
                return btnAnterior;
421
        }
422

    
423
        /**
424
         * This method initializes jPanel1
425
         *
426
         * @return javax.swing.JPanel
427
         */
428
        private javax.swing.JPanel getJPanel1() {
429
                if (jPanel1 == null) {
430
                        jPanel1 = new javax.swing.JPanel();
431
                        jPanel1.setLayout(null);
432
                        jPanel1.setBorder(javax.swing.BorderFactory.createTitledBorder(
433
                                        null, PluginServices.getText(this, "servidor"),
434
                                        javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
435
                                        javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null));
436
                        jPanel1.setBounds(2, 5, 477, 85);
437
                        jPanel1.add(getTxtHost(), null);
438
                        jPanel1.add(getBtnDetalles(), null);
439
                }
440

    
441
                return jPanel1;
442
        }
443

    
444
        /**
445
         * DOCUMENT ME!
446
         *
447
         * @param listener
448
         */
449
        public void addWizardListener(WizardListener listener) {
450
                listenerSupport.addWizardListener(listener);
451
        }
452

    
453
        /**
454
         * DOCUMENT ME!
455
         *
456
         * @param listener
457
         */
458
        public void removeWizardListener(WizardListener listener) {
459
                listenerSupport.removeWizardListener(listener);
460
        }
461

    
462
        /**
463
         * DOCUMENT ME!
464
         *
465
         * @return
466
         */
467
        public WizardDataSource getDataSource() {
468
                return dataSource;
469
        }
470

    
471
        /**
472
         * DOCUMENT ME!
473
         *
474
         * @param source
475
         */
476
        public void setDataSource(WizardDataSource source) {
477
                dataSource = source;
478
        }
479

    
480

    
481
        /**
482
         * DOCUMENT ME!
483
         *
484
         * @return DOCUMENT ME!
485
         */
486
        public String getSRS() {
487
                return (String) wmsParamsPanel.getSRS();
488
        }
489

    
490
        /**
491
         * DOCUMENT ME!
492
         *
493
         * @return DOCUMENT ME!
494
         */
495
        public String getFormat() {
496
                return (String) wmsParamsPanel.getFormat();
497
        }
498

    
499
        /**
500
         * DOCUMENT ME!
501
         *
502
         * @return DOCUMENT ME!
503
         */
504
        public TreePath[] getSelectedLayers() {
505
                return wmsParamsPanel.getSelectedLayers();
506
        }
507

    
508
        /**
509
         * DOCUMENT ME!
510
         *
511
         * @return DOCUMENT ME!
512
         */
513
        public Rectangle2D getLayersRectangle() {
514
                return wmsParamsPanel.getLayersRectangle();
515
        }
516

    
517

    
518

    
519
        /**
520
         * Devuelve el host que est? escrito en el cuadro de texto del host o null
521
         * en caso de que no haya nada escrito o est? mal escrito
522
         *
523
         * @return URL del host
524
         */
525
        public URL getHost() {
526
                try {
527
                        return new URL(cmbHost.getModel().getSelectedItem().toString());
528
                } catch (MalformedURLException e) {
529
                        return null;
530
                }
531
        }
532

    
533
        /**
534
         * DOCUMENT ME!
535
         *
536
         * @return Nombre de la capa que aparece en el TOC.
537
         */
538
        public String getLayerName() {
539
                return wmsParamsPanel.getLayerName();
540
        }
541

    
542

    
543
        /* (non-Javadoc)
544
         * @see com.iver.cit.gvsig.gui.WizardPanel#initWizard()
545
         */
546
        public void initWizard() {
547
                setDataSource(new WMSDataSourceAdapter()); 
548
        }
549

    
550
        /* (non-Javadoc)
551
         * @see com.iver.cit.gvsig.gui.WizardPanel#execute()
552
         */
553
        public void execute() {
554
        }
555

    
556
        /**
557
         * DOCUMENT ME!
558
         *
559
         * @return DOCUMENT ME!
560
         */
561
        private String getLayersQuery() {
562
                return wmsParamsPanel.getLayersQuery();
563
        }
564
        
565
        /* (non-Javadoc)
566
         * @see com.iver.cit.gvsig.gui.WizardPanel#getLayer()
567
         */
568
        public FLayer getLayer() {
569
                WizardWMS wms = this;
570
                FLyrWMS layer = new FLyrWMS();
571
                layer.setHost(wms.getHost());
572
                layer.setFullExtent(wms.getLayersRectangle());
573
                layer.setFormat(wms.getFormat());
574
                layer.setLayerQuery(wms.getLayersQuery());
575
                layer.setInfoLayerQuery(wms.getQueryableLayerQuery());
576
                layer.setSRS(wms.getSRS());
577
                layer.setName(wms.getLayerName());
578
                return layer;
579
        }
580

    
581
        
582
        /**
583
         * DOCUMENT ME!
584
         *
585
         * @return DOCUMENT ME!
586
         */
587
        public String getQueryableLayerQuery() {
588
                return wmsParamsPanel.getQueryableLayerQuery();
589
        }
590
}  //  @jve:decl-index=0:visual-constraint="10,10"