svn-gvsig-desktop / trunk / extensions / extSymbology / src / org / gvsig / symbology / gui / layerproperties / FeatureDependent.java @ 23903
History | View | Annotate | Download (17 KB)
1 | 22954 | vcaballero | /* gvSIG. Sistema de Informaci?n Geogr?fica de la Generalitat Valenciana
|
---|---|---|---|
2 | *
|
||
3 | * Copyright (C) 2005 IVER T.I. and Generalitat Valenciana.
|
||
4 | *
|
||
5 | * This program is free software; you can redistribute it and/or
|
||
6 | * modify it under the terms of the GNU General Public License
|
||
7 | * as published by the Free Software Foundation; either version 2
|
||
8 | * of the License, or (at your option) any later version.
|
||
9 | *
|
||
10 | * This program is distributed in the hope that it will be useful,
|
||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||
13 | * GNU General Public License for more details.
|
||
14 | *
|
||
15 | * You should have received a copy of the GNU General Public License
|
||
16 | * along with this program; if not, write to the Free Software
|
||
17 | * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307,USA.
|
||
18 | *
|
||
19 | * For more information, contact:
|
||
20 | *
|
||
21 | * Generalitat Valenciana
|
||
22 | * Conselleria d'Infraestructures i Transport
|
||
23 | * Av. Blasco Ib??ez, 50
|
||
24 | * 46010 VALENCIA
|
||
25 | * SPAIN
|
||
26 | *
|
||
27 | * +34 963862235
|
||
28 | * gvsig@gva.es
|
||
29 | * www.gvsig.gva.es
|
||
30 | *
|
||
31 | * or
|
||
32 | *
|
||
33 | * IVER T.I. S.A
|
||
34 | * Salamanca 50
|
||
35 | * 46005 Valencia
|
||
36 | * Spain
|
||
37 | *
|
||
38 | * +34 963163400
|
||
39 | * dac@iver.es
|
||
40 | */
|
||
41 | package org.gvsig.symbology.gui.layerproperties; |
||
42 | |||
43 | import java.awt.BorderLayout; |
||
44 | import java.awt.Component; |
||
45 | import java.awt.Dimension; |
||
46 | import java.awt.event.ActionEvent; |
||
47 | import java.awt.event.ActionListener; |
||
48 | import java.awt.event.MouseAdapter; |
||
49 | import java.awt.event.MouseEvent; |
||
50 | import java.beans.PropertyChangeEvent; |
||
51 | |||
52 | import javax.swing.AbstractCellEditor; |
||
53 | import javax.swing.JCheckBox; |
||
54 | import javax.swing.JComponent; |
||
55 | import javax.swing.JLabel; |
||
56 | import javax.swing.JOptionPane; |
||
57 | 23118 | vcaballero | import javax.swing.JPanel; |
58 | 22954 | vcaballero | import javax.swing.JScrollPane; |
59 | import javax.swing.JTable; |
||
60 | 23118 | vcaballero | import javax.swing.ListSelectionModel; |
61 | 23903 | vcaballero | import javax.swing.event.TableModelEvent; |
62 | import javax.swing.event.TableModelListener; |
||
63 | 22954 | vcaballero | import javax.swing.table.DefaultTableModel; |
64 | import javax.swing.table.TableCellEditor; |
||
65 | import javax.swing.table.TableCellRenderer; |
||
66 | import javax.swing.table.TableColumnModel; |
||
67 | |||
68 | import org.gvsig.gui.beans.swing.GridBagLayoutPanel; |
||
69 | import org.gvsig.gui.beans.swing.JBlank; |
||
70 | import org.gvsig.gui.beans.swing.JButton; |
||
71 | import org.gvsig.gui.beans.swing.celleditors.BooleanTableCellEditor; |
||
72 | import org.gvsig.gui.beans.swing.cellrenderers.BooleanTableCellRenderer; |
||
73 | import org.gvsig.symbology.fmap.labeling.FeatureDependentLabeled; |
||
74 | import org.gvsig.symbology.fmap.labeling.parse.LabelExpressionParser; |
||
75 | |||
76 | import com.hardcode.gdbms.driver.exceptions.ReadDriverException; |
||
77 | import com.iver.andami.PluginServices; |
||
78 | import com.iver.cit.gvsig.fmap.layers.SelectableDataSource; |
||
79 | import com.iver.cit.gvsig.fmap.rendering.styling.labeling.ILabelingMethod; |
||
80 | import com.iver.cit.gvsig.fmap.rendering.styling.labeling.LabelClass; |
||
81 | |||
82 | public class FeatureDependent extends AbstractLabelingMethodPanel implements ActionListener{ |
||
83 | private static final long serialVersionUID = 5493451803343695650L; |
||
84 | private static int NAME_FIELD_INDEX = 0; |
||
85 | private static int PREVIEW_FIELD_INDEX = 1; |
||
86 | private static int FILTER_FIELD_INDEX = 2; |
||
87 | private static int LABEL_EXPRESSION_FIELD_INDEX = 3; |
||
88 | private static int VISIBLE_FIELD_INDEX = 4; |
||
89 | 23118 | vcaballero | JTable tblClasses = null; |
90 | 22954 | vcaballero | private JButton btnMoveUpClass; |
91 | private JButton btnAddClass; |
||
92 | private JCheckBox chkLabel; |
||
93 | private JCheckBox chkDefinePriorities; |
||
94 | private JScrollPane scrlPan; |
||
95 | private boolean openEditor = false; |
||
96 | private JButton btnMoveDownClass; |
||
97 | private JButton btnDelClass; |
||
98 | private String[] fieldNames; |
||
99 | private int[] fieldTypes; |
||
100 | 23118 | vcaballero | private GridBagLayoutPanel buttonPanel;
|
101 | 22954 | vcaballero | |
102 | 23118 | vcaballero | @Override
|
103 | public String getName() { |
||
104 | return PluginServices.getText(
|
||
105 | this,
|
||
106 | "define_classes_of_features_and_label_each_differently")+"."; |
||
107 | } |
||
108 | |||
109 | @Override
|
||
110 | public Class<? extends ILabelingMethod> getLabelingMethodClass() { |
||
111 | return FeatureDependentLabeled.class;
|
||
112 | } |
||
113 | |||
114 | |||
115 | 22954 | vcaballero | private JCheckBox getChkDefinePriorities() { |
116 | if (chkDefinePriorities == null) { |
||
117 | chkDefinePriorities = new JCheckBox(PluginServices.getText(this, "label_priority")); |
||
118 | chkDefinePriorities.addActionListener(this);
|
||
119 | chkDefinePriorities.setName("CHK_DEFINE_PRIORITIES");
|
||
120 | } |
||
121 | return chkDefinePriorities;
|
||
122 | } |
||
123 | |||
124 | |||
125 | private JButton getBtnDelClass() { |
||
126 | if (btnDelClass == null) { |
||
127 | btnDelClass = new JButton(PluginServices.getText(this, "delete")); |
||
128 | btnDelClass.setName("BTNDELCLASS");
|
||
129 | btnDelClass.addActionListener(this);
|
||
130 | } |
||
131 | return btnDelClass;
|
||
132 | } |
||
133 | |||
134 | private JButton getBtnAddClass() { |
||
135 | if (btnAddClass == null) { |
||
136 | btnAddClass = new JButton(PluginServices.getText(this, "add")); |
||
137 | btnAddClass.setName("BTNADDCLASS");
|
||
138 | btnAddClass.addActionListener(this);
|
||
139 | } |
||
140 | return btnAddClass;
|
||
141 | } |
||
142 | |||
143 | private JButton getBtnMoveUpClass() { |
||
144 | if (btnMoveUpClass == null) { |
||
145 | btnMoveUpClass = new JButton(PluginServices.getText(this, "move_up")); |
||
146 | btnMoveUpClass.setName("BTNMOVEUPCLASS");
|
||
147 | btnMoveUpClass.addActionListener(this);
|
||
148 | } |
||
149 | return btnMoveUpClass;
|
||
150 | } |
||
151 | |||
152 | private JButton getBtnMoveDownClass() { |
||
153 | if (btnMoveDownClass == null) { |
||
154 | btnMoveDownClass = new JButton(PluginServices.getText(this, "move_down")); |
||
155 | btnMoveDownClass.setName("BTNMOVEDOWNCLASS");
|
||
156 | btnMoveDownClass.addActionListener(this);
|
||
157 | } |
||
158 | return btnMoveDownClass;
|
||
159 | } |
||
160 | |||
161 | 23118 | vcaballero | private JScrollPane getCenterScrl() { |
162 | 22954 | vcaballero | |
163 | 23118 | vcaballero | scrlPan = new JScrollPane(getTblClasses()); |
164 | scrlPan.setPreferredSize(new Dimension(180, 300)); |
||
165 | 22954 | vcaballero | |
166 | 23118 | vcaballero | return scrlPan;
|
167 | } |
||
168 | 22954 | vcaballero | |
169 | |||
170 | 23118 | vcaballero | private JTable getTblClasses() { |
171 | |||
172 | tblClasses = new JTable(new LabelClassTableModel()); |
||
173 | tblClasses.setRowHeight(50);
|
||
174 | tblClasses.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
|
||
175 | tblClasses.addMouseListener(new MouseAdapter() { |
||
176 | int prevRow =-1; |
||
177 | @Override
|
||
178 | public void mouseClicked(MouseEvent e) { |
||
179 | int col = tblClasses.getColumnModel().getColumnIndexAtX(e.getX());
|
||
180 | int row = (int) ((e.getY()-tblClasses.getLocation().getY()) / tblClasses.getRowHeight()); |
||
181 | if(!(row > tblClasses.getRowCount()-1 || col > tblClasses.getColumnCount()-1)) |
||
182 | { |
||
183 | openEditor = (row == prevRow && e.getButton() == MouseEvent.BUTTON1 && e.getClickCount() == 2 |
||
184 | ) ; |
||
185 | prevRow = row; |
||
186 | if (openEditor)
|
||
187 | tblClasses.editCellAt(row, col); |
||
188 | } |
||
189 | } |
||
190 | }); |
||
191 | |||
192 | 23903 | vcaballero | tblClasses.getModel().addTableModelListener(new TableModelListener() { |
193 | |||
194 | public void tableChanged(TableModelEvent e) { |
||
195 | if(e.getColumn() == VISIBLE_FIELD_INDEX){
|
||
196 | System.err.println("ahora toca cambiar la visibilidad"); |
||
197 | LabelClass oldLc = (LabelClass) tblClasses.getValueAt(e.getFirstRow(), PREVIEW_FIELD_INDEX); |
||
198 | oldLc.setVisible(Boolean.valueOf(tblClasses.getValueAt(e.getFirstRow(), VISIBLE_FIELD_INDEX).toString()));
|
||
199 | } |
||
200 | } |
||
201 | |||
202 | }); |
||
203 | |||
204 | 23118 | vcaballero | TableColumnModel cm = tblClasses.getColumnModel();
|
205 | |||
206 | tblClasses.getColumnModel().getColumn(PREVIEW_FIELD_INDEX).setCellRenderer(new TableCellRenderer() { |
||
207 | |||
208 | public Component getTableCellRendererComponent(JTable table, |
||
209 | Object value, boolean isSelected, boolean hasFocus, |
||
210 | int row, int column) { |
||
211 | LabelClassPreview lcPr = new LabelClassPreview();
|
||
212 | lcPr.setLabelClass((LabelClass) value); |
||
213 | return lcPr;
|
||
214 | } |
||
215 | |||
216 | }); |
||
217 | tblClasses.getColumnModel().getColumn(VISIBLE_FIELD_INDEX).setCellRenderer(new BooleanTableCellRenderer(false)); |
||
218 | tblClasses.getColumnModel().getColumn(LABEL_EXPRESSION_FIELD_INDEX).setCellRenderer(new TableCellRenderer() { |
||
219 | public Component getTableCellRendererComponent(JTable table, |
||
220 | Object value, boolean isSelected, boolean hasFocus, |
||
221 | int row, int column) { |
||
222 | String expr = null; |
||
223 | if (value != null) |
||
224 | expr = (String) value;
|
||
225 | if (expr == null) |
||
226 | expr = LabelExpressionParser.tokenFor(LabelExpressionParser.EOEXPR); |
||
227 | |||
228 | 23903 | vcaballero | // expr = expr.replaceAll(LabelExpressionParser.tokenFor(LabelExpressionParser.EOFIELD), " | ");
|
229 | 23118 | vcaballero | expr = expr.substring(0, expr.length()-1); |
230 | return new JLabel("<html><p>"+expr+"</p></html>", JLabel.CENTER); |
||
231 | } |
||
232 | }); |
||
233 | |||
234 | // the editors
|
||
235 | 23903 | vcaballero | |
236 | 23118 | vcaballero | for (int i = 0; i < tblClasses.getColumnModel().getColumnCount(); i++) { |
237 | if (i!= VISIBLE_FIELD_INDEX) {
|
||
238 | tblClasses.getColumnModel().getColumn(i).setCellEditor(new LabelClassCellEditor());
|
||
239 | } else {
|
||
240 | tblClasses.getColumnModel().getColumn(VISIBLE_FIELD_INDEX). |
||
241 | setCellEditor(new BooleanTableCellEditor(tblClasses));
|
||
242 | } |
||
243 | } |
||
244 | ((DefaultTableModel)tblClasses.getModel()).fireTableDataChanged();
|
||
245 | repaint(); |
||
246 | |||
247 | return tblClasses;
|
||
248 | 22954 | vcaballero | } |
249 | |||
250 | |||
251 | private class LabelClassCellEditor extends AbstractCellEditor implements TableCellEditor { |
||
252 | private static final long serialVersionUID = 6399823783851437400L; |
||
253 | |||
254 | public Component getTableCellEditorComponent(JTable table, Object value, boolean isSelected, int row, int column) { |
||
255 | if (openEditor) {
|
||
256 | 23118 | vcaballero | LabelClass oldLc = (LabelClass) tblClasses.getValueAt(row, PREVIEW_FIELD_INDEX); |
257 | 23903 | vcaballero | oldLc.setVisible(Boolean.valueOf(tblClasses.getValueAt(row, VISIBLE_FIELD_INDEX).toString()));
|
258 | 22954 | vcaballero | LabelClassProperties lcProp = new LabelClassProperties(fieldNames, fieldTypes);
|
259 | oldLc.setTexts(new String[] {oldLc.getName()}); |
||
260 | lcProp.setLabelClass(oldLc); |
||
261 | PluginServices.getMDIManager() |
||
262 | .addWindow(lcProp); |
||
263 | LabelClass newLc = lcProp.getLabelClass(); |
||
264 | |||
265 | 23118 | vcaballero | LabelClassTableModel m = (LabelClassTableModel) tblClasses.getModel(); |
266 | Boolean changeDone = false; |
||
267 | 22954 | vcaballero | |
268 | if (!(oldLc.getName().equals(newLc.getName())))
|
||
269 | if(!checSameLablClassName(m,newLc.getName())){
|
||
270 | |||
271 | 23903 | vcaballero | m.setValueAt(newLc.getStringLabelExpression(), row, LABEL_EXPRESSION_FIELD_INDEX); |
272 | 22954 | vcaballero | m.setValueAt(newLc.getName(), row, NAME_FIELD_INDEX); |
273 | m.setValueAt(newLc, row, PREVIEW_FIELD_INDEX); |
||
274 | m.setValueAt(newLc.getSQLQuery(), row, FILTER_FIELD_INDEX); |
||
275 | m.setValueAt(newLc.isVisible(), row, VISIBLE_FIELD_INDEX); |
||
276 | fireEditingStopped(); //Make the renderer reappear.
|
||
277 | 23118 | vcaballero | changeDone = true;
|
278 | 22954 | vcaballero | } |
279 | 23118 | vcaballero | else {
|
280 | JOptionPane.showMessageDialog(tblClasses, PluginServices.getText(this, "cannot_exist_two_label_classes_with_the_same_name")+"\n",PluginServices.getText(this,"error"),JOptionPane.ERROR_MESSAGE); |
||
281 | changeDone = true;
|
||
282 | } |
||
283 | if (!changeDone){
|
||
284 | 23903 | vcaballero | m.setValueAt(newLc.getStringLabelExpression(), row, LABEL_EXPRESSION_FIELD_INDEX); |
285 | 23118 | vcaballero | m.setValueAt(newLc.getName(), row, NAME_FIELD_INDEX); |
286 | m.setValueAt(newLc, row, PREVIEW_FIELD_INDEX); |
||
287 | m.setValueAt(newLc.getSQLQuery(), row, FILTER_FIELD_INDEX); |
||
288 | m.setValueAt(newLc.isVisible(), row, VISIBLE_FIELD_INDEX); |
||
289 | fireEditingStopped(); //Make the renderer reappear.
|
||
290 | changeDone = true;
|
||
291 | } |
||
292 | 22954 | vcaballero | } |
293 | 23903 | vcaballero | |
294 | method.clearAllClasses(); |
||
295 | LabelClass[] classes = ((LabelClassTableModel)tblClasses.getModel()).toLabelClassArray();
|
||
296 | for (int i = 0; i < classes.length; i++) { |
||
297 | method.addLabelClass(classes[i]); |
||
298 | } |
||
299 | |||
300 | 22954 | vcaballero | openEditor = false;
|
301 | return null; |
||
302 | } |
||
303 | |||
304 | public Object getCellEditorValue() { |
||
305 | return null; |
||
306 | } |
||
307 | |||
308 | } |
||
309 | |||
310 | 23118 | vcaballero | |
311 | private boolean checSameLablClassName(LabelClassTableModel mod, String name) { |
||
312 | for (int i = 0; i < mod.getRowCount(); i++) { |
||
313 | if(name.equals(mod.getLabelAtRow(i).getName()))
|
||
314 | return true; |
||
315 | } |
||
316 | return false; |
||
317 | } |
||
318 | |||
319 | |||
320 | 22954 | vcaballero | private class LabelClassTableModel extends DefaultTableModel { |
321 | private static final long serialVersionUID = -9152998982339430209L; |
||
322 | 23903 | vcaballero | Object[][] values; |
323 | 22954 | vcaballero | |
324 | private String[] classesTableFieldNames = new String[] { |
||
325 | PluginServices.getText(this, "name"), |
||
326 | PluginServices.getText(this, "preview"), |
||
327 | PluginServices.getText(this, "filter"), |
||
328 | PluginServices.getText(this, "label_expression"), |
||
329 | PluginServices.getText(this, "visible"), |
||
330 | }; |
||
331 | |||
332 | 23118 | vcaballero | |
333 | 22954 | vcaballero | public LabelClassTableModel() {
|
334 | super();
|
||
335 | LabelClass[] labelClasses = method.getLabelClasses();
|
||
336 | |||
337 | 23903 | vcaballero | values = new Object[labelClasses.length][classesTableFieldNames.length]; |
338 | 22954 | vcaballero | for (int i = 0; i < values.length; i++) { |
339 | values[i][PREVIEW_FIELD_INDEX] = labelClasses[i]; |
||
340 | values[i][NAME_FIELD_INDEX] = labelClasses[i].getName(); |
||
341 | values[i][FILTER_FIELD_INDEX] = labelClasses[i].getSQLQuery(); |
||
342 | 23903 | vcaballero | values[i][LABEL_EXPRESSION_FIELD_INDEX] = labelClasses[i].getStringLabelExpression(); |
343 | 22954 | vcaballero | values[i][VISIBLE_FIELD_INDEX] = labelClasses[i].isVisible(); |
344 | } |
||
345 | setDataVector(values, classesTableFieldNames); |
||
346 | } |
||
347 | |||
348 | public String getColumnName(int col) { |
||
349 | return classesTableFieldNames[col];
|
||
350 | } |
||
351 | |||
352 | 23118 | vcaballero | public int getColumnCount() { |
353 | return classesTableFieldNames.length;
|
||
354 | } |
||
355 | |||
356 | 22954 | vcaballero | @Override
|
357 | public boolean isCellEditable(int row, int column) { |
||
358 | return true; |
||
359 | } |
||
360 | |||
361 | public LabelClass getLabelAtRow(int row) { |
||
362 | return (LabelClass) getValueAt(row, PREVIEW_FIELD_INDEX);
|
||
363 | } |
||
364 | |||
365 | public LabelClass[] toLabelClassArray() { |
||
366 | LabelClass[] classes = new LabelClass[getRowCount()]; |
||
367 | for (int i = 0; i < classes.length; i++) { |
||
368 | classes[i] = getLabelAtRow(i); |
||
369 | if (getChkDefinePriorities().isSelected()) {
|
||
370 | classes[i].setPriority(i); |
||
371 | } |
||
372 | } |
||
373 | return classes;
|
||
374 | } |
||
375 | |||
376 | 23118 | vcaballero | public void setClassArray(LabelClass[] classes) { |
377 | for (int i = 0; i < classes.length; i++) { |
||
378 | setValueAt(classes[i],i,PREVIEW_FIELD_INDEX); |
||
379 | setValueAt(classes[i].getName(),i,NAME_FIELD_INDEX); |
||
380 | setValueAt(classes[i].getSQLQuery(),i,FILTER_FIELD_INDEX); |
||
381 | 23903 | vcaballero | setValueAt(classes[i].getStringLabelExpression(),i,LABEL_EXPRESSION_FIELD_INDEX); |
382 | 23118 | vcaballero | setValueAt(classes[i].isVisible(),i,VISIBLE_FIELD_INDEX); |
383 | } |
||
384 | 22954 | vcaballero | |
385 | 23118 | vcaballero | } |
386 | 23903 | vcaballero | |
387 | 22954 | vcaballero | } |
388 | |||
389 | @Override
|
||
390 | 23118 | vcaballero | protected void initializePanel() { |
391 | |||
392 | setLayout(new BorderLayout()); |
||
393 | JPanel panel = new JPanel(new BorderLayout()); |
||
394 | buttonPanel = new GridBagLayoutPanel();
|
||
395 | buttonPanel.addComponent(getBtnAddClass()); |
||
396 | buttonPanel.addComponent(getBtnDelClass()); |
||
397 | buttonPanel.addComponent(new JBlank(10, 10)); |
||
398 | buttonPanel.addComponent(getBtnMoveUpClass()); |
||
399 | buttonPanel.addComponent(getBtnMoveDownClass()); |
||
400 | panel.add(buttonPanel, BorderLayout.EAST);
|
||
401 | panel.add(getChkDefinePriorities(), BorderLayout.NORTH);
|
||
402 | panel.add(getCenterScrl(), BorderLayout.CENTER);
|
||
403 | add(panel,BorderLayout.CENTER);
|
||
404 | |||
405 | 22954 | vcaballero | } |
406 | |||
407 | 23118 | vcaballero | |
408 | 22954 | vcaballero | @Override
|
409 | public void fillPanel(ILabelingMethod method, SelectableDataSource dataSource) |
||
410 | throws ReadDriverException {
|
||
411 | fieldNames = dataSource.getFieldNames(); |
||
412 | fieldTypes = new int[fieldNames.length]; |
||
413 | for (int i = 0; i < fieldTypes.length; i++) { |
||
414 | fieldTypes[i] = dataSource.getFieldType(i); |
||
415 | } |
||
416 | if (method == null) { |
||
417 | this.method = new FeatureDependentLabeled(); |
||
418 | } |
||
419 | 23118 | vcaballero | chkDefinePriorities.setSelected(this.method.definesPriorities());
|
420 | 22954 | vcaballero | repaint(); |
421 | } |
||
422 | |||
423 | 23118 | vcaballero | private void swapClass(int classIndex, int targetPos,int numOfElements) { |
424 | 22954 | vcaballero | |
425 | 23118 | vcaballero | LabelClass[] classes = ((LabelClassTableModel)tblClasses.getModel()).toLabelClassArray();
|
426 | 22954 | vcaballero | LabelClass aux = classes[targetPos]; |
427 | classes[targetPos] = classes[classIndex]; |
||
428 | classes[classIndex] = aux; |
||
429 | 23118 | vcaballero | ((LabelClassTableModel)tblClasses.getModel()).setClassArray(classes); |
430 | 22954 | vcaballero | } |
431 | |||
432 | public void actionPerformed(ActionEvent e) { |
||
433 | if (method == null) return; |
||
434 | |||
435 | |||
436 | JComponent c = (JComponent)e.getSource(); |
||
437 | 23118 | vcaballero | LabelClassTableModel mod = ((LabelClassTableModel) tblClasses.getModel()); |
438 | |||
439 | 22954 | vcaballero | if (c.equals(btnAddClass)) {
|
440 | |||
441 | LabelClass newClass = new LabelClass();
|
||
442 | String name = PluginServices.getText(this, "labeling")+ |
||
443 | String.valueOf(1); |
||
444 | |||
445 | int count = 0; |
||
446 | while(checSameLablClassName(mod,name)){
|
||
447 | count++; |
||
448 | name = PluginServices.getText(this, "labeling")+ |
||
449 | String.valueOf(count);
|
||
450 | } |
||
451 | newClass.setName(name); |
||
452 | 23903 | vcaballero | mod.addRow(new Object[] {newClass.getName(), newClass, newClass.getSQLQuery(), newClass.getStringLabelExpression(), newClass.isVisible()}); |
453 | 22954 | vcaballero | } else if (c.equals(btnDelClass)) { |
454 | if (mod.getRowCount()>=1) { |
||
455 | 23118 | vcaballero | int[] sRows = tblClasses.getSelectedRows(); |
456 | 22954 | vcaballero | |
457 | for (int i = sRows.length-1; i >= 0 ; i--) { |
||
458 | mod.removeRow(sRows[i]); |
||
459 | } |
||
460 | } |
||
461 | } else if (c.equals(chkDefinePriorities)) { |
||
462 | 23118 | vcaballero | |
463 | method.setDefinesPriorities(chkDefinePriorities.isSelected()); |
||
464 | |||
465 | 22954 | vcaballero | } else if (c.equals(chkLabel)) { |
466 | 23118 | vcaballero | int[] sRows = tblClasses.getSelectedRows(); |
467 | 22954 | vcaballero | for (int i = sRows.length-1; i >= 0 ; i--) { |
468 | LabelClass lc = mod.getLabelAtRow(i); |
||
469 | lc.setVisible(chkLabel.isSelected()); |
||
470 | } |
||
471 | 23118 | vcaballero | |
472 | 22954 | vcaballero | } else if (c.equals(btnMoveUpClass)) { |
473 | 23118 | vcaballero | int[] indices = tblClasses.getSelectedRows(); |
474 | 22954 | vcaballero | if (indices.length>0) { |
475 | int classIndex = indices[0]; |
||
476 | int targetPos = Math.max(0, classIndex-1); |
||
477 | swapClass(classIndex, targetPos,indices.length); |
||
478 | } |
||
479 | |||
480 | } else if (c.equals(btnMoveDownClass)) { |
||
481 | 23118 | vcaballero | int[] indices = tblClasses.getSelectedRows(); |
482 | 22954 | vcaballero | if (indices.length>0) { |
483 | int classIndex = indices[indices.length-1]; |
||
484 | 23118 | vcaballero | int targetPos = Math.min(tblClasses.getRowCount()-1, classIndex+1); |
485 | 22954 | vcaballero | swapClass(classIndex, targetPos,indices.length); |
486 | } |
||
487 | |||
488 | }else if (c.equals(btnDelClass)) { |
||
489 | 23118 | vcaballero | int[] indices = tblClasses.getSelectedRows(); |
490 | 22954 | vcaballero | if (indices.length>0) { |
491 | int classIndex = indices[0]; |
||
492 | 23118 | vcaballero | int targetPos = Math.min(tblClasses.getRowCount(), classIndex); |
493 | 22954 | vcaballero | swapClass(classIndex, targetPos,indices.length); |
494 | } |
||
495 | } |
||
496 | 23118 | vcaballero | |
497 | 23903 | vcaballero | |
498 | 23118 | vcaballero | mod.fireTableDataChanged(); |
499 | 22954 | vcaballero | method.clearAllClasses(); |
500 | LabelClass[] classes = ((LabelClassTableModel)tblClasses.getModel()).toLabelClassArray();
|
||
501 | for (int i = 0; i < classes.length; i++) { |
||
502 | method.addLabelClass(classes[i]); |
||
503 | } |
||
504 | 23118 | vcaballero | repaint(); |
505 | 22954 | vcaballero | } |
506 | 23118 | vcaballero | public void propertyChange(PropertyChangeEvent evt) { |
507 | // TODO Auto-generated method stub
|
||
508 | 22954 | vcaballero | |
509 | } |
||
510 | |||
511 | |||
512 | |||
513 | 23118 | vcaballero | |
514 | |||
515 | |||
516 | 22954 | vcaballero | } |