Statistics
| Revision:

root / trunk / extensions / extGeoProcessing / src / com / iver / cit / gvsig / geoprocess / impl / merge / gui / GeoProcessingMergePanel.java @ 6877

History | View | Annotate | Download (23.9 KB)

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

    
46
import java.awt.Component;
47
import java.awt.event.ActionEvent;
48
import java.awt.event.ActionListener;
49
import java.io.File;
50
import java.io.FilenameFilter;
51
import java.io.IOException;
52
import java.util.ArrayList;
53

    
54
import javax.swing.AbstractListModel;
55
import javax.swing.DefaultComboBoxModel;
56
import org.gvsig.gui.beans.swing.JButton;
57
import javax.swing.JComboBox;
58
import javax.swing.JFileChooser;
59
import javax.swing.JLabel;
60
import javax.swing.JList;
61
import javax.swing.JPanel;
62
import javax.swing.JScrollPane;
63
import javax.swing.JTextField;
64
import javax.swing.event.ListSelectionListener;
65

    
66
import org.cresques.cts.IProjection;
67

    
68
import com.iver.andami.PluginServices;
69
import com.iver.andami.ui.mdiManager.IWindow;
70
import com.iver.andami.ui.mdiManager.ViewInfo;
71
import com.iver.cit.gvsig.fmap.DriverException;
72
import com.iver.cit.gvsig.fmap.drivers.VectorialFileDriver;
73
import com.iver.cit.gvsig.fmap.drivers.dgn.DgnMemoryDriver;
74
import com.iver.cit.gvsig.fmap.drivers.dxf.DXFMemoryDriver;
75
import com.iver.cit.gvsig.fmap.drivers.shp.IndexedShpDriver;
76
import com.iver.cit.gvsig.fmap.layers.FLayer;
77
import com.iver.cit.gvsig.fmap.layers.FLayers;
78
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
79
import com.iver.cit.gvsig.fmap.layers.LayerFactory;
80
import com.iver.cit.gvsig.geoprocess.core.gui.AbstractGeoprocessPanel;
81
import com.iver.utiles.GenericFileFilter;
82
import java.awt.GridBagLayout;
83
import java.awt.GridBagConstraints;
84
/**
85
 * GUI component to that allows user entrys to launch
86
 * a Merge geoprocess.
87
 * 
88
 * @author azabala
89
 *
90
 */
91
public class GeoProcessingMergePanel 
92
                        extends AbstractGeoprocessPanel implements MergePanelIF,
