Statistics
| Revision:

svn-gvsig-desktop / trunk / extensions / extGeoProcessing / src / com / iver / cit / gvsig / geoprocess / impl / dissolve / gui / GeoProcessingDissolvePanel.java @ 24989

History | View | Annotate | Download (18.4 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.dissolve.gui;
45

    
46
import java.awt.Component;
47
import java.awt.GridBagConstraints;
48
import java.awt.GridBagLayout;
49
import java.awt.event.ActionEvent;
50
import java.awt.event.ActionListener;
51
import java.io.File;
52
import java.util.ArrayList;
53
import java.util.HashMap;
54
import java.util.Map;
55
import java.util.Set;
56

    
57
import javax.swing.DefaultComboBoxModel;
58
import javax.swing.JButton;
59
import javax.swing.JCheckBox;
60
import javax.swing.JComboBox;
61
import javax.swing.JFileChooser;
62
import javax.swing.JLabel;
63
import javax.swing.JList;
64
import javax.swing.JPanel;
65
import javax.swing.JScrollPane;
66

    
67
import com.hardcode.gdbms.driver.exceptions.ReadDriverException;
68
import com.hardcode.gdbms.engine.data.DataSource;
69
import com.iver.andami.PluginServices;
70
import com.iver.andami.ui.mdiManager.IWindow;
71
import com.iver.andami.ui.mdiManager.WindowInfo;
72
import com.iver.cit.gvsig.fmap.layers.FBitSet;
73
import com.iver.cit.gvsig.fmap.layers.FLayers;
74
import com.iver.cit.gvsig.fmap.layers.FLyrVect;
75
import com.iver.cit.gvsig.fmap.layers.SelectableDataSource;
76
import com.iver.cit.gvsig.fmap.layers.layerOperations.AlphanumericData;
77
import com.iver.cit.gvsig.geoprocess.core.fmap.SummarizationFunction;
78
import com.iver.cit.gvsig.geoprocess.core.fmap.XTypes;
79
import com.iver.cit.gvsig.geoprocess.core.gui.AbstractGeoprocessPanel;
80
import com.iver.cit.gvsig.geoprocess.core.gui.NumericFieldListModel;
81
import com.iver.cit.gvsig.geoprocess.core.gui.SumFuncListModel;
82
import com.iver.cit.gvsig.geoprocess.core.gui.SumarizeFunctionsDialog;
83
import com.iver.cit.gvsig.geoprocess.core.gui.NumericFieldListModel.NumericFieldListEntry;
84
import com.iver.utiles.GenericFileFilter;
85

    
86
/**
87
 * Panel to work with DissolveGeoprocess in Geoprocessing Wizard.
88
 *
89
 * Precondition: all inputs layer of constructor must be FLyrVect
90
 *
91
 * @author azabala
92
 *
93
 */
94
public class GeoProcessingDissolvePanel extends AbstractGeoprocessPanel implements
95
                DissolvePanelIF, IWindow {
96

    
97
        private static final long serialVersionUID = 1L;
98

    
99
        private JLabel titleJLabel = null;
100

    
101
        private JLabel inputCoverJLabel = null;
102
        /**
103
         * Allows user to specify if a dissolve precondition
104
         * in two polygons with the same dissolve field value must
105
         * be spatial adjacency
106
         */
107
        private JCheckBox onlySelectedItemsJCheckBox = null;
108

    
109

    
110
        private JLabel dissolveFieldJLabel = null;
111
        /**
112
         * Allows user to specify dissolve field
113
         */
114
        private JComboBox dissolveFieldJComboBox = null;
115

    
116
        private JScrollPane additionalOperationsJScrollPane = null;
117

    
118
        private JList numericFieldJList = null;
119

    
120
        private JButton outputCoverJButton = null;
121

    
122
        private File outputFile = null;
123

    
124
        private JScrollPane sumarizationFunctionScrollPane = null;
125

    
126
        private JList sumarizeFunctionsJList;
127

    
128
        private JButton sumFunctionSelectionJButton = null;
129

    
130
        private SumarizeFunctionsDialog sumarizeFuncDialog = null;
131

    
132
        /**
133
         * Relates a numeric field with its sumarize functions
134
         */
135
        private Map nField_sumFuntionList = null;
136

    
137
        private WindowInfo viewInfo;
138

    
139
        private JPanel resultLayerPanel = null;
140

    
141
        private JLabel jLabel = null;
142

    
143
        private JPanel sumarizeAttributesPanel = null;
144

    
145
        private JLabel jLabel1 = null;
146

    
147
        private JLabel jLabel2 = null;
148

    
149
        private JCheckBox adjacencyCheckbox = null;
150
        /**
151
         * This constructor initializes the set of layers
152
         *
153
         * TODO PRECONDITION: check for only FLyrVect layers
154
         *
155
         *
156
         */
157
        public GeoProcessingDissolvePanel(FLayers layers) {
158
                super();
159
                this.layers = layers;
160
                initialize();
161
        }
162

    
163
        /**
164
         * This method initializes this
165
         *
166
         * @return void
167
         */
168
        private void initialize() {
169
                dissolveFieldJLabel = new JLabel();
170
                dissolveFieldJLabel.setBounds(5, 93, 180, 22);
171
                dissolveFieldJLabel.setText(PluginServices.getText(this,
172
                                "Campo_para_disolver")
173
                                + ":");
174
                inputCoverJLabel = new JLabel();
175
                inputCoverJLabel.setBounds(5, 36, 191, 22);
176
                inputCoverJLabel.setText(PluginServices.getText(this,
177
                                "Cobertura_de_entrada")
178
                                + ":");
179
                titleJLabel = new JLabel();
180
                titleJLabel.setBounds(5, 5, 208, 22);
181
                titleJLabel.setText(PluginServices.getText(this,
182
                                "Disolver._Introduccion_de_datos")
183
                                + ":");
184
                this.setLayout(null);
185
                this.setBounds(new java.awt.Rectangle(0,0,486,377));
186
                this.add(titleJLabel, null);
187
                this.add(inputCoverJLabel, null);
188
                this.add(getInputCoverJComboBox(), null);
189
                this.add(getOnlySelectedItemsJCheckBox(), null);
190
                this.add(dissolveFieldJLabel, null);
191
                this.add(getDissolveFieldJComboBox(), null);
192
                this.add(getResultLayerPanel(), null);
193
                this.add(getSumarizeAttributesPanel(), null);
194
                this.add(getAdjacencyCheckbox(), null);
195
                this.nField_sumFuntionList = new HashMap();
196
                layersComboBox.setSelectedIndex(0);
197
                inputLayerSelectedChange();
198
                // initSelectedItemsJCheckBox();
199
        }
200

    
201
        private String[] getFieldNames() {
202
                AlphanumericData lyr = (AlphanumericData) getInputLayer();
203
                DataSource ds;
204
                String[] fieldNames = null;
205
                try {
206
                        ds = lyr.getRecordset();
207
                        fieldNames = new String[ds.getFieldCount()];
208
                        for (int i = 0; i < ds.getFieldCount(); i++) {
209
                                fieldNames[i] = ds.getFieldName(i);
210
                        }
211
                } catch (ReadDriverException e) {
212
                        e.printStackTrace();
213
                }
214
                return fieldNames;
215
        }
216

    
217
        /**
218
         * Says if adjacency checkbox has been checked by
219
         * user
220
         * @return
221
         */
222
        public boolean onlyAdjacentSelected(){
223
                return adjacencyCheckbox.isSelected();
224
        }
225

    
226
        private void initSelectedItemsJCheckBox() {
227
                FLyrVect inputSelectable = (FLyrVect) getInputLayer();
228
                FBitSet fBitSet = null;
229
                try {
230
                        fBitSet = inputSelectable.getRecordset().getSelection();
231
                } catch (ReadDriverException e) {
232
                        // TODO Auto-generated catch block
233
                        e.printStackTrace();
234
                }
235
                if (fBitSet.cardinality() == 0) {
236
                        onlySelectedItemsJCheckBox.setEnabled(false);
237
                } else {
238
                        onlySelectedItemsJCheckBox.setEnabled(true);
239
                }
240
                onlySelectedItemsJCheckBox.setSelected(false);
241
        }
242

    
243
        /**
244
         * This method initializes inputCoverJComboBox
245
         *
246
         * @return javax.swing.JComboBox
247
         */
248
        private JComboBox getInputCoverJComboBox() {
249
                if (layersComboBox == null) {
250
                        layersComboBox = new JComboBox();
251
                        DefaultComboBoxModel defaultModel = new DefaultComboBoxModel(
252
                                        getLayerNames());
253
                        layersComboBox.setModel(defaultModel);
254
                        layersComboBox.setBounds(144, 36, 241, 22);
255
                        layersComboBox
256
                                        .addItemListener(new java.awt.event.ItemListener() {
257
                                                public void itemStateChanged(java.awt.event.ItemEvent e) {
258
                                                        inputLayerSelectedChange();
259
                                                }
260
                                        });
261
                }
262
                return layersComboBox;
263
        }
264

    
265
        /**
266
         * This method initializes onlySelectedItemsJCheckBox
267
         *
268
         * @return javax.swing.JCheckBox
269
         */
270
        private JCheckBox getOnlySelectedItemsJCheckBox() {
271
                if (onlySelectedItemsJCheckBox == null) {
272
                        onlySelectedItemsJCheckBox = new JCheckBox();
273
                        onlySelectedItemsJCheckBox.setBounds(5, 64, 351, 22);
274
                        onlySelectedItemsJCheckBox.setText(PluginServices.getText(this,
275
                                        "Usar_solamente_los_elementos_seleccionados"));
276
                }
277
                return onlySelectedItemsJCheckBox;
278
        }
279

    
280
        /**
281
         * This method initializes dissolveFieldJComboBox
282
         *
283
         * @return javax.swing.JComboBox
284
         */
285
        private JComboBox getDissolveFieldJComboBox() {
286
                if (dissolveFieldJComboBox == null) {
287
                        dissolveFieldJComboBox = new JComboBox();
288
                        DefaultComboBoxModel defaultModel = new DefaultComboBoxModel(
289
                                        getFieldNames());
290
                        dissolveFieldJComboBox.setModel(defaultModel);
291
                        dissolveFieldJComboBox.setBounds(227, 93, 241, 22);
292
                }
293
                return dissolveFieldJComboBox;
294
        }
295

    
296
        /**
297
         * This method initializes additionalOperationsJScrollPane
298
         *
299
         * @return javax.swing.JScrollPane
300
         */
301
        private JScrollPane getAdditionalOperationsJScrollPane() {
302
                if (additionalOperationsJScrollPane == null) {
303
                        additionalOperationsJScrollPane = new JScrollPane();
304
                        additionalOperationsJScrollPane
305
                                        .setViewportView(getNumericFieldJList());
306
                        additionalOperationsJScrollPane.setEnabled(false);
307
                        additionalOperationsJScrollPane.setBounds(new java.awt.Rectangle(14,36,139,112));
308
                }
309
                return additionalOperationsJScrollPane;
310
        }
311

    
312
        /**
313
         * This method initializes numericFieldJList
314
         *
315
         * @return javax.swing.JList
316
         */
317
        private JList getNumericFieldJList() {
318
                if (numericFieldJList == null) {
319
                        numericFieldJList = new JList();
320
                }
321
                return numericFieldJList;
322
        }
323

    
324

    
325
        /**
326
         * This method initializes outputCoverJButton
327
         *
328
         * @return javax.swing.JButton
329
         */
330
        private JButton getOutputCoverJButton() {
331
                if (outputCoverJButton == null) {
332
                        outputCoverJButton = new JButton();
333
                        outputCoverJButton
334
                                        .addActionListener(new java.awt.event.ActionListener() {
335
                                                public void actionPerformed(java.awt.event.ActionEvent e) {
336
                                                        openResultFile();
337
                                                }
338
                                        });
339
                        outputCoverJButton.setText(PluginServices.getText(this, "Abrir"));
340
                }
341
                return outputCoverJButton;
342
        }
343

    
344
        public void openResultFile() {
345
                // FIXME This code is similar in all GeoProcessingXXXPanels.
346
                // Create an utility class
347
                JFileChooser jfc = new JFileChooser();
348
                // FIXME Internationalize "Ficheros SHP" String
349
                jfc
350
                                .addChoosableFileFilter(new GenericFileFilter("shp",
351
                                                "Ficheros SHP"));
352
                if (jfc.showSaveDialog((Component) PluginServices.getMainFrame()) == JFileChooser.APPROVE_OPTION) {
353
                        File file = jfc.getSelectedFile();
354
                        if (!(file.getPath().endsWith(".shp") || file.getPath().endsWith(
355
                                        ".SHP"))) {
356
                                file = new File(file.getPath() + ".shp");
357
                        }
358
                        outputFile = file;
359
                }
360
                if (jfc.getSelectedFile() != null) {
361
                        getFileNameResultTextField().setText(
362
                                        jfc.getSelectedFile().getAbsolutePath());
363
                }
364

    
365
        }
366

    
367
        public boolean isDissolveOnlySelected() {
368
                return onlySelectedItemsJCheckBox.isSelected();
369
        }
370

    
371
        public String getDissolveFieldName() {
372
                return (String) dissolveFieldJComboBox.getSelectedItem();
373
        }
374

    
375
        /**
376
         * Returns numeric fields' names of the selected input layer.
377
         * Needed to say user where he could apply sumarization functions.
378
         */
379
        public String[] getInputLayerNumericFields() {
380
                String[] solution;
381
                FLyrVect layer = getInputLayer();
382
                ArrayList list = new ArrayList();
383

    
384
                try {
385
                        SelectableDataSource recordset = layer.getRecordset();
386
                        int numFields = recordset.getFieldCount();
387
                        for (int i = 0; i < numFields; i++) {
388
                                if (XTypes.isNumeric(recordset.getFieldType(i))) {
389
                                        list.add(recordset.getFieldName(i));
390
                                }
391
                        }// for
392
                } catch (ReadDriverException e) {
393
                        return null;
394
                }
395
                solution = new String[list.size()];
396
                list.toArray(solution);
397
                return solution;
398

    
399
        }
400

    
401
        /**
402
         * This method initializes sumarizationFunctionScrollPane
403
         *
404
         * @return javax.swing.JScrollPane
405
         */
406
        private JScrollPane getSumarizationFunctionScrollPane() {
407
                if (sumarizationFunctionScrollPane == null) {
408
                        sumarizationFunctionScrollPane = new JScrollPane();
409
                        sumarizationFunctionScrollPane.setBounds(new java.awt.Rectangle(314,36,139,112));
410
                        sumarizationFunctionScrollPane
411
                                        .setViewportView(getSumarizeFunctionsJList());
412

    
413
                }
414
                return sumarizationFunctionScrollPane;
415
        }
416

    
417
        /**
418
         * Returns a list with SumarizationFunctions for each numerical field of
419
         * field lists (in the same order).
420
         *
421
         * @return
422
         */
423
        private JList getSumarizeFunctionsJList() {
424
                if (sumarizeFunctionsJList == null) {
425
                        sumarizeFunctionsJList = new JList();
426
                }
427
                return sumarizeFunctionsJList;
428
        }
429

    
430
        /**
431
         * This method initializes sumFunctionSelectionJButton
432
         *
433
         * @return javax.swing.JButton
434
         */
435
        private JButton getSumFunctionSelectionJButton() {
436
                if (sumFunctionSelectionJButton == null) {
437
                        sumFunctionSelectionJButton = new JButton();
438
                        sumFunctionSelectionJButton.setText(PluginServices.getText(this,
439
                                        "Escoger_Fun_Resumen"));
440
                        sumFunctionSelectionJButton.setBounds(new java.awt.Rectangle(171,69,116,22));
441
                        sumFunctionSelectionJButton.addActionListener(new ActionListener() {
442
                                public void actionPerformed(ActionEvent arg0) {
443
                                        openSumarizeFunction();
444
                                }
445

    
446
                        });
447
                }
448
                return sumFunctionSelectionJButton;
449
        }
450

    
451
        /**
452
         * Process change selection events of input layer combo box
453
         */
454
        public void inputLayerSelectedChange() {
455
                // Cambiar el estado del CheckBox
456
                initSelectedItemsJCheckBox();
457
                // Cambiar el estado del jComboBox1
458
                DefaultComboBoxModel defaultModel = new DefaultComboBoxModel(
459
                                getFieldNames());
460
                dissolveFieldJComboBox.setModel(defaultModel);
461
                String[] numericFields = getInputLayerNumericFields();
462
                NumericFieldListModel numericListModel = new NumericFieldListModel(
463
                                numericFields);
464
                this.numericFieldJList.setModel(numericListModel);
465

    
466
                this.nField_sumFuntionList = new HashMap();
467
                SumFuncListModel functionListModel = new SumFuncListModel(
468
                                this.nField_sumFuntionList, numericFields);
469
                this.sumarizeFunctionsJList.setModel(functionListModel);
470
                this.sumarizeFunctionsJList.setSelectedIndex(0);
471

    
472
        }
473

    
474
        public void openSumarizeFunction() {
475
                if (sumarizeFuncDialog == null) {
476
                        sumarizeFuncDialog = new SumarizeFunctionsDialog();
477
                        sumarizeFuncDialog.pack();
478

    
479
                }
480
                sumarizeFuncDialog.setSize(205, 181);
481
                sumarizeFuncDialog.resetCheckbox();
482
                sumarizeFuncDialog.setVisible(true);
483
                SummarizationFunction[] functions = sumarizeFuncDialog.getFunctions();
484

    
485
                NumericFieldListEntry fieldName = (NumericFieldListEntry) this.numericFieldJList.getSelectedValue();
486
                if(fieldName.getKey() != null  ){
487
                        if(!fieldName.getKey().equals(""))
488
                                        nField_sumFuntionList.put(fieldName.getKey(), functions);
489
            }
490
                this.nField_sumFuntionList.put(fieldName.getKey(), functions);
491

    
492
                // Hay que refrescar la lista y el listModel
493
                String[] numericFields = getInputLayerNumericFields();
494
                SumFuncListModel functionListModel = new SumFuncListModel(
495
                                this.nField_sumFuntionList, numericFields);
496
                this.sumarizeFunctionsJList.setModel(functionListModel);
497
                this.sumarizeFunctionsJList.setSelectedIndex(0);
498

    
499
        }
500

    
501
        public String[] getFieldsToSummarize() {
502
                String[] solution = null;
503
                Set keySet = nField_sumFuntionList.keySet();
504
                solution = new String[keySet.size()];
505
                keySet.toArray(solution);
506
                return solution;
507

    
508
        }
509

    
510
        public Map getFieldFunctionMap() {
511
                return this.nField_sumFuntionList;
512
        }
513

    
514
        public SummarizationFunction[] getSumarizationFunctinFor(
515
                        String numericFieldName) {
516
                return (SummarizationFunction[]) nField_sumFuntionList
517
                                .get(numericFieldName);
518
        }
519

    
520
        public WindowInfo getWindowInfo() {
521
                if (viewInfo == null) {
522
                        viewInfo = new WindowInfo(WindowInfo.MODALDIALOG);
523
                        viewInfo.setTitle(PluginServices.getText(this,
524
                                        "Disolver"));
525
                }
526
                return viewInfo;
527
        }
528
        public Object getWindowProfile(){
529
                return WindowInfo.DIALOG_PROFILE;
530
        }
531

    
532
        /**
533
         * This method initializes resultLayerPanel
534
         *
535
         * @return javax.swing.JPanel
536
         */
537
        private JPanel getResultLayerPanel() {
538
                if (resultLayerPanel == null) {
539
                        GridBagConstraints gridBagConstraints3 = new GridBagConstraints();
540
                        gridBagConstraints3.insets = new java.awt.Insets(14,3,9,4);
541
                        gridBagConstraints3.gridy = 0;
542
                        gridBagConstraints3.ipadx = 47;
543
                        gridBagConstraints3.ipady = 6;
544
                        gridBagConstraints3.gridx = 0;
545
                        GridBagConstraints gridBagConstraints2 = new GridBagConstraints();
546
                        gridBagConstraints2.fill = java.awt.GridBagConstraints.HORIZONTAL;
547
                        gridBagConstraints2.gridx = 1;
548
                        gridBagConstraints2.gridy = 0;
549
                        gridBagConstraints2.ipadx = 173;
550
                        gridBagConstraints2.ipady = 2;
551
                        gridBagConstraints2.weightx = 1.0;
552
                        gridBagConstraints2.insets = new java.awt.Insets(14,4,9,7);
553
                        GridBagConstraints gridBagConstraints1 = new GridBagConstraints();
554
                        gridBagConstraints1.insets = new java.awt.Insets(14,7,9,21);
555
                        gridBagConstraints1.gridy = 0;
556
                        gridBagConstraints1.ipadx = 11;
557
                        gridBagConstraints1.ipady = -4;
558
                        gridBagConstraints1.gridx = 2;
559
                        jLabel = new JLabel();
560
                        jLabel.setText(PluginServices.getText(this, "Cobertura_de_salida") + ":");
561
                        resultLayerPanel = new JPanel();
562
                        resultLayerPanel.setLayout(new GridBagLayout());
563
                        resultLayerPanel.setBounds(new java.awt.Rectangle(4,296,465,45));
564
                        resultLayerPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));
565
                        resultLayerPanel.add(getOutputCoverJButton(), gridBagConstraints1);
566
                        resultLayerPanel.add(getFileNameResultTextField(), gridBagConstraints2);
567
                        resultLayerPanel.add(jLabel, gridBagConstraints3);
568
                }
569
                return resultLayerPanel;
570
        }
