Statistics
| Revision:

root / trunk / applications / appgvSIG / src / com / iver / cit / gvsig / gui / FOpenDialog.java @ 402

History | View | Annotate | Download (22.6 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
package com.iver.cit.gvsig.gui;
8

    
9
import java.awt.Color;
10
import java.awt.Component;
11
import java.io.File;
12
import java.util.ArrayList;
13

    
14
import javax.swing.BorderFactory;
15
import javax.swing.DefaultListModel;
16
import javax.swing.JDialog;
17
import javax.swing.JFileChooser;
18
import javax.swing.JList;
19
import javax.swing.JPanel;
20
import javax.swing.filechooser.FileFilter;
21

    
22
import com.iver.cit.gvsig.gui.wms.WMSWizard;
23
import com.iver.cit.gvsig.gui.wms.WizardListener;
24
import com.iver.mdiApp.App;
25
import com.iver.mdiApp.Utilities;
26
import com.iver.mdiApp.plugins.files.SelectedFile;
27
import com.iver.mdiApp.ui.MDIApplicationContext;
28
import com.iver.mdiApp.ui.MDIManager.View;
29
import com.iver.mdiApp.ui.MDIManager.ViewInfo;
30

    
31

    
32
/**
33
 * Di?logo para cargar las dieferentes capas a la vista.
34
 *
35
 * @author Vicente Caballero Navarro
36
 */
37
public class FOpenDialog extends JPanel implements View {
38
        // TODO LWS ?los m_Files ... ?tendr?an que ser GeoFiles (Projected y dem?s)?
39
    private ArrayList m_Files;
40
    // private com.iver.cit.gvsig.gui.View view;
41
    // private FMap m_fmap;
42
    private SelectedFile[] selectedFile = null;
43

    
44
    //private javax.swing.JDialog jDialog = null;  //  @jve:visual-info  decl-index=0 visual-constraint="19,27"
45
    private javax.swing.JPanel jContentPane = null; //  @jve:visual-info  decl-index=0 visual-constraint="371,10"
46
    private javax.swing.JTabbedPane jTabbedPane = null;
47
    private javax.swing.JPanel pprimero = null;
48
    private javax.swing.JPanel psegundo = null;
49
    private javax.swing.JPanel pbotones = null;
50
    private javax.swing.JButton bAceptar = null;
51
    private javax.swing.JButton bCancelar = null;
52
    private javax.swing.JPanel jPanel2 = null;
53
    private javax.swing.JButton bExaminar = null;
54
    private javax.swing.JPanel jPanel = null;
55
    private JList jListLayers = null;
56
    private WMSWizard wiz;
57
    
58
    private DefaultListModel m_lstModel;
59
    private ViewInfo m_viewinfo = null;
60

    
61
    /**
62
     * Creates a new FOpenDialog object.
63
     *
64
     * @param view Vista que vamos a refrescar
65
     * @param mapControl MapControl que recibe la capa (te puede interesar
66
     *        a?adirla al principal o al Overview.
67
     */
68
    public FOpenDialog() {
69
        this.add(getJContentPane());
70
        this.setSize(getJContentPane().getSize());
71
        m_Files = new ArrayList();
72
        
73
        // Cada vez que se abre, se borran las capas que pudiera haber.
74
        m_lstModel = new DefaultListModel(); 
75
    }
76

    
77
    /**
78
     * This method initializes this
79
     */
80
    private void initialize() {
81
        this.setSize(343, 269);
82
    }
83

    
84
    /**
85
     * DOCUMENT ME!
86
     *
87
     * @return DOCUMENT ME!
88
     */
89
    public File[] getFiles() {
90
        File[] fAux = new File[m_Files.size()];
91
        for (int i=0; i < m_Files.size(); i++)
92
        {
93
                fAux[i] = (File) m_Files.get(i);
94
        }
95
        return fAux;
96
    }
97

    
98
    /**
99
     * This method initializes jContentPane
100
     *
101
     * @return javax.swing.JPanel
102
     */
103
    private javax.swing.JPanel getJContentPane() {
104
        if (jContentPane == null) {
105
            jContentPane = new javax.swing.JPanel();
106
            jContentPane.setLayout(null);
107
            jContentPane.setSize(519, 347);
108
            jContentPane.setPreferredSize(new java.awt.Dimension(520,360));
109
            jContentPane.add(getJTabbedPane(), null);
110
            jContentPane.add(getPbotones(), null);
111
        }
112

    
113
        return jContentPane;
114
    }
115

    
116
    /**
117
     * This method initializes jTabbedPane
118
     *
119
     * @return javax.swing.JTabbedPane
120
     */
121
    private javax.swing.JTabbedPane getJTabbedPane() {
122
        if (jTabbedPane == null) {
123
            jTabbedPane = new javax.swing.JTabbedPane();
124
            jTabbedPane.setBounds(0, 0, 519, 352);
125
            jTabbedPane.addTab(Utilities.getMessage(this,"Archivos_de_Disco"), null, getPprimero(), null);
126
            jTabbedPane.addTab(Utilities.getMessage(this,"WMS"), null, getPsegundo(), null);
127
        }
128

    
129
        return jTabbedPane;
130
    }
131

    
132
    /**
133
     * This method initializes pprimero
134
     *
135
     * @return javax.swing.JPanel
136
     */
137
    private javax.swing.JPanel getPprimero() {
138
        if (pprimero == null) {
139
            pprimero = new javax.swing.JPanel();
140
            pprimero.setLayout(null);
141
            pprimero.setBorder(javax.swing.BorderFactory.createBevelBorder(
142
                    javax.swing.border.BevelBorder.RAISED));
143
            pprimero.add(getJPanel2(), null);
144
            pprimero.add(getJPanel(), null);
145
        }
146

    
147
        return pprimero;
148
    }
149

    
150
    /**
151
     * This method initializes psegundo
152
     *
153
     * @return javax.swing.JPanel
154
     */
155
    private javax.swing.JPanel getPsegundo() {
156
        if (psegundo == null) {
157
            wiz = new WMSWizard();
158
            wiz.addWizardListener(new MyWMSWizardListener());
159
            wiz.setDataSource(new WMSDataSourceAdapter());
160
            psegundo = wiz;
161
        }
162

    
163
        return psegundo;
164
    }
165

    
166
    /**
167
     * This method initializes pbotones
168
     *
169
     * @return javax.swing.JPanel
170
     */
171
    private javax.swing.JPanel getPbotones() {
172
        if (pbotones == null) {
173
            pbotones = new javax.swing.JPanel();
174
            pbotones.setBounds(0, 318, 519, 37);
175
        }
176

    
177
        return pbotones;
178
    }
179

    
180
    /**
181
     * This method initializes bAceptar
182
     *
183
     * @return javax.swing.JButton
184
     */
185
    private javax.swing.JButton getBAceptar() {
186
        if (bAceptar == null) {
187
            bAceptar = new javax.swing.JButton();
188
            bAceptar.setText(Utilities.getMessage(this,"Aceptar"));
189
            bAceptar.setPreferredSize(new java.awt.Dimension(110, 25));
190
            bAceptar.addActionListener(new java.awt.event.ActionListener() {
191
                    public void actionPerformed(java.awt.event.ActionEvent e) {
192
                        if (App.instance != null) {
193
                            App.instance.getMDIContext().closeView(FOpenDialog.this);
194
                        } else {
195
                            ((JDialog) (getParent().getParent().getParent()
196
                                            .getParent())).dispose();
197
                        }
198
                    }
199
                });
200
        }
201

    
202
        return bAceptar;
203
    }
204

    
205
    /**
206
     * This method initializes bCancelar
207
     *
208
     * @return javax.swing.JButton
209
     */
210
    private javax.swing.JButton getBCancelar() {
211
        if (bCancelar == null) {
212
            bCancelar = new javax.swing.JButton();
213
            bCancelar.setText(Utilities.getMessage(this,"Cancelar"));
214
            bCancelar.setPreferredSize(new java.awt.Dimension(110, 25));
215
            bCancelar.addActionListener(new java.awt.event.ActionListener() {
216
                    public void actionPerformed(java.awt.event.ActionEvent e) {
217
                        if (App.instance == null) {
218
                            ((JDialog) (getParent().getParent().getParent()
219
                                            .getParent())).dispose();
220
                        } else {
221
                            App.instance.getMDIContext().closeView(FOpenDialog.this);
222
                        }
223
                    }
224
                });
225
        }
226

    
227
        return bCancelar;
228
    }
229

    
230
    /**
231
     * This method initializes jPanel2
232
     *
233
     * @return javax.swing.JPanel
234
     */
235
    private javax.swing.JPanel getJPanel2() {
236
        if (jPanel2 == null) {
237
            javax.swing.border.TitledBorder titledBorder1 = javax.swing.BorderFactory.createTitledBorder(null,
238
                            Utilities.getMessage(this,"Seleccionar_fichero"),
239
                    javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
240
                    javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null);
241
            jPanel2 = new javax.swing.JPanel();
242
            jPanel2.setLayout(null);
243
            jPanel2.setBorder(titledBorder1);
244
            jPanel2.setPreferredSize(new java.awt.Dimension(380,200));
245
            jPanel2.setBounds(2, 2, 510, 272);
246
            titledBorder1.setTitle(Utilities.getMessage(this,"Capas"));
247
            jPanel2.add(getJListLayers(), null);
248
            jPanel2.add(getBExaminar(), null);
249
        }
250

    
251
        return jPanel2;
252
    }
253

    
254
    /**
255
     * This method initializes bExaminar
256
     *
257
     * @return javax.swing.JButton
258
     */
259
    private javax.swing.JButton getBExaminar() {
260
        if (bExaminar == null) {
261
            bExaminar = new javax.swing.JButton();
262
            bExaminar.setText(Utilities.getMessage(this,"Anadir")+"...");
263
            bExaminar.setBounds(380, 22, 111, 29);
264
            bExaminar.addActionListener(new java.awt.event.ActionListener() {
265
                    public void actionPerformed(java.awt.event.ActionEvent e) {
266
                        if (App.instance == null) {
267
                            JFileChooser tempChooser = new JFileChooser();
268
                            tempChooser.setMultiSelectionEnabled(true);
269

    
270
                            //tempChooser.setFileSelectionMode(tempChooser.FILES_ONLY);
271
                            // A?ade filtro para raster (de momento ecw)
272
                            tempChooser.addChoosableFileFilter(new FileFilter() {
273
                                    public boolean accept(File f) {
274
                                        String extension = "";
275

    
276
                                        if (f.isDirectory()) {
277
                                            return true;
278
                                        }
279

    
280
                                        int i = f.getName().lastIndexOf('.');
281

    
282
                                        if (i > 0) {
283
                                            extension = f.getName()
284
                                                         .substring(i + 1)
285
                                                         .toLowerCase();
286
                                        }
287

    
288
                                        if (extension.equals("ecw") || (extension.equals("tif")) ||
289
                                                (extension.equals("jpg")) || (extension.equals("png")) ) {
290
                                            return true;
291
                                        } else {
292
                                            return false;
293
                                        }
294
                                    }
295

    
296
                                    public String getDescription() {
297
                                        return "Raster Files (*.ecw,tif,jpg,png)";
298
                                    }
299
                                });
300

    
301
                            // filtro para DXF
302
                            tempChooser.addChoosableFileFilter(new FileFilter() {
303
                                    public boolean accept(File f) {
304
                                        String extension = "";
305

    
306
                                        if (f.isDirectory()) {
307
                                            return true;
308
                                        }
309

    
310
                                        int i = f.getName().lastIndexOf('.');
311

    
312
                                        if (i > 0) {
313
                                            extension = f.getName()
314
                                                         .substring(i + 1)
315
                                                         .toLowerCase();
316
                                        }
317

    
318
                                        if (extension.equals("dxf")) {
319
                                            return true;
320
                                        } else {
321
                                            return false;
322
                                        }
323
                                    }
324

    
325
                                    public String getDescription() {
326
                                        return "Autocad DXF Files (*.dxf)";
327
                                    }
328
                                });
329

    
330
                            // filtro para GML
331
                            tempChooser.addChoosableFileFilter(new FileFilter() {
332
                                    public boolean accept(File f) {
333
                                        String extension = "";
334

    
335
                                        if (f.isDirectory()) { return true; }
336

    
337
                                        int i = f.getName().lastIndexOf('.');
338

    
339
                                        if (i > 0) {
340
                                            extension = f.getName()
341
                                                         .substring(i + 1)
342
                                                         .toLowerCase();
343
                                        }
344

    
345
                                        if (extension.equals("gml")) {
346
                                            return true;
347
                                        } else {
348
                                            return false;
349
                                        }
350
                                    }
351

    
352
                                    public String getDescription() {
353
                                        return "JUMP GML Files (*.gml)";
354
                                    }
355
                                });
356
                            // A?ade filtro para DGN
357
                            tempChooser.addChoosableFileFilter(new FileFilter() {
358
                                    public boolean accept(File f) {
359
                                        String extension = "";
360

    
361
                                        if (f.isDirectory()) {
362
                                            return true;
363
                                        }
364

    
365
                                        int i = f.getName().lastIndexOf('.');
366

    
367
                                        if (i > 0) {
368
                                            extension = f.getName()
369
                                                         .substring(i + 1)
370
                                                         .toLowerCase();
371
                                        }
372

    
373
                                        if (extension.equals("dgn")) {
374
                                            return true;
375
                                        } else {
376
                                            return false;
377
                                        }
378
                                    }
379

    
380
                                    public String getDescription() {
381
                                        return "Microstation Files (*.dgn)";
382
                                    }
383
                                });
384

    
385
                            // Archivos .shp
386
                            tempChooser.addChoosableFileFilter(new FileFilter() {
387
                                    public boolean accept(File f) {
388
                                        String extension = "";
389

    
390
                                        if (f.isDirectory()) {
391
                                            return true;
392
                                        }
393

    
394
                                        int i = f.getName().lastIndexOf('.');
395

    
396
                                        if (i > 0) {
397
                                            extension = f.getName()
398
                                                         .substring(i + 1)
399
                                                         .toLowerCase();
400
                                        }
401

    
402
                                        if (extension.equals("shp")) {
403
                                            return true;
404
                                        } else {
405
                                            return false;
406
                                        }
407
                                    }
408

    
409
                                    public String getDescription() {
410
                                        return "Shapes Files (*.shp)";
411
                                    }
412
                                });
413

    
414
                            int result = tempChooser.showOpenDialog((Component) e.getSource());
415

    
416
                            File[] newFiles = null;
417
                            if (result == JFileChooser.APPROVE_OPTION) {
418
                                        newFiles = tempChooser.getSelectedFiles();
419
                                        for (int ind=0; ind < newFiles.length; ind++)
420
                                                m_Files.add(newFiles[ind]);
421

    
422
                                // setText(tempFile.getPath());
423
                            }
424
                            else
425
                                    return;
426

    
427
                            // DefaultListModel lstModel = new DefaultListModel();
428

    
429
                            for (int iFile = 0; iFile < newFiles.length;
430
                                    iFile++) {
431
                                    File theFile = newFiles[iFile];  //(File) m_Files.get(iFile);
432
                                    String absolutePath = theFile.getAbsolutePath();
433
                                    // Miramos por si es un ecwp:
434
                                    int test = absolutePath.indexOf("ecwp:");
435
                                    if (test == -1)
436
                                            m_lstModel.addElement(absolutePath);
437
                                    else
438
                                            m_lstModel.addElement(absolutePath.substring(test));
439
                            }
440

    
441
                            getJListLayers().setModel(m_lstModel);
442
                        } else {
443
                                
444
                                SelectedFile[] aux =  App.instance.getMDIContext()
445
                                                       .showMultipleFileChooser("openLayer",
446
                                    Utilities.getMessage(this, "Anadir_Capa"),
447
                                    false, MDIApplicationContext.FILES_ONLY);
448
                                
449
                                int desde = 0;
450
                                int iFile;
451

    
452
                                if (selectedFile == null)
453
                                {
454
                                        selectedFile = aux;
455
                                }
456
                                else
457
                                {
458
                                        SelectedFile[] mezclaFile = new SelectedFile[aux.length + selectedFile.length];
459
                                        // Copiamos los del principio
460
                                    for (iFile = 0; iFile < selectedFile.length; iFile++)
461
                                    {
462
                                            mezclaFile[iFile] = selectedFile[iFile];
463
                                    }
464
                                    desde = selectedFile.length;
465
                                    selectedFile = mezclaFile;
466
                                }
467
                                                        
468
                                                        
469
                            // m_lstModel = new DefaultListModel();
470

    
471
                            for (iFile = 0; iFile < aux.length;
472
                                    iFile++) {
473
                                    selectedFile[iFile + desde] = aux[iFile];
474
                                    String absolutePath = aux[iFile].getFile().getAbsolutePath();
475
                                    // Miramos por si es un ecwp:
476
                                    int test = absolutePath.indexOf("ecwp:");
477
                                    if (test == -1)
478
                                            m_lstModel.addElement(absolutePath);
479
                                    else
480
                                            m_lstModel.addElement(absolutePath.substring(test));
481
                                    
482
                                // lstModel.addElement(selectedFile[iFile].getFile());
483
                            }
484

    
485
                            getJListLayers().setModel(m_lstModel);
486
                        }
487

    
488
                        //                                        aExt.openFileChooser();
489
                    }
490
                });
491
        }
492

    
493
        return bExaminar;
494
    }
495

    
496
    /**
497
     * This method initializes jPanel
498
     *
499
     * @return javax.swing.JPanel
500
     */
501
    private javax.swing.JPanel getJPanel() {
502
        if (jPanel == null) {
503
            jPanel = new javax.swing.JPanel();
504
            jPanel.setBounds(1, 281, 510, 35);
505
            jPanel.add(getBAceptar(), null);
506
            jPanel.add(getBCancelar(), null);
507
        }
508

    
509
        return jPanel;
510
    }
511

    
512
    /* (non-Javadoc)
513
     * @see com.iver.mdiApp.ui.MDIManager.View#getViewInfo()
514
     */
515
    public ViewInfo getViewInfo() {
516
            if (m_viewinfo==null){
517
                    m_viewinfo=new ViewInfo();
518
                    m_viewinfo.setFeatures(ViewInfo.MODALDIALOG);
519
                    m_viewinfo.setResizable(false);
520
                    m_viewinfo.setTitle(Utilities.getMessage(this,"Abrir_una_capa"));
521
        }
522
        return m_viewinfo;
523
    }
524

    
525
    /**
526
     * @see com.iver.mdiApp.ui.MDIManager.View#viewActivated()
527
     */
528
    public void viewActivated() {
529
    }
530

    
531
    /**
532
     * This method initializes jList
533
     *
534
     * @return javax.swing.JList
535
     */
536
    private JList getJListLayers() {
537
        if (jListLayers == null) {
538
            jListLayers = new JList();
539
            jListLayers.setPreferredSize(new java.awt.Dimension(350, 50));
540
            jListLayers.setBounds(12, 20, 350, 240);
541
            jListLayers.setBorder(BorderFactory.createLineBorder(Color.BLACK));
542
        }
543

    
544
        return jListLayers;
545
    }
546

    
547
    /**
548
     * DOCUMENT ME!
549
     *
550
     * @author Fernando Gonz?lez Cort?s
551
     */
552
    public class MyWMSWizardListener implements WizardListener {
553
        /**
554
         * DOCUMENT ME!
555
         */
556
        public void finalizar() {
557
            /* String layerQuery = wiz.getLayersQuery();
558

559
            Rectangle2D rect;
560

561
            rect = m_fmap.getViewPort().getExtent();
562

563
            if (rect == null) {
564
                    rect = wiz.getLayersRectangle();
565
                if (rect == null) {
566
                    App.instance.getNm().addError("No hay un bounding box en la especificaci?n, y tampoco en el FMap.",
567
                        null);
568

569
                    return; //Si no hay un bounding box en la especificaci?n, y tampoco en el FMap.
570
                }
571

572
            } */
573
                System.err.println("Por implementar");
574
                //TODO a?adir la capa WMS desde fuera
575

    
576
            //TODO descomentar esto cuando haya un driver de WMS
577
                
578
            /*
579
            if (rect != null) {
580
                FLayer lyr = new FLyrWMS(wiz.getHost(), rect,
581
                        (String) wiz.getFormat(), layerQuery, wiz.getQueryableLayerQuery(),
582
                        wiz.getSRS(), true);
583
                lyr.setName(wiz.getLayerName());
584
                view.getMapControl().getLayers().addLayer(lyr);
585
                view.getTOC().refresh();
586
                view.getMapControl().drawMap();
587
                App.instance.getMDIContext().closeView(FOpenDialog.this);
588
            } else {
589
            }
590
            */
591
        }
592

    
593
        /**
594
         * DOCUMENT ME!
595
         */
596
        public void cancelWizard() {
597
                if (App.instance != null)
598
                        App.instance.getMDIContext().closeView(FOpenDialog.this);
599
        }
600

    
601
                /**
602
                 * @see com.iver.cit.gvsig.gui.wms.WizardListener#error(java.lang.String)
603
                 */
604
                public void error(Exception e) {
605
                        App.instance.getNm().addError(e.getMessage(), e);
606
                }
607
    }
608
        public SelectedFile[] getSelectedFiles() {
609
                return selectedFile;
610
        }
611
}  //  @jve:decl-index=0:visual-constraint="10,10"
612
 //  @jve:visual-info  decl-index=0 visual-constraint="10,10"
613
//  @jve:visual-info  decl-index=0 visual-constraint="10,10"