93
                        IWindow{
94
        
95
    private static final long serialVersionUID = 1L;
96
    private JLabel titleJLabel = null;
97
    private JScrollPane inputJScrollPane = null;
98
    /**
99
     * It has a list with all FLyrVect of TOC
100
     */
101
    private JList inputJList = null;
102
    /**
103
     * Combo box to select which layer of the user selection
104
     * will preserve its schema
105
     */
106
    private JComboBox fieldsJComboBox = null;
107
    private JButton outputJButton = null;
108
    private JButton directoryButton = null;
109
    
110
    //layers selected to merge
111
    private FLyrVect[] layersSelected = null;
112
    private File outputFile = null;
113
        
114
        //user could specify a directory where look for new layers
115
    //files to add
116
        private FLyrVect[] aditionalLayers;
117
        private String[] inputLayersToAdd;
118
        private JScrollPane directoryLayerScrollPane = null;
119
        /**
120
         * It has a list with all the FLyrVect in the directory
121
         * selected by the user
122
         */
123
        private JList directoryLayerList = null;
124
        
125
        private FLyrVect[] aditionalLayersSelection = null;
126

    
127
        private ViewInfo viewInfo;
128
        private JPanel resultLayerPanel = null;
129
        private JLabel jLabel = null;
130
        private JPanel resultSchemaPanel = null;
131
        private JLabel jLabel1 = null;
132
        private JPanel directoryPanel = null;
133
        private JLabel directoryLabel = null;
134
        private JPanel inputLyrPanel = null;
135
        private JLabel jLabel2 = null;
136
    /**
137
     * This constructor initializes the set of layers
138
     */
139
    public GeoProcessingMergePanel(FLayers layers) {
140
        super();
141
        this.layers = layers;
142
        initialize();
143
    }
144

    
145
    /**
146
     * This method initializes this
147
     * 
148
     * @return void
149
     */
150
    private void initialize() {
151
        GridBagConstraints gridBagConstraints4 = new GridBagConstraints();
152
        gridBagConstraints4.insets = new java.awt.Insets(4,7,0,33);
153
        gridBagConstraints4.gridy = 1;
154
        gridBagConstraints4.ipadx = 445;
155
        gridBagConstraints4.ipady = 91;
156
        gridBagConstraints4.gridx = 0;
157
        GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
158
        gridBagConstraints3.insets = new java.awt.Insets(1,7,3,33);
159
        gridBagConstraints3.gridy = 2;
160
        gridBagConstraints3.ipadx = 445;
161
        gridBagConstraints3.ipady = 122;
162
        gridBagConstraints3.gridx = 0;
163
        GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
164
        gridBagConstraints2.insets = new java.awt.Insets(3,9,1,31);
165
        gridBagConstraints2.gridy = 3;
166
        gridBagConstraints2.ipadx = 445;
167
        gridBagConstraints2.ipady = 35;
168
        gridBagConstraints2.gridx = 0;
169
        GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
170
        gridBagConstraints1.insets = new java.awt.Insets(1,9,42,31);
171
        gridBagConstraints1.gridy = 4;
172
        gridBagConstraints1.ipadx = 445;
173
        gridBagConstraints1.ipady = 35;
174
        gridBagConstraints1.gridx = 0;
175
        GridBagConstraints gridBagConstraints = new GridBagConstraints();
176
        gridBagConstraints.insets = new java.awt.Insets(10,8,3,31);
177
        gridBagConstraints.gridy = 0;
178
        gridBagConstraints.ipadx = 266;
179
        gridBagConstraints.ipady = 6;
180
        gridBagConstraints.gridx = 0;
181
        titleJLabel = new JLabel();
182
        titleJLabel.setText(PluginServices.getText(this,"Juntar._Introduccion_de_datos") + ":");
183
        this.setLayout(new GridBagLayout());
184
        this.setSize(486,377);
185
//        this.setBounds(new java.awt.Rectangle(0,0,486,377));
186
        this.add(titleJLabel, gridBagConstraints);
187
        this.add(getResultLayerPanel(), gridBagConstraints1);
188
        this.add(getResultSchemaPanel(), gridBagConstraints2);
189
        this.add(getDirectoryPanel(), gridBagConstraints3);
190
        this.add(getInputLyrPanel(), gridBagConstraints4);
191
    }
192
    
193
    private void setDirectoryLabelText(String text){
194
            directoryLabel.setText(text);
195
    }
196

    
197
    /**
198
     * Returns an array with names of all vectorial layers in TOC
199
     */
200
    protected String[] getLayerNames() {
201
            String[] solution = null;
202
        ArrayList layerNames = new ArrayList();
203
        for (int i=0;i<layers.getLayersCount();i++) {
204
                FLayer layer = layers.getLayer(i);
205
                if(! (layer instanceof FLyrVect))
206
                        continue;
207
            layerNames.add(layer.getName());
208
        }
209
        solution = new String[layerNames.size()];
210
        layerNames.toArray(solution);
211
        return solution;
212
    }
213
    
214
    
215
    protected String[] getDirectoryLayerNames(){
216
            String[] solution = null;
217
        ArrayList layerNames = new ArrayList();
218
        if(aditionalLayers != null){
219
                for(int i = 0; i < aditionalLayers.length; i++){
220
                        layerNames.add(aditionalLayers[i].getName());
221
                }//for
222
        }
223
        solution = new String[layerNames.size()];
224
        layerNames.toArray(solution);
225
        return solution;
226
    }
227
    
228
    private String[] getLayersSelectedNames() {
229
            if(layersSelected == null && aditionalLayersSelection == null)
230
                    return null;
231
            ArrayList solution = new ArrayList();
232
            if(layersSelected != null){
233
                    for(int i = 0; i < layersSelected.length; i++){
234
                            solution.add(layersSelected[i].getName());
235
                    }
236
            }
237
            if(aditionalLayersSelection != null){
238
                    for(int i = 0; i < aditionalLayersSelection.length; i++){
239
                            solution.add(aditionalLayersSelection[i].getName());
240
                    }
241
            }
242
        String[] layersSelectedNames = new String[solution.size()];
243
        solution.toArray(layersSelectedNames);
244
        return layersSelectedNames;
245
    }
246

    
247
    /**
248
     * This method initializes inputJScrollPane        
249
     *         
250
     * @return javax.swing.JScrollPane        
251
     */    
252
    private JScrollPane getInputJScrollPane() {
253
            if (inputJScrollPane == null) {
254
                    inputJScrollPane = new JScrollPane();
255
                    inputJScrollPane.setBounds(new java.awt.Rectangle(10,27,427,50));
256
                    inputJScrollPane.setViewportView(getInputJList());
257
            }
258
            return inputJScrollPane;
259
    }
260

    
261
    /**
262
     * This method initializes inputJList        
263
     *         
264
     * @return javax.swing.JList        
265
     */    
266
    private JList getInputJList() {
267
        if (inputJList == null) {
268
            inputJList = new JList(getLayerNames());
269
            LayerSelectorListener layerSelectorListener = new LayerSelectorListener(layers);
270
            inputJList.addListSelectionListener(layerSelectorListener);
271
        }
272
        return inputJList;
273
    }
274
    
275
    class AditionalLayersListModel extends AbstractListModel{
276
                private static final long serialVersionUID = 6123487908892908100L;
277
                private FLyrVect[] layers;
278
                
279
                AditionalLayersListModel(FLyrVect[] layers){
280
                        this.layers = layers;
281
                }
282
                public int getSize() {
283
                        if(layers != null){
284
                                return layers.length;
285
                        }
286
                        return 0;
287
                }
288

    
289
                public Object getElementAt(int position) {
290
                        if(layers != null){
291
                                return layers[position].getName();
292
                        }
293
                        return null;
294
                }
295
    }
296
    /**
297
     * ListModel for input layer list (which has layers of the TOC)
298
     * @author azabala
299
     *
300
     */
301
    class LayersListModel extends AbstractListModel{
302
                private static final long serialVersionUID = 1L;
303
                private FLayers layers;
304
                LayersListModel(FLayers layers){
305
                        this.layers = layers;
306
                }
307
                
308
                public int getSize() {
309
                        return layers.getLayersCount();
310
                }
311

    
312
                public Object getElementAt(int arg0) {
313
                        if(arg0 < layers.getLayersCount())
314
                                return layers.getLayer(arg0).getName();
315
                        else{
316
                                if(aditionalLayers == null)
317
                                        return null;
318
                                else{
319
                                        FLyrVect layer = aditionalLayers[arg0 - layers.getLayersCount()];
320
                                        if(layer == null)
321
                                                return "";
322
                                        else
323
                                                return layer.getName();
324
                                }//else
325
                        }//else
326
                }//getElementAt
327
            
328
    }
329

    
330
    /**
331
     * Listens selection of layers in input layers list, and
332
     * refresh selected layers list
333
     * @author azabala
334
     *
335
     */
336
    private class LayerSelectorListener implements ListSelectionListener {
337
        private FLayers layers;
338
        public LayerSelectorListener(FLayers layers) {
339
            this.layers = layers;
340
        }
341
        public void valueChanged(javax.swing.event.ListSelectionEvent e) {  
342
                Object[] layersSelectedNames = inputJList.getSelectedValues();
343
                if(layersSelectedNames == null)
344
                        return;
345
            layersSelected = new FLyrVect[layersSelectedNames.length];
346
            for (int i=0;i<layersSelectedNames.length;i++) {
347
                String layerString = (String) layersSelectedNames[i];
348
                FLyrVect lyr = (FLyrVect) layers.getLayer(layerString);
349
                if(lyr != null)
350
                        layersSelected[i] = lyr;
351
            }
352
            //refresh combo box of schema preserve of layers
353
            DefaultComboBoxModel defaultModel = new DefaultComboBoxModel(getLayersSelectedNames());
354
            fieldsJComboBox.setModel(defaultModel);
355
        }//valueChanged
356
    }
357
    
358
    
359
    private class AditionalLayerSelectorListener implements ListSelectionListener {
360
        private FLyrVect[] aditionalLayers;
361
        public AditionalLayerSelectorListener(FLyrVect[] aditionalLayers) {
362
            this.aditionalLayers = aditionalLayers;
363
        }
364
        public void valueChanged(javax.swing.event.ListSelectionEvent e) {  
365
                Object[] layersSelectedNames = directoryLayerList.getSelectedValues();
366
                if(layersSelectedNames == null)
367
                        return;
368
                if(this.aditionalLayers == null)
369
                        return;
370
            aditionalLayersSelection = new FLyrVect[layersSelectedNames.length];
371
            for (int i=0;i<layersSelectedNames.length;i++) {
372
                    String selection = (String) layersSelectedNames[i];
373
                    for(int j = 0; j < this.aditionalLayers.length; j++){
374
                            if(this.aditionalLayers[j].getName().equals(selection)){
375
                                    aditionalLayersSelection[i] = this.aditionalLayers[j];
376
                                    break;
377
                            }//if
378
                    }//for
379
            }//for
380
            //Any time user add a layer to aditional layers list,
381
            //we create a new comboboxmodel, to add this layers to the
382
            //schema presevation combo box
383
            DefaultComboBoxModel defaultModel = new DefaultComboBoxModel(getLayersSelectedNames());
384
            fieldsJComboBox.setModel(defaultModel);
385
        }//valueChanged
386
    }
387

    
388
    /**
389
     * This method initializes fieldsJComboBox        
390
     *         
391
     * @return javax.swing.JComboBox        
392
     */    
393
    private JComboBox getFieldsJComboBox() {
394
            if (fieldsJComboBox == null) {
395
                    fieldsJComboBox = new JComboBox();
396
                    fieldsJComboBox.setBounds(new java.awt.Rectangle(225,6,191,23));
397
            }
398
            return fieldsJComboBox;
399
    }
400

    
401
    /**
402
     * This method initializes fileNameResultTextField        
403
     *         
404
     * @return javax.swing.JTextField        
405
     */    
406
    public JTextField getFileNameResultTextField() {
407
            if (fileNameResultTextField == null) {
408
                    super.getFileNameResultTextField().
409
                            setBounds(new java.awt.Rectangle(134,7,
410
                                                                            194,22));
411
            }
412
            return fileNameResultTextField;
413
    }
414

    
415
    /**
416
     * This method initializes outputJButton        
417
     *         
418
     * @return javax.swing.JButton        
419
     */    
420
    private JButton getOutputJButton() {
421
            if (outputJButton == null) {
422
                    outputJButton = new JButton();
423
                    outputJButton.setText(PluginServices.getText(this,"Abrir"));
424
                    outputJButton.setBounds(new java.awt.Rectangle(334,5,104,26));
425
            outputJButton.addActionListener(new java.awt.event.ActionListener() { 
426
                public void actionPerformed(java.awt.event.ActionEvent e) {    
427
                   openResultFileDialog();
428
                }
429
            });
430
            }
431
            return outputJButton;
432
    }
433
    
434
        /**
435
         * This method initializes directoryButton        
436
         *         
437
         * @return javax.swing.JButton        
438
         */
439
        private JButton getDirectoryButton() {
440
                if (directoryButton == null) {
441
                        directoryButton = new JButton();
442
                        directoryButton.setText(PluginServices.getText(this,"Seleccionar_Directorio"));
443
                        directoryButton.setBounds(new java.awt.Rectangle(136,91,183,26));
444
                        directoryButton.addActionListener(new ActionListener(){
445
                                public void actionPerformed(ActionEvent arg0) {
446
                                        openDirectoryLayersDialog();
447
                                }});
448
                }
449
                return directoryButton;
450
        }
451

    
452
        public FLyrVect[] getSelectedLayers() {
453
                FLyrVect[] solution = null;
454
                String[] selectedNames = this.getLayersSelectedNames();
455
                if(selectedNames == null){
456
                        return null;
457
                }
458
                ArrayList loadedSelectedLayers = new ArrayList();
459
                for(int i = 0; i < selectedNames.length; i++){
460
                        String name = selectedNames[i];
461
                        FLyrVect layer = (FLyrVect) layers.getLayer(name);
462
                        if(layer == null){
463
                                //it is a directory layer
464
                                for(int j = 0; j < aditionalLayers.length; j++){
465
                                        FLyrVect aditional = aditionalLayers[j];
466
                                        if(name.equals(aditional.getName())){
467
                                                layer = aditional;
468
                                        }//
469
                                }//fir
470
                        }//if
471
                        if(layer != null)
472
                                loadedSelectedLayers.add(layer);
473
                }//for
474
                solution = new FLyrVect[loadedSelectedLayers.size()];
475
                loadedSelectedLayers.toArray(solution);
476
                return solution;
477
        }
478

    
479

    
480
        public void addLayersToMergeList(FLyrVect[] layers) {
481
                // TODO Auto-generated method stub
482
                
483
        }
484

    
485
        public FLyrVect getSelectedSchema() {
486
                FLyrVect solution = null;
487
                String layerName = (String) fieldsJComboBox.getSelectedItem();
488
                if(layerName == null)
489
                        return null;
490
                solution = (FLyrVect) layers.getLayer(layerName);
491
                if (solution == null){
492
                        //see if it is an aditionallayer
493
                        for(int i = 0; i < aditionalLayers.length; i++){
494
                                FLyrVect layer = aditionalLayers[i];
495
                                if(layer.getName() == layerName)
496
                                        solution = layer;
497
                        }
498
                }
499
                return solution;
500
        }
501
   /**
502
    * This method is called every time user add new layers to directory layers
503
    * list
504
    */
505
        
506
        public void layersSelected() {
507
                 LayerSelectorListener layerSelectorListener = new LayerSelectorListener(layers);
508
         inputJList.addListSelectionListener(layerSelectorListener);
509
         LayersListModel model = new LayersListModel(layers);
510
         inputJList.setModel(model);
511
         AditionalLayerSelectorListener aditionalListener = new
512
                 AditionalLayerSelectorListener(aditionalLayers);
513
         directoryLayerList.addListSelectionListener(aditionalListener);
514
         AditionalLayersListModel aditionalListModel =
515
                 new AditionalLayersListModel(aditionalLayers);
516
         directoryLayerList.setModel(aditionalListModel);
517
        }
518
        
519
        public void openResultFileDialog() {
520
                 JFileChooser jfc = new JFileChooser();
521
         jfc.addChoosableFileFilter(
522
                         new GenericFileFilter("shp", 
523
                                                 PluginServices.getText(this, 
524
                                                                 "Ficheros_SHP")));
525
         if (jfc.showSaveDialog((Component) PluginServices.getMainFrame()) == JFileChooser.APPROVE_OPTION) {
526
             File file = jfc.getSelectedFile();
527
             if (!(file.getPath().endsWith(".shp") || file.getPath().endsWith(".SHP"))){
528
                 file = new File(file.getPath()+".shp");
529
             }
530
             outputFile = file;
531
         }
532
         if (jfc.getSelectedFile()!=null) getFileNameResultTextField().setText(jfc.getSelectedFile().getAbsolutePath());
533
        }
534

    
535
        public void openDirectoryLayersDialog() {
536
                 JFileChooser jfc = new JFileChooser();
537
                 jfc.setFileSelectionMode(JFileChooser.FILES_AND_DIRECTORIES);
538
                 final String[] extensions = {"shp", "dxf", "dwg"};
539
         jfc.addChoosableFileFilter(
540
                         new GenericFileFilter(extensions,
541
                                         PluginServices.getText(this, "Ficheros_de_cartografia")));
542
         if (jfc.showOpenDialog((Component) PluginServices.getMainFrame()) == JFileChooser.APPROVE_OPTION) {
543
             File file = jfc.getSelectedFile();
544
             FLyrVect[] newlayers = loadLayersInDirectory(file, extensions);
545
             setDirectoryLabelText("Capas del directorio: " + file.getName());
546
            this.aditionalLayers = newlayers;
547
         }
548
         layersSelected();
549
        }
550

    
551
        public FLyrVect[] loadLayersInDirectory(File file, final String[] extensions) {
552
                if(file.isDirectory()){
553
                inputLayersToAdd = file.list(
554
                                        new FilenameFilter() {
555
                                                public boolean accept(File dir, String name) {
556
                                                        for(int i = 0; i < extensions.length; i++){
557
                                                                if(name.endsWith(extensions[i]))
558
                                                                        return true;
559
                                                        }//for                
560
                                                        return false;                        
561
                                                }//acept
562
                                        });
563
        }else{
564
                        inputLayersToAdd = new String[]{file.getAbsolutePath()};
565
        }
566
                
567
                FLyrVect[] solution = null;
568
                if(inputLayersToAdd == null)
569
                        return solution;
570
                else
571
                        solution = new FLyrVect[inputLayersToAdd.length];
572
                //sin florituras. cogemos la primera que haya
573
                IProjection projection = layers.getLayer(0).getProjection();
574
                DgnMemoryDriver dgnDriver = null;
575
                IndexedShpDriver shpDriver = null;
576
                DXFMemoryDriver dxfDriver = null;
577
                VectorialFileDriver driver = null;
578
                try {
579
                        for(int i = 0; i < inputLayersToAdd.length; i++){
580
                                String fileName = inputLayersToAdd[i];
581
                                String fullPath = file.getAbsolutePath() + "/" + fileName;
582
                                File afile = new File(fullPath);
583
                                if(fileName.endsWith("dxf") || fileName.endsWith("DXF")){
584
                                        dxfDriver = new DXFMemoryDriver();
585
                                        dxfDriver.open(afile);
586
                                        dxfDriver.initialize();
587
                                        driver = dxfDriver;
588
                                }else if (fileName.endsWith("shp") || fileName.endsWith("SHP")){
589
                                        shpDriver = new IndexedShpDriver();
590
                                        shpDriver.open(afile);
591
                                        shpDriver.initialize();
592
                                        driver = shpDriver;
593
                                }else if (fileName.endsWith("dgn") || fileName.endsWith("DGN")){
594
                                        dgnDriver = new DgnMemoryDriver();
595
                                        dgnDriver.open(afile);
596
                                        dgnDriver.initialize();
597
                                        driver = dxfDriver;
598
                                }
599
                                solution[i] = (FLyrVect) LayerFactory.createLayer(fileName,
600
                                                                                                driver,
601
                                                                                                afile,
602
                                                                                                projection);
603
                                
604
                        }
605
                } catch (IOException e) {
606
                        // TODO Auto-generated catch block
607
                        e.printStackTrace();
608
                } catch (DriverException e) {
609
                        // TODO Auto-generated catch block
610
                        e.printStackTrace();
611
                }
612
                return solution;
613
        }
614

    
615
        /**
616
         * This method initializes directoryLayerScrollPane        
617
         *         
618
         * @return javax.swing.JScrollPane        
619
         */
620
        private JScrollPane getDirectoryLayerScrollPane() {
621
                if (directoryLayerScrollPane == null) {
622
                        directoryLayerScrollPane = new JScrollPane();
623
                        directoryLayerScrollPane.setBounds(new java.awt.Rectangle(10,29,428,59));
624
                        directoryLayerScrollPane.setViewportView(getDirectoryLayerList());
625
                }
626
                return directoryLayerScrollPane;
627
        }
628

    
629
        /**
630
         * This method initializes directoryLayerList        
631
         *         
632
         * @return javax.swing.JList        
633
         */
634
        private JList getDirectoryLayerList() {
635
                if (directoryLayerList == null) {
636
                        directoryLayerList = new JList(getDirectoryLayerNames());
637
                        AditionalLayerSelectorListener listener = 
638
                                new AditionalLayerSelectorListener(aditionalLayers);
639
                        directoryLayerList.addListSelectionListener(listener);
640
                }
641
                return directoryLayerList;
642
        }
643
        
644
        public ViewInfo getViewInfo() {
645
                if (viewInfo == null) {
646
                        viewInfo = new ViewInfo(ViewInfo.MODALDIALOG);
647
                        viewInfo.setTitle(PluginServices.getText(this,
648
                                        "Juntar"));
649
                }
650
                return viewInfo;
651
        }
652

    
653
        /**
654
         * This method initializes resultLayerPanel        
655
         *         
656
         * @return javax.swing.JPanel        
657
         */
658
        private JPanel getResultLayerPanel() {
659
                if (resultLayerPanel == null) {
660
                        jLabel = new JLabel();
661
                        jLabel.setText(PluginServices.getText(this, "Cobertura_de_salida") + ":");
662
                        jLabel.setBounds(new java.awt.Rectangle(2,5,128,26));
663
                        resultLayerPanel = new JPanel();
664
                        resultLayerPanel.setLayout(null);
665
                        resultLayerPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));
666
                        resultLayerPanel.add(getOutputJButton(), null);
667
                        resultLayerPanel.add(getFileNameResultTextField(), null);
668
                        resultLayerPanel.add(jLabel, null);
669
                }