571

    
572
        /**
573
         * This method initializes sumarizeAttributesPanel
574
         *
575
         * @return javax.swing.JPanel
576
         */
577
        private JPanel getSumarizeAttributesPanel() {
578
                if (sumarizeAttributesPanel == null) {
579
                        jLabel2 = new JLabel();
580
                        jLabel2.setText(PluginServices.getText(this, "Funciones_Sumarizacion"));
581
                        jLabel2.setBounds(new java.awt.Rectangle(294,9,159,18));
582
                        jLabel1 = new JLabel();
583
                        jLabel1.setText(PluginServices.getText(this, "Atributos_Numericos"));
584
                        jLabel1.setBounds(new java.awt.Rectangle(13,9,171,18));
585
                        sumarizeAttributesPanel = new JPanel();
586
                        sumarizeAttributesPanel.setLayout(null);
587
                        sumarizeAttributesPanel.setBounds(new java.awt.Rectangle(5,142,465,151));
588
                        sumarizeAttributesPanel.setBorder(javax.swing.BorderFactory.createEtchedBorder(javax.swing.border.EtchedBorder.RAISED));
589
                        sumarizeAttributesPanel.add(getAdditionalOperationsJScrollPane(), null);
590
                        sumarizeAttributesPanel.add(getSumFunctionSelectionJButton(), null);
591
                        sumarizeAttributesPanel.add(getSumarizationFunctionScrollPane(), null);
592
                        sumarizeAttributesPanel.add(jLabel1, null);
593
                        sumarizeAttributesPanel.add(jLabel2, null);
594
                }
595
                return sumarizeAttributesPanel;
596
        }
597

    
598
        /**
599
         * This method initializes adjacencyCheckbox
600
         *
601
         * @return javax.swing.JCheckBox
602
         */
603
        private JCheckBox getAdjacencyCheckbox() {
604
                if (adjacencyCheckbox == null) {
605
                        adjacencyCheckbox = new JCheckBox();
606
                        adjacencyCheckbox.setBounds(new java.awt.Rectangle(7,121,263,18));
607
                        adjacencyCheckbox.setText(PluginServices.getText(this, "Solo_disolver_adyacentes"));
608
                }
609
                return adjacencyCheckbox;
610
        }
611

    
612
}  //  @jve:decl-index=0:visual-constraint="13,12"