Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.labeling.app / org.gvsig.labeling.app.mainplugin / src / main / java / org / gvsig / labeling / gui / layerproperties / FeatureDependent.java @ 42981

History | View | Annotate | Download (21.3 KB)

1 40911 jldominguez
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.labeling.gui.layerproperties;
25
26
import java.awt.BorderLayout;
27
import java.awt.Component;
28
import java.awt.Dimension;
29
import java.awt.GridLayout;
30
import java.awt.event.ActionEvent;
31
import java.awt.event.ActionListener;
32
import java.awt.event.MouseAdapter;
33
import java.awt.event.MouseEvent;
34
import java.beans.PropertyChangeEvent;
35 41670 jjdelcerro
import java.util.Collection;
36 40911 jldominguez
37
import javax.swing.AbstractCellEditor;
38 41670 jjdelcerro
import javax.swing.DefaultComboBoxModel;
39 40911 jldominguez
import javax.swing.JButton;
40
import javax.swing.JCheckBox;
41 41670 jjdelcerro
import javax.swing.JComboBox;
42 40911 jldominguez
import javax.swing.JComponent;
43
import javax.swing.JLabel;
44
import javax.swing.JOptionPane;
45
import javax.swing.JPanel;
46
import javax.swing.JScrollPane;
47
import javax.swing.JTable;
48
import javax.swing.ListSelectionModel;
49
import javax.swing.event.TableModelEvent;
50
import javax.swing.event.TableModelListener;
51
import javax.swing.table.DefaultTableModel;
52
import javax.swing.table.TableCellEditor;
53
import javax.swing.table.TableCellRenderer;
54
import javax.swing.table.TableColumnModel;
55
56 41670 jjdelcerro
import org.gvsig.app.gui.labeling.LabelClassEditor;
57 40911 jldominguez
import org.gvsig.fmap.dal.exception.ReadException;
58
import org.gvsig.fmap.dal.feature.FeatureStore;
59
import org.gvsig.fmap.dal.feature.FeatureType;
60
import org.gvsig.fmap.mapcontext.rendering.legend.styling.ILabelClass;
61 41670 jjdelcerro
import org.gvsig.fmap.mapcontext.rendering.legend.styling.ILabelClassFactory;
62 40911 jldominguez
import org.gvsig.fmap.mapcontext.rendering.legend.styling.ILabelingMethod;
63
import org.gvsig.gui.beans.swing.celleditors.BooleanTableCellEditor;
64
import org.gvsig.gui.beans.swing.cellrenderers.BooleanTableCellRenderer;
65
import org.gvsig.i18n.Messages;
66
import org.gvsig.labeling.label.FeatureDependentLabeled;
67
import org.gvsig.symbology.SymbologyLocator;
68 41670 jjdelcerro
import org.gvsig.symbology.SymbologyManager;
69
import org.gvsig.symbology.swing.SymbologySwingLocator;
70
import org.gvsig.symbology.swing.SymbologySwingManager;
71
import org.gvsig.tools.ToolsLocator;
72
import org.gvsig.tools.i18n.I18nManager;
73
import org.slf4j.Logger;
74
import org.slf4j.LoggerFactory;
75 40911 jldominguez
76
public class FeatureDependent extends AbstractLabelingMethodPanel implements ActionListener{
77 41670 jjdelcerro
        private static final Logger logger = LoggerFactory.getLogger(FeatureDependent.class);
78 42981 fdiaz
79 40911 jldominguez
        private static final long serialVersionUID = 5493451803343695650L;
80
        private static int NAME_FIELD_INDEX = 0;
81
        private static int PREVIEW_FIELD_INDEX = 1;
82
        private static int FILTER_FIELD_INDEX = 2;
83
        private static int LABEL_EXPRESSION_FIELD_INDEX = 3;
84
        private static int VISIBLE_FIELD_INDEX = 4;
85
        JTable tblClasses = null;
86
        private JButton btnMoveUpClass;
87
        private JButton btnAddClass;
88
        private JCheckBox chkLabel;
89
        private JCheckBox chkDefinePriorities;
90
        private JScrollPane scrlPan;
91
        private boolean openEditor = false;
92
        private JButton btnMoveDownClass;
93
        private JButton btnDelClass;
94 42981 fdiaz
95
    private JPanel panel;
96
97
98 40911 jldominguez
        /*
99
        private String[] fieldNames;
100
        private int[] fieldTypes;
101
        */
102
        private JPanel buttonPanel;
103 41670 jjdelcerro
    private JComboBox comboLabelClassFactoryToUse;
104 40911 jldominguez
105
        @Override
106
        public String getName() {
107 42981 fdiaz
108 40911 jldominguez
                return Messages.getText(
109
                                "define_classes_of_features_and_label_each_differently")+".";
110
        }
111
112
        @Override
113
        public Class<? extends ILabelingMethod> getLabelingMethodClass() {
114
                return FeatureDependentLabeled.class;
115
        }
116
117
118
        private JCheckBox getChkDefinePriorities() {
119
                if (chkDefinePriorities == null) {
120
                        chkDefinePriorities = new JCheckBox(Messages.getText("label_priority"));
121
                        chkDefinePriorities.addActionListener(this);
122
                        chkDefinePriorities.setName("CHK_DEFINE_PRIORITIES");
123
                }
124
                return chkDefinePriorities;
125
        }
126
127
128
        private JButton getBtnDelClass() {
129
                if (btnDelClass == null) {
130
                        btnDelClass = new JButton(Messages.getText("delete"));
131
                        btnDelClass.setName("BTNDELCLASS");
132
                        btnDelClass.addActionListener(this);
133
                }
134
                return btnDelClass;
135
        }
136
137
        private JButton getBtnAddClass() {
138
                if (btnAddClass == null) {
139
                        btnAddClass = new JButton(Messages.getText("add"));
140
                        btnAddClass.setName("BTNADDCLASS");
141
                        btnAddClass.addActionListener(this);
142
                }
143
                return btnAddClass;
144
        }
145
146
        private JButton getBtnMoveUpClass() {
147
                if (btnMoveUpClass == null) {
148
                        btnMoveUpClass = new JButton(Messages.getText("move_up"));
149
                        btnMoveUpClass.setName("BTNMOVEUPCLASS");
150
                        btnMoveUpClass.addActionListener(this);
151
                }
152
                return btnMoveUpClass;
153
        }
154
155
        private JButton getBtnMoveDownClass() {
156
                if (btnMoveDownClass == null) {
157
                        btnMoveDownClass = new JButton(Messages.getText("move_down"));
158
                        btnMoveDownClass.setName("BTNMOVEDOWNCLASS");
159
                        btnMoveDownClass.addActionListener(this);
160
                }
161
                return btnMoveDownClass;
162
        }
163
164
        private JScrollPane getCenterScrl() {
165
166
                        scrlPan = new JScrollPane(getTblClasses());
167
                        scrlPan.setPreferredSize(new Dimension(180, 300));
168
169
                return scrlPan;
170
        }
171
172
173
        private JTable getTblClasses() {
174
175
                        tblClasses = new JTable(new LabelClassTableModel());
176
                tblClasses.setRowHeight(50);
177
                tblClasses.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
178
                tblClasses.addMouseListener(new MouseAdapter() {
179
                        int prevRow =-1;
180
                        @Override
181
                        public void mouseClicked(MouseEvent e) {
182
                                        if (!tblClasses.isEnabled()){
183
                                                return;
184
                                        }
185
                                        int col = tblClasses.getColumnModel().getColumnIndexAtX(e.getX());
186
                                        int row = (int) ((e.getY()-tblClasses.getLocation().getY()) / tblClasses.getRowHeight());
187
                                        if(!(row > tblClasses.getRowCount()-1 || col > tblClasses.getColumnCount()-1))
188
                                        {
189
                                                openEditor = (row == prevRow && e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 2
190
                                                ) ;
191
                                                prevRow = row;
192
                                                if (openEditor)
193
                                                        tblClasses.editCellAt(row, col);
194
                                        }
195
                                }
196
                });
197
198
                tblClasses.getModel().addTableModelListener(new TableModelListener() {
199
200
                        public void tableChanged(TableModelEvent e) {
201
                                if (!tblClasses.isEnabled()){
202
                                        return;
203
                                }
204
205
                                if(e.getColumn() == VISIBLE_FIELD_INDEX){
206
                                        ILabelClass oldLc = (ILabelClass) tblClasses.getValueAt(e.getFirstRow(), PREVIEW_FIELD_INDEX);
207
                                        oldLc.setVisible(Boolean.valueOf(tblClasses.getValueAt(e.getFirstRow(), VISIBLE_FIELD_INDEX).toString()));
208
                                }
209
                        }
210
211
                });
212
213
                TableColumnModel cm = tblClasses.getColumnModel();
214
215
                tblClasses.getColumnModel().getColumn(PREVIEW_FIELD_INDEX).setCellRenderer(new TableCellRenderer() {
216
217
                        public Component getTableCellRendererComponent(JTable table,
218
                                        Object value, boolean isSelected, boolean hasFocus,
219
                                        int row, int column) {
220
                                LabelClassPreview lcPr = new LabelClassPreview();
221
                                lcPr.setLabelClass((ILabelClass) value);
222
                                return lcPr;
223
                        }
224
225
                });
226
                tblClasses.getColumnModel().getColumn(VISIBLE_FIELD_INDEX).setCellRenderer(new BooleanTableCellRenderer(false));
227
                tblClasses.getColumnModel().getColumn(LABEL_EXPRESSION_FIELD_INDEX).setCellRenderer(new TableCellRenderer() {
228
                        public Component getTableCellRendererComponent(JTable table,
229
                                        Object value, boolean isSelected, boolean hasFocus,
230
                                        int row, int column) {
231
                                String expr = null;
232
                                if (value != null)
233
                                        expr = (String) value;
234
                                if (expr == null)
235
                                        expr = "";
236
                                // LabelExpressionParser.tokenFor(LabelExpressionParser.EOEXPR);
237
238
//                                expr = expr.replaceAll(LabelExpressionParser.tokenFor(LabelExpressionParser.EOFIELD), " | ");
239
                                // expr = expr.substring(0, expr.length()-1);
240
                                return new JLabel("<html><p>"+expr+"</p></html>", JLabel.CENTER);
241
                        }
242
                });
243
244
                // the editors
245
246
                for (int i = 0; i < tblClasses.getColumnModel().getColumnCount(); i++) {
247
                        if (i!= VISIBLE_FIELD_INDEX) {
248
                                tblClasses.getColumnModel().getColumn(i).setCellEditor(
249
                                                new LabelClassCellEditor(this.layer.getFeatureStore()));
250
                        } else {
251
                                tblClasses.getColumnModel().getColumn(VISIBLE_FIELD_INDEX).
252
                                setCellEditor(new BooleanTableCellEditor(tblClasses));
253
                        }
254
                }
255
                ((DefaultTableModel)tblClasses.getModel()).fireTableDataChanged();
256
                repaint();
257
258
                return tblClasses;
259
        }
260
261 41670 jjdelcerro
        private class LabelClassCellEditor extends AbstractCellEditor implements TableCellEditor {
262 40911 jldominguez
263 41670 jjdelcerro
            private static final long serialVersionUID = 6399823783851437400L;
264
            private FeatureStore fsto = null;
265 40911 jldominguez
266 41670 jjdelcerro
            public LabelClassCellEditor(FeatureStore store) {
267
                fsto = store;
268
            }
269 40911 jldominguez
270 41670 jjdelcerro
            public Component getTableCellEditorComponent(
271
                    JTable table, Object value, boolean isSelected, int row, int column) {
272 40911 jldominguez
273 41670 jjdelcerro
                if (openEditor) {
274
                    SymbologySwingManager manager = SymbologySwingLocator.getSwingManager();
275
                    ILabelClass oldLc = (ILabelClass) tblClasses.getValueAt(row, PREVIEW_FIELD_INDEX);
276
                    oldLc.setVisible(Boolean.valueOf(tblClasses.getValueAt(row, VISIBLE_FIELD_INDEX).toString()));
277
                    LabelClassEditor lcProp = manager.createLabelClassEditor(oldLc,fsto);
278
                    oldLc.setTexts(new String[]{oldLc.getName()});
279 40911 jldominguez
280 41670 jjdelcerro
                    lcProp.showDialog();
281
                    if( !lcProp.isAccepted() ) {
282
                        return null;
283
                    }
284
                    ILabelClass newLc = lcProp.getLabelClass();
285 40911 jldominguez
286 41670 jjdelcerro
                    LabelClassTableModel m = (LabelClassTableModel) tblClasses.getModel();
287
                    Boolean changeDone = false;
288 40911 jldominguez
289 41670 jjdelcerro
                    if (!(oldLc.getName().equals(newLc.getName()))) {
290
                        if (!checSameLablClassName(m, newLc.getName())) {
291 40911 jldominguez
292 41670 jjdelcerro
                            m.setValueAt(newLc.getStringLabelExpression(), row, LABEL_EXPRESSION_FIELD_INDEX);
293
                            m.setValueAt(newLc.getName(), row, NAME_FIELD_INDEX);
294
                            m.setValueAt(newLc, row, PREVIEW_FIELD_INDEX);
295
                            m.setValueAt(newLc.getSQLQuery(), row, FILTER_FIELD_INDEX);
296
                            m.setValueAt(newLc.isVisible(), row, VISIBLE_FIELD_INDEX);
297
                            fireEditingStopped(); //Make the renderer reappear.
298
                            changeDone = true;
299
                        } else {
300
                            JOptionPane.showMessageDialog(tblClasses,
301
                                    Messages.getText(
302
                                            "cannot_exist_two_label_classes_with_the_same_name")
303
                                    + "\n",
304
                                    Messages.getText("error"),
305
                                    JOptionPane.ERROR_MESSAGE);
306
                            changeDone = true;
307
                        }
308
                    }
309
                    if (!changeDone) {
310
                        m.setValueAt(newLc.getStringLabelExpression(), row, LABEL_EXPRESSION_FIELD_INDEX);
311
                        m.setValueAt(newLc.getName(), row, NAME_FIELD_INDEX);
312
                        m.setValueAt(newLc, row, PREVIEW_FIELD_INDEX);
313
                        m.setValueAt(newLc.getSQLQuery(), row, FILTER_FIELD_INDEX);
314
                        m.setValueAt(newLc.isVisible(), row, VISIBLE_FIELD_INDEX);
315
                        fireEditingStopped(); //Make the renderer reappear.
316
                        changeDone = true;
317
                    }
318
                }
319 40911 jldominguez
320 41670 jjdelcerro
                method.clearAllClasses();
321
                ILabelClass[] classes = ((LabelClassTableModel) tblClasses.getModel()).toLabelClassArray();
322
                for (int i = 0; i < classes.length; i++) {
323
                    method.addLabelClass(classes[i]);
324
                }
325 40911 jldominguez
326 41670 jjdelcerro
                openEditor = false;
327
                return null;
328
            }
329 40911 jldominguez
330 41670 jjdelcerro
            public Object getCellEditorValue() {
331
                return null;
332
            }
333
334
        }
335
336
337 40911 jldominguez
        private boolean checSameLablClassName(LabelClassTableModel mod, String name) {
338
                for (int i = 0; i < mod.getRowCount(); i++) {
339
                        if(name.equals(mod.getLabelAtRow(i).getName()))
340
                                return true;
341
                }
342
                return false;
343
        }
344
345
346
        private class LabelClassTableModel extends DefaultTableModel {
347 42981 fdiaz
348 40911 jldominguez
                private static final long serialVersionUID = -9152998982339430209L;
349
                Object[][] values;
350
351
                private String[] classesTableFieldNames = new String[] {
352
                                Messages.getText("name"),
353
                                Messages.getText("preview"),
354
                                Messages.getText("filter"),
355
                                Messages.getText("label_expression"),
356
                                Messages.getText("visible"),
357
                };
358
359
360
                public LabelClassTableModel() {
361
                        super();
362
                        ILabelClass[] labelClasses = method.getLabelClasses();
363
364
                        values = new Object[labelClasses.length][classesTableFieldNames.length];
365
                        for (int i = 0; i < values.length; i++) {
366
                                values[i][PREVIEW_FIELD_INDEX] = labelClasses[i];
367
                                values[i][NAME_FIELD_INDEX] = labelClasses[i].getName();
368
                                values[i][FILTER_FIELD_INDEX] = labelClasses[i].getSQLQuery();
369
                                values[i][LABEL_EXPRESSION_FIELD_INDEX] = labelClasses[i].getStringLabelExpression();
370
                                values[i][VISIBLE_FIELD_INDEX] = labelClasses[i].isVisible();
371
                        }
372
                        setDataVector(values, classesTableFieldNames);
373
                }
374
375
                public String getColumnName(int col) {
376
                        return classesTableFieldNames[col];
377
                }
378
379
                public int getColumnCount() {
380
                        return classesTableFieldNames.length;
381
                }
382
383
                @Override
384
                public boolean isCellEditable(int row, int column) {
385
                        return true;
386
                }
387
388
                public ILabelClass getLabelAtRow(int row) {
389
                        return (ILabelClass) getValueAt(row, PREVIEW_FIELD_INDEX);
390
                }
391
392
                public ILabelClass[] toLabelClassArray() {
393
                        ILabelClass[] classes = new ILabelClass[getRowCount()];
394
                        for (int i = 0; i < classes.length; i++) {
395
                                classes[i] = getLabelAtRow(i);
396
                                if (getChkDefinePriorities().isSelected()) {
397
                                        classes[i].setPriority(i);
398
                                }
399
                        }
400
                        return classes;
401
                }
402
403
                public void setClassArray(ILabelClass[] classes) {
404
                        for (int i = 0; i < classes.length; i++) {
405
                                        setValueAt(classes[i],i,PREVIEW_FIELD_INDEX);
406
                                        setValueAt(classes[i].getName(),i,NAME_FIELD_INDEX);
407
                                        setValueAt(classes[i].getSQLQuery(),i,FILTER_FIELD_INDEX);
408
                                        setValueAt(classes[i].getStringLabelExpression(),i,LABEL_EXPRESSION_FIELD_INDEX);
409
                                        setValueAt(classes[i].isVisible(),i,VISIBLE_FIELD_INDEX);
410
                        }
411
412
                }
413
414
        }
415
416
        @Override
417
        protected void initializePanel() {
418
                        setLayout(new BorderLayout());
419 42981 fdiaz
                        add(getPanel(),BorderLayout.CENTER);
420 40911 jldominguez
                }
421
422 42981 fdiaz
    private JPanel getPanel() {
423
        if (this.panel == null) {
424
            this.panel = new JPanel(new BorderLayout());
425 40911 jldominguez
426 42981 fdiaz
            GridLayout gl = new GridLayout(4, 1);
427
            buttonPanel = new JPanel(gl);
428
            buttonPanel.add(getBtnAddClass());
429
            buttonPanel.add(getBtnDelClass());
430
            // buttonPanel.addComponent(new JBlank(10, 10));
431
            buttonPanel.add(getBtnMoveUpClass());
432
            buttonPanel.add(getBtnMoveDownClass());
433
434
            JPanel auxp = new JPanel();
435
            auxp.add(buttonPanel);
436
437
            this.panel.add(auxp, BorderLayout.EAST);
438
            this.panel.add(getChkDefinePriorities(), BorderLayout.NORTH);
439
440
            JPanel centro = new JPanel(new BorderLayout());
441
            centro.add(getLabelClassSelector(), BorderLayout.NORTH);
442
            centro.add(getCenterScrl(), BorderLayout.CENTER);
443
            panel.add(centro, BorderLayout.CENTER);
444
445
        }
446
        return this.panel;
447
448
    }
449
450
451 41670 jjdelcerro
        private JPanel getLabelClassSelector() {
452
            I18nManager i18nManager = ToolsLocator.getI18nManager();
453
            SymbologyManager symbologyMamanger = SymbologyLocator.getSymbologyManager();
454 42981 fdiaz
455 41670 jjdelcerro
            JPanel panel = new JPanel(new BorderLayout());
456 42119 mcompany
            panel.add(new JLabel(i18nManager.getTranslation("_Label_type_to_use_XcolonX")), BorderLayout.WEST);
457 42981 fdiaz
458 41670 jjdelcerro
            DefaultComboBoxModel model = new DefaultComboBoxModel();
459
            Collection<ILabelClassFactory> factories = symbologyMamanger.getLabelClassFactories();
460
            for( ILabelClassFactory factory : factories ) {
461
                model.addElement(factory);
462
            }
463
            this.comboLabelClassFactoryToUse = new JComboBox(model);
464
            panel.add(comboLabelClassFactoryToUse, BorderLayout.CENTER);
465
            if( model.getSize()>0 ) {
466
                comboLabelClassFactoryToUse.setSelectedIndex(0);
467
            }
468
            return panel;
469
        }
470 42981 fdiaz
471
        public void fillPanel(FeatureType fty)
472 40911 jldominguez
        throws ReadException {
473 42981 fdiaz
474 40911 jldominguez
                chkDefinePriorities.setSelected(this.method.definesPriorities());
475
                repaint();
476
        }
477
478
        private void swapClass(int classIndex, int targetPos,int numOfElements) {
479
480
                ILabelClass[] classes = ((LabelClassTableModel)tblClasses.getModel()).toLabelClassArray();
481
                ILabelClass aux = classes[targetPos];
482
                classes[targetPos] = classes[classIndex];
483
                classes[classIndex] = aux;
484
                ((LabelClassTableModel)tblClasses.getModel()).setClassArray(classes);
485
        }
486
487 41670 jjdelcerro
        public void actionPerformed(ActionEvent e) {
488
            if (method == null) {
489
                return;
490
            }
491 40911 jldominguez
492 41670 jjdelcerro
            JComponent c = (JComponent) e.getSource();
493
            LabelClassTableModel mod = ((LabelClassTableModel) tblClasses.getModel());
494 40911 jldominguez
495 41670 jjdelcerro
            if (c.equals(btnAddClass)) {
496
                ILabelClassFactory factory = (ILabelClassFactory) this.comboLabelClassFactoryToUse.getSelectedItem();
497
                if( factory == null ) {
498
                    logger.warn("Can't acces to the defaut selected labelclassfactory.");
499
                    return;
500
                }
501
                ILabelClass newClass = factory.create();
502 40911 jldominguez
503 41670 jjdelcerro
                String name = Messages.getText("labeling")
504
                        + String.valueOf(1);
505 40911 jldominguez
506 41670 jjdelcerro
                int count = 0;
507
                while (checSameLablClassName(mod, name)) {
508
                    count++;
509
                    name = Messages.getText("labeling")
510
                            + String.valueOf(count);
511
                }
512
                newClass.setName(name);
513
                mod.addRow(new Object[]{
514
                    newClass.getName(),
515
                    newClass,
516
                    newClass.getSQLQuery(),
517
                    newClass.getStringLabelExpression(),
518
                    newClass.isVisible()});
519 40911 jldominguez
520 41670 jjdelcerro
            } else if (c.equals(btnDelClass)) {
521
                if (mod.getRowCount() >= 1) {
522
                    int[] sRows = tblClasses.getSelectedRows();
523 40911 jldominguez
524 41670 jjdelcerro
                    for (int i = sRows.length - 1; i >= 0; i--) {
525
                        mod.removeRow(sRows[i]);
526
                    }
527
                }
528
            } else if (c.equals(chkDefinePriorities)) {
529 40911 jldominguez
530 41670 jjdelcerro
                method.setDefinesPriorities(chkDefinePriorities.isSelected());
531 40911 jldominguez
532 41670 jjdelcerro
            } else if (c.equals(chkLabel)) {
533
                int[] sRows = tblClasses.getSelectedRows();
534
                for (int i = sRows.length - 1; i >= 0; i--) {
535
                    ILabelClass lc = mod.getLabelAtRow(i);
536
                    lc.setVisible(chkLabel.isSelected());
537
                }
538 40911 jldominguez
539 41670 jjdelcerro
            } else if (c.equals(btnMoveUpClass)) {
540
                int[] indices = tblClasses.getSelectedRows();
541
                if (indices.length > 0) {
542
                    int classIndex = indices[0];
543
                    int targetPos = Math.max(0, classIndex - 1);
544
                    swapClass(classIndex, targetPos, indices.length);
545
                }
546 40911 jldominguez
547 41670 jjdelcerro
            } else if (c.equals(btnMoveDownClass)) {
548
                int[] indices = tblClasses.getSelectedRows();
549
                if (indices.length > 0) {
550
                    int classIndex = indices[indices.length - 1];
551
                    int targetPos = Math.min(tblClasses.getRowCount() - 1, classIndex + 1);
552
                    swapClass(classIndex, targetPos, indices.length);
553
                }
554 40911 jldominguez
555 41670 jjdelcerro
            } else if (c.equals(btnDelClass)) {
556
                int[] indices = tblClasses.getSelectedRows();
557
                if (indices.length > 0) {
558
                    int classIndex = indices[0];
559
                    int targetPos = Math.min(tblClasses.getRowCount(), classIndex);
560
                    swapClass(classIndex, targetPos, indices.length);
561
                }
562
            }
563 40911 jldominguez
564 41670 jjdelcerro
            mod.fireTableDataChanged();
565
            method.clearAllClasses();
566
            ILabelClass[] classes = ((LabelClassTableModel) tblClasses.getModel()).toLabelClassArray();
567
            for (int i = 0; i < classes.length; i++) {
568
                method.addLabelClass(classes[i]);
569
            }
570
            repaint();
571
        }
572 42981 fdiaz
573 40911 jldominguez
        public void propertyChange(PropertyChangeEvent evt) {
574
                // TODO Auto-generated method stub
575
576
        }
577
578
        public void setEnabled(boolean enabled) {
579
                super.setEnabled(enabled);
580
                getBtnAddClass().setEnabled(enabled);
581
                getBtnDelClass().setEnabled(enabled);
582
                getBtnMoveDownClass().setEnabled(enabled);
583
                getBtnMoveUpClass().setEnabled(enabled);
584
                getChkDefinePriorities().setEnabled(enabled);
585
                scrlPan.setEnabled(enabled);
586
                tblClasses.setEnabled(enabled);
587
        }
588
589
590
591
592
593
594
}