Statistics
| Revision:

svn-gvsig-desktop / trunk / applications / appgvSIG / src / com / iver / cit / gvsig / gui / FOpenDialog.java @ 312

History | View | Annotate | Download (23.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.awt.geom.Rectangle2D;
12
import java.io.File;
13
import java.util.ArrayList;
14

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

    
23
import com.iver.cit.gvsig.fmap.FMap;
24
import com.iver.cit.gvsig.fmap.MapControl;
25
import com.iver.cit.gvsig.fmap.layers.FLayer;
26
import com.iver.cit.gvsig.gui.wms.WMSWizard;
27
import com.iver.cit.gvsig.gui.wms.WizardListener;
28
import com.iver.mdiApp.App;
29
import com.iver.mdiApp.Utilities;
30
import com.iver.mdiApp.plugins.files.SelectedFile;
31
import com.iver.mdiApp.ui.MDIApplicationContext;
32
import com.iver.mdiApp.ui.MDIManager.View;
33
import com.iver.mdiApp.ui.MDIManager.ViewInfo;
34

    
35

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

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

    
65
    /**
66
     * Creates a new FOpenDialog object.
67
     *
68
     * @param view Vista que vamos a refrescar
69
     * @param mapControl MapControl que recibe la capa (te puede interesar
70
     *        a?adirla al principal o al Overview.
71
     */
72
    public FOpenDialog(com.iver.cit.gvsig.gui.View view, FMap fmap) {
73
        this.view = view;
74
        m_fmap = fmap;
75
        this.add(getJContentPane());
76
        this.setSize(getJContentPane().getSize());
77
        m_Files = new ArrayList();
78
        
79
        // Cada vez que se abre, se borran las capas que pudiera haber.
80
        m_lstModel = new DefaultListModel(); 
81
    }
82

    
83
    /**
84
     * This method initializes this
85
     */
86
    private void initialize() {
87
        this.setSize(343, 269);
88
    }
89

    
90
    /**
91
     * DOCUMENT ME!
92
     *
93
     * @return DOCUMENT ME!
94
     */
95
    public File[] getFiles() {
96
        File[] fAux = new File[m_Files.size()];
97
        for (int i=0; i < m_Files.size(); i++)
98
        {
99
                fAux[i] = (File) m_Files.get(i);
100
        }
101
        return fAux;
102
    }
103

    
104
    /**
105
     * This method initializes jContentPane
106
     *
107
     * @return javax.swing.JPanel
108
     */
109
    private javax.swing.JPanel getJContentPane() {
110
        if (jContentPane == null) {
111
            jContentPane = new javax.swing.JPanel();
112
            jContentPane.setLayout(null);
113
            jContentPane.setSize(519, 347);
114
            jContentPane.setPreferredSize(new java.awt.Dimension(520,360));
115
            jContentPane.add(getJTabbedPane(), null);
116
            jContentPane.add(getPbotones(), null);
117
        }
118

    
119
        return jContentPane;
120
    }
121

    
122
    /**
123
     * This method initializes jTabbedPane
124
     *
125
     * @return javax.swing.JTabbedPane
126
     */
127
    private javax.swing.JTabbedPane getJTabbedPane() {
128
        if (jTabbedPane == null) {
129
            jTabbedPane = new javax.swing.JTabbedPane();
130
            jTabbedPane.setBounds(0, 0, 519, 352);
131
            jTabbedPane.addTab(Utilities.getMessage(this,"Archivos_de_Disco"), null, getPprimero(), null);
132
            jTabbedPane.addTab(Utilities.getMessage(this,"WMS"), null, getPsegundo(), null);
133
        }
134

    
135
        return jTabbedPane;
136
    }
137

    
138
    /**
139
     * This method initializes pprimero
140
     *
141
     * @return javax.swing.JPanel
142
     */
143
    private javax.swing.JPanel getPprimero() {
144
        if (pprimero == null) {
145
            pprimero = new javax.swing.JPanel();
146
            pprimero.setLayout(null);
147
            pprimero.setBorder(javax.swing.BorderFactory.createBevelBorder(
148
                    javax.swing.border.BevelBorder.RAISED));
149
            pprimero.add(getJPanel2(), null);
150
            pprimero.add(getJPanel(), null);
151
        }
152

    
153
        return pprimero;
154
    }
155

    
156
    /**
157
     * This method initializes psegundo
158
     *
159
     * @return javax.swing.JPanel
160
     */
161
    private javax.swing.JPanel getPsegundo() {
162
        if (psegundo == null) {
163
            wiz = new WMSWizard(view);
164
            wiz.addWizardListener(new MyWMSWizardListener());
165
            wiz.setDataSource(new WMSDataSourceAdapter());
166
            psegundo = wiz;
167
        }
168

    
169
        return psegundo;
170
    }
171

    
172
    /**
173
     * This method initializes pbotones
174
     *
175
     * @return javax.swing.JPanel
176
     */
177
    private javax.swing.JPanel getPbotones() {
178
        if (pbotones == null) {
179
            pbotones = new javax.swing.JPanel();
180
            pbotones.setBounds(0, 318, 519, 37);
181
        }
182

    
183
        return pbotones;
184
    }
185

    
186
    /**
187
     * This method initializes bAceptar
188
     *
189
     * @return javax.swing.JButton
190
     */
191
    private javax.swing.JButton getBAceptar() {
192
        if (bAceptar == null) {
193
            bAceptar = new javax.swing.JButton();
194
            bAceptar.setText(Utilities.getMessage(this,"Aceptar"));
195
            bAceptar.setPreferredSize(new java.awt.Dimension(110, 25));
196
            bAceptar.addActionListener(new java.awt.event.ActionListener() {
197
                    public void actionPerformed(java.awt.event.ActionEvent e) {
198
                        if (App.instance != null) {
199
                                FLayer parent;
200
                                FLayer[] actives = m_fmap.getLayers().getActives();
201
                                if ((actives.length == 0)|| (actives.length > 1)){
202
                                        parent = m_fmap.getLayers();
203
                                }else{
204
                                        parent = actives[0];
205
                                }
206
                                
207
                            App.instance.getMDIContext().closeView(FOpenDialog.this);
208

    
209
                            try {
210
                                    m_Files.clear(); 
211
                                for (int i = 0; i < selectedFile.length; i++) {
212
                                    FLayer layer = (FLayer) selectedFile[i].read();
213
                                    m_fmap.getLayers().addLayer(parent.getLayerPath(), layer);
214
                                }
215

    
216
                            } catch (Exception ex) {
217
                                App.instance.getNm().addError(Utilities.getMessage(this,"Error_abriendo_el_fichero"),
218
                                    ex);
219
                            }
220
                        } else {
221
                            ((JDialog) (getParent().getParent().getParent()
222
                                            .getParent())).dispose();
223
                        }
224
                    }
225
                });
226
        }
227

    
228
        return bAceptar;
229
    }
230

    
231
    /**
232
     * This method initializes bCancelar
233
     *
234
     * @return javax.swing.JButton
235
     */
236
    private javax.swing.JButton getBCancelar() {
237
        if (bCancelar == null) {
238
            bCancelar = new javax.swing.JButton();
239
            bCancelar.setText(Utilities.getMessage(this,"Cancelar"));
240
            bCancelar.setPreferredSize(new java.awt.Dimension(110, 25));
241
            bCancelar.addActionListener(new java.awt.event.ActionListener() {
242
                    public void actionPerformed(java.awt.event.ActionEvent e) {
243
                        if (App.instance == null) {
244
                            ((JDialog) (getParent().getParent().getParent()
245
                                            .getParent())).dispose();
246
                        } else {
247
                            App.instance.getMDIContext().closeView(FOpenDialog.this);
248
                        }
249
                    }
250
                });
251
        }
252

    
253
        return bCancelar;
254
    }
255

    
256
    /**
257
     * This method initializes jPanel2
258
     *
259
     * @return javax.swing.JPanel
260
     */
261
    private javax.swing.JPanel getJPanel2() {
262
        if (jPanel2 == null) {
263
            javax.swing.border.TitledBorder titledBorder1 = javax.swing.BorderFactory.createTitledBorder(null,
264
                            Utilities.getMessage(this,"Seleccionar_fichero"),
265
                    javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
266
                    javax.swing.border.TitledBorder.DEFAULT_POSITION, null, null);
267
            jPanel2 = new javax.swing.JPanel();
268
            jPanel2.setLayout(null);
269
            jPanel2.setBorder(titledBorder1);
270
            jPanel2.setPreferredSize(new java.awt.Dimension(380,200));
271
            jPanel2.setBounds(2, 2, 510, 272);
272
            titledBorder1.setTitle(Utilities.getMessage(this,"Capas"));
273
            jPanel2.add(getJListLayers(), null);
274
            jPanel2.add(getBExaminar(), null);
275
        }
276

    
277
        return jPanel2;
278
    }
279

    
280
    /**
281
     * This method initializes bExaminar
282
     *
283
     * @return javax.swing.JButton
284
     */
285
    private javax.swing.JButton getBExaminar() {
286
        if (bExaminar == null) {
287
            bExaminar = new javax.swing.JButton();
288
            bExaminar.setText(Utilities.getMessage(this,"Anadir")+"...");
289
            bExaminar.setBounds(380, 22, 111, 29);
290
            bExaminar.addActionListener(new java.awt.event.ActionListener() {
291
                    public void actionPerformed(java.awt.event.ActionEvent e) {
292
                        if (App.instance == null) {
293
                            JFileChooser tempChooser = new JFileChooser();
294
                            tempChooser.setMultiSelectionEnabled(true);
295

    
296
                            //tempChooser.setFileSelectionMode(tempChooser.FILES_ONLY);
297
                            // A?ade filtro para raster (de momento ecw)
298
                            tempChooser.addChoosableFileFilter(new FileFilter() {
299
                                    public boolean accept(File f) {
300
                                        String extension = "";
301

    
302
                                        if (f.isDirectory()) {
303
                                            return true;
304
                                        }
305

    
306
                                        int i = f.getName().lastIndexOf('.');
307

    
308
                                        if (i > 0) {
309
                                            extension = f.getName()
310
                                                         .substring(i + 1)
311
                                                         .toLowerCase();
312
                                        }
313

    
314
                                        if (extension.equals("ecw") || (extension.equals("tif")) ||
315
                                                (extension.equals("jpg")) || (extension.equals("png")) ) {
316
                                            return true;
317
                                        } else {
318
                                            return false;
319
                                        }
320
                                    }
321

    
322
                                    public String getDescription() {
323
                                        return "Raster Files (*.ecw,tif,jpg,png)";
324
                                    }
325
                                });
326

    
327
                            // filtro para DXF
328
                            tempChooser.addChoosableFileFilter(new FileFilter() {
329
                                    public boolean accept(File f) {
330
                                        String extension = "";
331

    
332
                                        if (f.isDirectory()) {
333
                                            return true;
334
                                        }
335

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

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

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

    
351
                                    public String getDescription() {
352
                                        return "Autocad DXF Files (*.dxf)";
353
                                    }
354
                                });
355

    
356
                            // filtro para GML
357
                            tempChooser.addChoosableFileFilter(new FileFilter() {
358
                                    public boolean accept(File f) {
359
                                        String extension = "";
360

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

    
363
                                        int i = f.getName().lastIndexOf('.');
364

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

    
371
                                        if (extension.equals("gml")) {
372
                                            return true;
373
                                        } else {
374
                                            return false;
375
                                        }
376
                                    }
377

    
378
                                    public String getDescription() {
379
                                        return "JUMP GML Files (*.gml)";
380
                                    }
381
                                });
382
                            // A?ade filtro para DGN
383
                            tempChooser.addChoosableFileFilter(new FileFilter() {
384
                                    public boolean accept(File f) {
385
                                        String extension = "";
386

    
387
                                        if (f.isDirectory()) {
388
                                            return true;
389
                                        }
390

    
391
                                        int i = f.getName().lastIndexOf('.');
392

    
393
                                        if (i > 0) {
394
                                            extension = f.getName()
395
                                                         .substring(i + 1)
396
                                                         .toLowerCase();
397
                                        }
398

    
399
                                        if (extension.equals("dgn")) {
400
                                            return true;
401
                                        } else {
402
                                            return false;
403
                                        }
404
                                    }
405

    
406
                                    public String getDescription() {
407
                                        return "Microstation Files (*.dgn)";
408
                                    }
409
                                });
410

    
411
                            // Archivos .shp
412
                            tempChooser.addChoosableFileFilter(new FileFilter() {
413
                                    public boolean accept(File f) {
414
                                        String extension = "";
415

    
416
                                        if (f.isDirectory()) {
417
                                            return true;
418
                                        }
419

    
420
                                        int i = f.getName().lastIndexOf('.');
421

    
422
                                        if (i > 0) {
423
                                            extension = f.getName()
424
                                                         .substring(i + 1)
425
                                                         .toLowerCase();
426
                                        }
427

    
428
                                        if (extension.equals("shp")) {
429
                                            return true;
430
                                        } else {
431
                                            return false;
432
                                        }
433
                                    }
434

    
435
                                    public String getDescription() {
436
                                        return "Shapes Files (*.shp)";
437
                                    }
438
                                });
439

    
440
                            int result = tempChooser.showOpenDialog((Component) e.getSource());
441

    
442
                            File[] newFiles = null;
443
                            if (result == JFileChooser.APPROVE_OPTION) {
444
                                        newFiles = tempChooser.getSelectedFiles();
445
                                        for (int ind=0; ind < newFiles.length; ind++)
446
                                                m_Files.add(newFiles[ind]);
447

    
448
                                // setText(tempFile.getPath());
449
                            }
450
                            else
451
                                    return;
452

    
453
                            // DefaultListModel lstModel = new DefaultListModel();
454

    
455
                            for (int iFile = 0; iFile < newFiles.length;
456
                                    iFile++) {
457
                                    File theFile = newFiles[iFile];  //(File) m_Files.get(iFile);
458
                                    String absolutePath = theFile.getAbsolutePath();
459
                                    // Miramos por si es un ecwp:
460
                                    int test = absolutePath.indexOf("ecwp:");
461
                                    if (test == -1)
462
                                            m_lstModel.addElement(absolutePath);
463
                                    else
464
                                            m_lstModel.addElement(absolutePath.substring(test));
465
                            }
466

    
467
                            getJListLayers().setModel(m_lstModel);
468
                        } else {
469
                                
470
                                SelectedFile[] aux =  App.instance.getMDIContext()
471
                                                       .showMultipleFileChooser("openLayer",
472
                                    Utilities.getMessage(this, "Anadir_Capa"),
473
                                    false, MDIApplicationContext.FILES_ONLY);
474
                                
475
                                int desde = 0;
476
                                int iFile;
477

    
478
                                if (selectedFile == null)
479
                                {
480
                                        selectedFile = aux;
481
                                }
482
                                else
483
                                {
484
                                        SelectedFile[] mezclaFile = new SelectedFile[aux.length + selectedFile.length];
485
                                        // Copiamos los del principio
486
                                    for (iFile = 0; iFile < selectedFile.length; iFile++)
487
                                    {
488
                                            mezclaFile[iFile] = selectedFile[iFile];
489
                                    }
490
                                    desde = selectedFile.length;
491
                                    selectedFile = mezclaFile;
492
                                }
493
                                                        
494
                                                        
495
                            // m_lstModel = new DefaultListModel();
496

    
497
                            for (iFile = 0; iFile < aux.length;
498
                                    iFile++) {
499
                                    selectedFile[iFile + desde] = aux[iFile];
500
                                    String absolutePath = aux[iFile].getFile().getAbsolutePath();
501
                                    // Miramos por si es un ecwp:
502
                                    int test = absolutePath.indexOf("ecwp:");
503
                                    if (test == -1)
504
                                            m_lstModel.addElement(absolutePath);
505
                                    else
506
                                            m_lstModel.addElement(absolutePath.substring(test));
507
                                    
508
                                // lstModel.addElement(selectedFile[iFile].getFile());
509
                            }
510

    
511
                            getJListLayers().setModel(m_lstModel);
512
                        }
513

    
514
                        //                                        aExt.openFileChooser();
515
                    }
516
                });
517
        }
518

    
519
        return bExaminar;
520
    }
521

    
522
    /**
523
     * This method initializes jPanel
524
     *
525
     * @return javax.swing.JPanel
526
     */
527
    private javax.swing.JPanel getJPanel() {
528
        if (jPanel == null) {
529
            jPanel = new javax.swing.JPanel();
530
            jPanel.setBounds(1, 281, 510, 35);
531
            jPanel.add(getBAceptar(), null);
532
            jPanel.add(getBCancelar(), null);
533
        }
534

    
535
        return jPanel;
536
    }
537

    
538
    /* (non-Javadoc)
539
     * @see com.iver.mdiApp.ui.MDIManager.View#getViewInfo()
540
     */
541
    public ViewInfo getViewInfo() {
542
            if (m_viewinfo==null){
543
                    m_viewinfo=new ViewInfo();
544
                    m_viewinfo.setFeatures(ViewInfo.MODALDIALOG);
545
                    m_viewinfo.setResizable(false);
546
                    m_viewinfo.setTitle(Utilities.getMessage(this,"Abrir_una_capa"));
547
        }
548
        return m_viewinfo;
549
    }
550

    
551
    /**
552
     * @see com.iver.mdiApp.ui.MDIManager.View#viewActivated()
553
     */
554
    public void viewActivated() {
555
    }
556

    
557
    /**
558
     * This method initializes jList
559
     *
560
     * @return javax.swing.JList
561
     */
562
    private JList getJListLayers() {
563
        if (jListLayers == null) {
564
            jListLayers = new JList();
565
            jListLayers.setPreferredSize(new java.awt.Dimension(350, 50));
566
            jListLayers.setBounds(12, 20, 350, 240);
567
            jListLayers.setBorder(BorderFactory.createLineBorder(Color.BLACK));
568
        }
569

    
570
        return jListLayers;
571
    }
572

    
573
    /**
574
     * DOCUMENT ME!
575
     *
576
     * @author Fernando Gonz?lez Cort?s
577
     */
578
    public class MyWMSWizardListener implements WizardListener {
579
        /**
580
         * DOCUMENT ME!
581
         */
582
        public void finalizar() {
583
            String layerQuery = wiz.getLayersQuery();
584

    
585
            Rectangle2D rect;
586

    
587
            rect = m_fmap.getViewPort().getExtent();
588

    
589
            if (rect == null) {
590
                    rect = wiz.getLayersRectangle();
591
                if (rect == null) {
592
                    App.instance.getNm().addError("No hay un bounding box en la especificaci?n, y tampoco en el FMap.",
593
                        null);
594

    
595
                    return; //Si no hay un bounding box en la especificaci?n, y tampoco en el FMap.
596
                }
597

    
598
            }
599

    
600
            //TODO descomentar esto cuando haya un driver de WMS
601
            /*
602
            if (rect != null) {
603
                FLayer lyr = new FLyrWMS(wiz.getHost(), rect,
604
                        (String) wiz.getFormat(), layerQuery, wiz.getQueryableLayerQuery(),
605
                        wiz.getSRS(), true);
606
                lyr.setName(wiz.getLayerName());
607
                view.getMapControl().getLayers().addLayer(lyr);
608
                view.getTOC().refresh();
609
                view.getMapControl().drawMap();
610
                App.instance.getMDIContext().closeView(FOpenDialog.this);
611
            } else {
612
            }
613
            */
614
        }
615

    
616
        /**
617
         * DOCUMENT ME!
618
         */
619
        public void cancelWizard() {
620
                if (App.instance != null)
621
                        App.instance.getMDIContext().closeView(FOpenDialog.this);
622
        }
623

    
624
                /**
625
                 * @see com.iver.cit.gvsig.gui.wms.WizardListener#error(java.lang.String)
626
                 */
627
                public void error(Exception e) {
628
                        App.instance.getNm().addError(e.getMessage(), e);
629
                }
630
    }
631
}  //  @jve:decl-index=0:visual-constraint="10,10"
632
 //  @jve:visual-info  decl-index=0 visual-constraint="10,10"
633
//  @jve:visual-info  decl-index=0 visual-constraint="10,10"