670
                return resultLayerPanel;
671
        }
672

    
673
        /**
674
         * This method initializes resultSchemaPanel        
675
         *         
676
         * @return javax.swing.JPanel        
677
         */
678
        private JPanel getResultSchemaPanel() {
679
                if (resultSchemaPanel == null) {
680
                        jLabel1 = new JLabel();
681
                        jLabel1.setText(PluginServices.getText(this, "Usar_los_campos_de_la_capa") + ":");
682
                        jLabel1.setBounds(new java.awt.Rectangle(11,5,203,25));
683
                        resultSchemaPanel = new JPanel();
684
                        resultSchemaPanel.setLayout(null);
685
                        resultSchemaPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));
686
                        resultSchemaPanel.add(getFieldsJComboBox(), null);
687
                        resultSchemaPanel.add(jLabel1, null);
688
                }
689
                return resultSchemaPanel;
690
        }
691

    
692
        /**
693
         * This method initializes directoryPanel        
694
         *         
695
         * @return javax.swing.JPanel        
696
         */
697
        private JPanel getDirectoryPanel() {
698
                if (directoryPanel == null) {
699
                        directoryLabel = new JLabel();
700
                        directoryLabel.setText(PluginServices.getText(this, "Capas_del_directorio") + ":");
701
                        directoryLabel.setBounds(new java.awt.Rectangle(9,5,429,19));
702
                        directoryPanel = new JPanel();
703
                        directoryPanel.setLayout(null);
704
                        directoryPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));
705
                        directoryPanel.add(getDirectoryButton(), null);
706
                        directoryPanel.add(getDirectoryLayerScrollPane(), null);
707
                        directoryPanel.add(directoryLabel, null);
708
                }
709
                return directoryPanel;
710
        }
711

    
712
        /**
713
         * This method initializes inputLyrPanel        
714
         *         
715
         * @return javax.swing.JPanel        
716
         */
717
        private JPanel getInputLyrPanel() {
718
                if (inputLyrPanel == null) {
719
                        jLabel2 = new JLabel();
720
                        jLabel2.setBounds(new java.awt.Rectangle(13,4,422,16));
721
                        jLabel2.setText(PluginServices.getText(this, "Coberturas_de_entrada") + ":");
722
                        inputLyrPanel = new JPanel();
723
                        inputLyrPanel.setLayout(null);
724
                        inputLyrPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));
725
                        inputLyrPanel.add(getInputJScrollPane(), null);
726
                        inputLyrPanel.add(jLabel2, null);
727
                }
728
                return inputLyrPanel;
729
        }
730

    
731
}  //  @jve:decl-index=0:visual-constraint="18,18"