Revision 42806
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/featuretable/FeatureTable.java | ||
---|---|---|
38 | 38 |
import javax.swing.table.TableColumn; |
39 | 39 |
import javax.swing.table.TableColumnModel; |
40 | 40 |
import javax.swing.table.TableModel; |
41 |
|
|
41 | 42 |
import org.gvsig.fmap.dal.feature.Feature; |
42 | 43 |
import org.gvsig.fmap.dal.feature.FeatureStoreNotification; |
43 | 44 |
import org.gvsig.fmap.dal.swing.FeatureTableModel; |
44 |
import org.gvsig.fmap.geom.Geometry; |
|
45 | 45 |
import org.gvsig.fmap.dal.swing.impl.featuretable.table.DefaultFeatureTableModel; |
46 |
import org.gvsig.fmap.dal.swing.impl.featuretable.table.editors.FormattedCellEditor; |
|
47 |
import org.gvsig.fmap.dal.swing.impl.featuretable.table.editors.GeometryWKTCellEditor; |
|
46 | 48 |
import org.gvsig.fmap.dal.swing.impl.featuretable.table.renders.FeatureCellRenderer; |
47 |
import org.gvsig.fmap.dal.swing.impl.featuretable.table.editors.FormattedCellEditor; |
|
48 | 49 |
import org.gvsig.fmap.dal.swing.impl.featuretable.table.renders.FormattedCellRenderer; |
49 |
import org.gvsig.fmap.dal.swing.impl.featuretable.table.editors.GeometryWKTCellEditor; |
|
50 |
import org.gvsig.fmap.dal.swing.impl.featuretable.table.GeometryWKTCellRenderer; |
|
50 |
import org.gvsig.fmap.dal.swing.impl.featuretable.table.renders.GeometryWKTCellRenderer; |
|
51 | 51 |
import org.gvsig.fmap.dal.swing.impl.featuretable.table.renders.JToggleButtonHeaderCellRenderer; |
52 |
import org.gvsig.fmap.geom.Geometry; |
|
52 | 53 |
import org.gvsig.tools.observer.Observable; |
53 | 54 |
import org.gvsig.tools.observer.Observer; |
54 | 55 |
|
... | ... | |
73 | 74 |
public void addColumnSelectionListener(ActionListener listener) { |
74 | 75 |
this.columnSelectionListeners.add(listener); |
75 | 76 |
} |
76 |
|
|
77 |
|
|
77 | 78 |
public void fireColumnSelection(ActionEvent e) { |
78 | 79 |
for( ActionListener listener : this.columnSelectionListeners ) { |
79 | 80 |
try { |
80 | 81 |
listener.actionPerformed(e); |
81 | 82 |
} catch(Exception ex) { |
82 |
|
|
83 |
|
|
83 | 84 |
} |
84 | 85 |
} |
85 | 86 |
} |
... | ... | |
191 | 192 |
} |
192 | 193 |
this.setAutoResizeMode(JTable.AUTO_RESIZE_LAST_COLUMN); |
193 | 194 |
} |
194 |
|
|
195 |
|
|
195 | 196 |
@Override |
196 | 197 |
public void setModel(TableModel dataModel) { |
197 | 198 |
super.setModel(dataModel); |
198 | 199 |
} |
199 |
|
|
200 |
|
|
200 | 201 |
@Override |
201 | 202 |
public int getSelectedColumnCount() { |
202 | 203 |
return headerCellRenderer.getSelectedColumns().length; |
... | ... | |
206 | 207 |
public int[] getSelectedColumns() { |
207 | 208 |
return headerCellRenderer.getSelectedColumns(); |
208 | 209 |
} |
209 |
|
|
210 |
|
|
210 | 211 |
@Override |
211 | 212 |
public void tableChanged(TableModelEvent e) { |
212 | 213 |
// Clear the header selection |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/featuretable/table/renders/GetFeatureAtException.java | ||
---|---|---|
25 | 25 |
* AUTHORS (In addition to CIT): |
26 | 26 |
* 2008 {DiSiD Technologies} {{Task}} |
27 | 27 |
*/ |
28 |
package org.gvsig.fmap.dal.swing.impl.featuretable.table; |
|
28 |
package org.gvsig.fmap.dal.swing.impl.featuretable.table.renders;
|
|
29 | 29 |
|
30 | 30 |
import java.util.Collections; |
31 | 31 |
import java.util.Map; |
... | ... | |
35 | 35 |
/** |
36 | 36 |
* Exception thrown when there is an error while getting a Feature in a |
37 | 37 |
* position. |
38 |
*
|
|
38 |
* |
|
39 | 39 |
* @author <a href="mailto:cordin@disid.com">C?sar Ordi?ana</a> |
40 | 40 |
*/ |
41 | 41 |
public class GetFeatureAtException extends BaseRuntimeException { |
... | ... | |
51 | 51 |
|
52 | 52 |
/** |
53 | 53 |
* Creates a new Exception when getting a Feature. |
54 |
*
|
|
54 |
* |
|
55 | 55 |
* @param rowIndex |
56 | 56 |
* the position of the Feature |
57 | 57 |
*/ |
... | ... | |
62 | 62 |
|
63 | 63 |
/** |
64 | 64 |
* Creates a new Exception when getting a Feature. |
65 |
*
|
|
65 |
* |
|
66 | 66 |
* @param rowIndex |
67 | 67 |
* the position of the Feature |
68 | 68 |
* @param cause |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/featuretable/table/renders/GeometryCellRenderer.java | ||
---|---|---|
25 | 25 |
* AUTHORS (In addition to CIT): |
26 | 26 |
* 2008 {DiSiD Technologies} {Create a JTable TableModel for a FeatureCollection} |
27 | 27 |
*/ |
28 |
package org.gvsig.fmap.dal.swing.impl.featuretable.table; |
|
28 |
package org.gvsig.fmap.dal.swing.impl.featuretable.table.renders;
|
|
29 | 29 |
|
30 | 30 |
import javax.swing.table.DefaultTableCellRenderer; |
31 | 31 |
|
... | ... | |
35 | 35 |
|
36 | 36 |
/** |
37 | 37 |
* Simple renderer for cells of type {@link Geometry} . |
38 |
*
|
|
38 |
* |
|
39 | 39 |
* @author <a href="mailto:cordin@disid.com">C�sar Ordi�ana</a> |
40 | 40 |
*/ |
41 | 41 |
public class GeometryCellRenderer extends DefaultTableCellRenderer { |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/featuretable/table/renders/GeometryToWKTException.java | ||
---|---|---|
25 | 25 |
* AUTHORS (In addition to CIT): |
26 | 26 |
* 2008 {DiSiD Technologies} {{Task}} |
27 | 27 |
*/ |
28 |
package org.gvsig.fmap.dal.swing.impl.featuretable.table; |
|
28 |
package org.gvsig.fmap.dal.swing.impl.featuretable.table.renders;
|
|
29 | 29 |
|
30 | 30 |
import org.gvsig.tools.exception.BaseRuntimeException; |
31 | 31 |
|
32 | 32 |
/** |
33 | 33 |
* Exception thrown when there is an error while converting a Geometry to WKT |
34 | 34 |
* into a table cell. |
35 |
*
|
|
35 |
* |
|
36 | 36 |
* @author <a href="mailto:cordin@disid.com">C?sar Ordi?ana</a> |
37 | 37 |
*/ |
38 | 38 |
public class GeometryToWKTException extends BaseRuntimeException { |
... | ... | |
46 | 46 |
|
47 | 47 |
/** |
48 | 48 |
* Creates a new Exception when getting a Geometry cell as WKT. |
49 |
*
|
|
49 |
* |
|
50 | 50 |
*/ |
51 | 51 |
public GeometryToWKTException() { |
52 | 52 |
super(MESSAGE, KEY, serialVersionUID); |
... | ... | |
54 | 54 |
|
55 | 55 |
/** |
56 | 56 |
* Creates a new Exception when getting a Geometry cell as WKT. |
57 |
*
|
|
57 |
* |
|
58 | 58 |
* @param cause |
59 | 59 |
* the original Throwable |
60 | 60 |
*/ |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/featuretable/table/renders/GeometryWKTCellRenderer.java | ||
---|---|---|
25 | 25 |
* AUTHORS (In addition to CIT): |
26 | 26 |
* 2008 {DiSiD Technologies} {Create a JTable TableModel for a FeatureCollection} |
27 | 27 |
*/ |
28 |
package org.gvsig.fmap.dal.swing.impl.featuretable.table; |
|
28 |
package org.gvsig.fmap.dal.swing.impl.featuretable.table.renders;
|
|
29 | 29 |
|
30 | 30 |
import org.gvsig.fmap.dal.swing.impl.featuretable.table.renders.TextAreaCellRenderer; |
31 | 31 |
import org.gvsig.fmap.geom.Geometry; |
... | ... | |
34 | 34 |
|
35 | 35 |
/** |
36 | 36 |
* Renderer for cells of type {@link Geometry}, showing it in WKT format. |
37 |
*
|
|
37 |
* |
|
38 | 38 |
* @author <a href="mailto:cordin@disid.com">C�sar Ordi�ana</a> |
39 | 39 |
*/ |
40 | 40 |
public class GeometryWKTCellRenderer extends TextAreaCellRenderer { |
41 | 41 |
|
42 | 42 |
private static final Logger logger = LoggerFactory.getLogger(GeometryWKTCellRenderer.class); |
43 |
|
|
43 |
|
|
44 | 44 |
private static final long serialVersionUID = -2470239399517077869L; |
45 |
|
|
45 |
|
|
46 | 46 |
public static final int DEFAULT_MAX_WKT_LENGTH = 800; |
47 |
|
|
47 |
|
|
48 | 48 |
public static final int DEFAULT_MAX_ROW_HEIGHT = 80; |
49 | 49 |
|
50 | 50 |
/** |
... | ... | |
57 | 57 |
|
58 | 58 |
/** |
59 | 59 |
* Creates a new GeometryWKTCellRenderer. |
60 |
*
|
|
60 |
* |
|
61 | 61 |
* @param maxWKTLength |
62 | 62 |
* the maximum WTK length to be rendered. |
63 | 63 |
* @param maxRowHeight |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/featuretable/table/DefaultFeatureTableModel.java | ||
---|---|---|
34 | 34 |
import java.util.List; |
35 | 35 |
import java.util.Locale; |
36 | 36 |
import java.util.Map; |
37 |
|
|
37 | 38 |
import javax.swing.SwingUtilities; |
38 | 39 |
import javax.swing.Timer; |
39 |
|
|
40 | 40 |
import javax.swing.event.TableModelEvent; |
41 | 41 |
import javax.swing.table.AbstractTableModel; |
42 | 42 |
|
43 |
import org.slf4j.Logger; |
|
44 |
import org.slf4j.LoggerFactory; |
|
45 |
|
|
43 | 46 |
import org.gvsig.fmap.dal.DataTypes; |
44 | 47 |
import org.gvsig.fmap.dal.exception.DataException; |
45 | 48 |
import org.gvsig.fmap.dal.feature.EditableFeature; |
... | ... | |
54 | 57 |
import org.gvsig.fmap.dal.feature.FeatureType; |
55 | 58 |
import org.gvsig.fmap.dal.feature.exception.ConcurrentDataModificationException; |
56 | 59 |
import org.gvsig.fmap.dal.feature.paging.FeaturePagingHelper; |
60 |
import org.gvsig.fmap.dal.swing.impl.featuretable.table.renders.GetFeatureAtException; |
|
57 | 61 |
import org.gvsig.tools.exception.BaseException; |
58 | 62 |
import org.gvsig.tools.observer.ComplexNotification; |
59 | 63 |
import org.gvsig.tools.observer.ComplexObserver; |
60 | 64 |
import org.gvsig.tools.observer.Observable; |
61 |
import org.slf4j.Logger; |
|
62 |
import org.slf4j.LoggerFactory; |
|
63 | 65 |
|
64 | 66 |
public class DefaultFeatureTableModel extends AbstractTableModel implements org.gvsig.fmap.dal.swing.FeatureTableModel, ComplexObserver { |
65 | 67 |
|
66 | 68 |
private static final long serialVersionUID = -8223987814719746492L; |
67 |
|
|
69 |
|
|
68 | 70 |
private static final Logger logger = LoggerFactory.getLogger(DefaultFeatureTableModel.class); |
69 | 71 |
|
70 | 72 |
private List<String> columnNames; |
... | ... | |
79 | 81 |
|
80 | 82 |
private Map<String,String> patterns = null; |
81 | 83 |
|
82 |
private Locale localeOfData;
|
|
84 |
private Locale localeOfData; |
|
83 | 85 |
|
84 | 86 |
private final FeaturePagingHelper featurePager; |
85 | 87 |
|
... | ... | |
87 | 89 |
private EditableFeature editableFeature; |
88 | 90 |
|
89 | 91 |
private boolean selectionLocked=false; |
90 |
|
|
92 |
|
|
91 | 93 |
private final DelayAction delayAction = new DelayAction(); |
92 | 94 |
|
93 | 95 |
|
... | ... | |
99 | 101 |
|
100 | 102 |
private void initialize() { |
101 | 103 |
this.getFeatureStore().addObserver(this); |
102 |
|
|
104 |
|
|
103 | 105 |
int columns = this.getOriginalColumnCount(); |
104 | 106 |
|
105 | 107 |
// Initilize visible columns |
... | ... | |
116 | 118 |
} |
117 | 119 |
} |
118 | 120 |
visibleColumnNamesOriginal = new ArrayList<>(visibleColumnNames); |
119 |
|
|
121 |
|
|
120 | 122 |
// Initialize alias |
121 | 123 |
name2Alias = new HashMap<>(columns); |
122 | 124 |
name2AliasOriginal = new HashMap<>(columns); |
... | ... | |
127 | 129 |
|
128 | 130 |
private void initializeFormatingPatterns() { |
129 | 131 |
int columns = this.getOriginalColumnCount(); |
130 |
|
|
132 |
|
|
131 | 133 |
this.patterns = new HashMap<>(); |
132 | 134 |
for (int i = 0; i < columns; i++) { |
133 | 135 |
FeatureAttributeDescriptor descriptor = this.getInternalColumnDescriptor(i); |
... | ... | |
155 | 157 |
this.patterns.put(columnName,null); |
156 | 158 |
} |
157 | 159 |
} |
158 |
|
|
160 |
|
|
159 | 161 |
} |
160 |
|
|
162 |
|
|
161 | 163 |
private void updatePagerWithHiddenColums() { |
162 | 164 |
FeatureQuery query = this.getFeaturePager().getFeatureQuery(); |
163 | 165 |
if (this.getFeaturePager().getFeatureStore().isEditing()) { |
... | ... | |
173 | 175 |
logger.warn("Can't reload paging-helper.", ex); |
174 | 176 |
} |
175 | 177 |
} |
176 |
|
|
178 |
|
|
177 | 179 |
@Override |
178 | 180 |
public FeaturePagingHelper getFeaturePager() { |
179 | 181 |
return this.featurePager; |
180 | 182 |
} |
181 |
|
|
183 |
|
|
182 | 184 |
@Override |
183 | 185 |
public FeatureQuery getFeatureQuery() { |
184 | 186 |
return this.getFeaturePager().getFeatureQuery(); |
... | ... | |
188 | 190 |
public FeatureType getFeatureType() { |
189 | 191 |
return this.getFeaturePager().getFeatureType(); |
190 | 192 |
} |
191 |
|
|
193 |
|
|
192 | 194 |
@Override |
193 | 195 |
public FeatureStore getFeatureStore() { |
194 | 196 |
return this.getFeaturePager().getFeatureStore(); |
... | ... | |
213 | 215 |
@Override |
214 | 216 |
public Class<?> getColumnClass(int columnIndex) { |
215 | 217 |
int originalIndex = getOriginalColumnIndex(columnIndex); |
216 |
|
|
218 |
|
|
217 | 219 |
// Return the class of the FeatureAttributeDescriptor for the value |
218 | 220 |
FeatureAttributeDescriptor attributeDesc = this.getInternalColumnDescriptor(originalIndex); |
219 | 221 |
if (attributeDesc == null) { |
... | ... | |
228 | 230 |
int originalIndex = getOriginalColumnIndex(columnIndex); |
229 | 231 |
return this.getInternalColumnDescriptor(originalIndex); |
230 | 232 |
} |
231 |
|
|
233 |
|
|
232 | 234 |
protected FeatureAttributeDescriptor getInternalColumnDescriptor(int columnIndex) { |
233 | 235 |
FeatureType featureType = getFeatureType(); |
234 | 236 |
if( featureType == null ) { |
... | ... | |
265 | 267 |
// Check if there is a new column name |
266 | 268 |
List<String> newColumns = new ArrayList<>(); |
267 | 269 |
List<String> renamedColumnsNewName = new ArrayList<>(); |
268 |
|
|
270 |
|
|
269 | 271 |
Iterator<FeatureAttributeDescriptor> attrIter = featureType.iterator(); |
270 | 272 |
FeatureAttributeDescriptor fad ; |
271 | 273 |
EditableFeatureAttributeDescriptor efad ; |
272 |
|
|
274 |
|
|
273 | 275 |
String colName; |
274 | 276 |
while (attrIter.hasNext()) { |
275 | 277 |
fad = attrIter.next(); |
276 | 278 |
colName = fad.getName(); |
277 | 279 |
if (!columnNames.contains(colName)) { |
278 | 280 |
if (fad instanceof EditableFeatureAttributeDescriptor) { |
279 |
efad = (EditableFeatureAttributeDescriptor) fad;
|
|
281 |
efad = (EditableFeatureAttributeDescriptor) fad; |
|
280 | 282 |
/* |
281 | 283 |
* If editable att descriptor, |
282 | 284 |
* check original name |
... | ... | |
343 | 345 |
name2Alias.keySet().retainAll(columnNames); |
344 | 346 |
name2AliasOriginal.keySet().retainAll(columnNames); |
345 | 347 |
|
346 |
initializeFormatingPatterns();
|
|
347 |
|
|
348 |
initializeFormatingPatterns(); |
|
349 |
|
|
348 | 350 |
getFeatureQuery().setFeatureType(featureType); |
349 | 351 |
reloadFeatures(); |
350 | 352 |
//Selection must be locked to avoid losing it when the table is refreshed |
... | ... | |
357 | 359 |
}finally{ |
358 | 360 |
//The locked selection is unlocked. |
359 | 361 |
selectionLocked=false; |
360 |
}
|
|
362 |
} |
|
361 | 363 |
|
362 | 364 |
} |
363 | 365 |
|
... | ... | |
368 | 370 |
throw new FeaturesDataReloadException(ex); |
369 | 371 |
} |
370 | 372 |
} |
371 |
|
|
373 |
|
|
372 | 374 |
/** |
373 | 375 |
* keeps order of first parameter |
374 |
*
|
|
376 |
* |
|
375 | 377 |
* @param lista |
376 | 378 |
* @param listb |
377 | 379 |
* @return |
378 | 380 |
*/ |
379 | 381 |
private List<String> intersectKeepOrder(List<String> lista, List<String> listb) { |
380 |
|
|
382 |
|
|
381 | 383 |
List<String> resp = new ArrayList<>(); |
382 | 384 |
resp.addAll(lista); |
383 | 385 |
resp.retainAll(listb); |
... | ... | |
386 | 388 |
|
387 | 389 |
public void setVisibleColumns(List<String> names) { |
388 | 390 |
// Recreate the visible column names list |
389 |
// to maintain the original order
|
|
391 |
// to maintain the original order |
|
390 | 392 |
visibleColumnNames = new ArrayList<>(names.size()); |
391 | 393 |
for (int i = 0; i < columnNames.size(); i++) { |
392 | 394 |
String columnName = columnNames.get(i); |
... | ... | |
401 | 403 |
protected String[] getHiddenColumnNames() { |
402 | 404 |
List<String> hiddenColumns = new ArrayList<String>(); |
403 | 405 |
hiddenColumns.addAll(columnNames); |
404 |
|
|
406 |
|
|
405 | 407 |
for (int i = 0; i < visibleColumnNames.size(); i++) { |
406 | 408 |
String columnName = visibleColumnNames.get(i); |
407 | 409 |
hiddenColumns.remove(columnName); |
... | ... | |
411 | 413 |
} |
412 | 414 |
return (String[]) hiddenColumns.toArray(new String[hiddenColumns.size()]); |
413 | 415 |
} |
414 |
|
|
416 |
|
|
415 | 417 |
/** |
416 | 418 |
* Changes all columns to be visible. |
417 | 419 |
*/ |
... | ... | |
482 | 484 |
Feature feature = getFeatureAt(rowIndex); |
483 | 485 |
return feature == null ? null : getFeatureValue(feature, columnIndex); |
484 | 486 |
} |
485 |
|
|
487 |
|
|
486 | 488 |
@Override |
487 | 489 |
public Feature getFeatureAt(int rowIndex) { |
488 | 490 |
try { |
... | ... | |
490 | 492 |
} catch (BaseException ex) { |
491 | 493 |
throw new GetFeatureAtException(rowIndex, ex); |
492 | 494 |
} |
493 |
}
|
|
494 |
|
|
495 |
} |
|
496 |
|
|
495 | 497 |
protected Object getFeatureValue(Feature feature, int columnIndex) { |
496 | 498 |
int realColumnIndex = getOriginalColumnIndex(columnIndex); |
497 | 499 |
return feature.get(realColumnIndex); |
... | ... | |
504 | 506 |
editableFeature.set(realColumnIndex, value); |
505 | 507 |
return editableFeature; |
506 | 508 |
} |
507 |
|
|
508 | 509 |
|
510 |
|
|
509 | 511 |
public void acceptChanges() { |
510 | 512 |
visibleColumnNamesOriginal = new ArrayList<>(visibleColumnNames); |
511 | 513 |
name2AliasOriginal = new HashMap<>(name2Alias); |
512 | 514 |
} |
513 |
|
|
515 |
|
|
514 | 516 |
public void cancelChanges() { |
515 | 517 |
visibleColumnNames = new ArrayList<>(visibleColumnNamesOriginal); |
516 | 518 |
name2Alias = new HashMap<>(name2AliasOriginal); |
517 | 519 |
fireTableStructureChanged(); |
518 | 520 |
} |
519 | 521 |
|
520 |
|
|
522 |
|
|
521 | 523 |
@Override |
522 | 524 |
public String getColumnFormattingPattern(int column) { |
523 | 525 |
String columnName = this.visibleColumnNames.get(column); |
524 | 526 |
return this.getColumnFormattingPattern(columnName); |
525 | 527 |
} |
526 |
|
|
528 |
|
|
527 | 529 |
@Override |
528 | 530 |
public String getColumnFormattingPattern(String columnName) { |
529 | 531 |
String pattern = this.patterns.get(columnName); |
530 | 532 |
return pattern; |
531 | 533 |
} |
532 |
|
|
534 |
|
|
533 | 535 |
@Override |
534 | 536 |
public void setColumnFormattingPattern(String columnName, String pattern) { |
535 | 537 |
this.patterns.put(columnName,pattern); |
536 | 538 |
} |
537 |
|
|
539 |
|
|
538 | 540 |
@Override |
539 | 541 |
public Locale getLocaleOfData() { |
540 | 542 |
return this.localeOfData; |
541 | 543 |
} |
542 |
|
|
544 |
|
|
543 | 545 |
@Override |
544 | 546 |
public void setLocaleOfData(Locale locale) { |
545 | 547 |
this.localeOfData = locale; |
546 | 548 |
} |
547 |
|
|
549 |
|
|
548 | 550 |
public boolean isSelectionLocked() { |
549 | 551 |
return selectionLocked; |
550 |
}
|
|
552 |
} |
|
551 | 553 |
|
552 | 554 |
@Override |
553 | 555 |
public boolean isSelectionUp() { |
554 | 556 |
return this.getFeaturePager().isSelectionUp(); |
555 |
}
|
|
557 |
} |
|
556 | 558 |
|
557 | 559 |
@Override |
558 | 560 |
public void setSelectionUp(boolean selectionUp) { |
559 | 561 |
this.getFeaturePager().setSelectionUp(selectionUp); |
560 | 562 |
fireTableChanged(new TableModelEvent(this, 0, getRowCount() - 1)); |
561 | 563 |
} |
562 |
|
|
564 |
|
|
563 | 565 |
private class DelayAction extends Timer implements ActionListener, Runnable { |
564 | 566 |
private static final int STATE_NONE = 0; |
565 | 567 |
private static final int STATE_NEED_RELOADALL = 1; |
... | ... | |
569 | 571 |
private static final int STATE_NEED_RELOAD_FEATURE_TYPE = 16; |
570 | 572 |
private static final int STATE_NEED_SELECTION_UP = 32; |
571 | 573 |
private static final int STATE_NEED_RELOAD_ALL_FEATURES=64; |
572 |
|
|
574 |
|
|
573 | 575 |
private static final long serialVersionUID = -5692569125344166705L; |
574 | 576 |
|
575 | 577 |
private int state = STATE_NONE; |
... | ... | |
856 | 858 |
throw new RuntimeException("Can't get selection of the FeatureTableModel",ex); |
857 | 859 |
} |
858 | 860 |
} |
859 |
|
|
860 |
|
|
861 |
|
|
862 |
|
|
861 | 863 |
} |
trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/featuretable/table/editors/GeometryWKTCellEditor.java | ||
---|---|---|
35 | 35 |
import javax.swing.DefaultCellEditor; |
36 | 36 |
import javax.swing.JOptionPane; |
37 | 37 |
import javax.swing.JTable; |
38 |
|
|
38 | 39 |
import org.apache.commons.lang3.StringUtils; |
39 |
import org.gvsig.fmap.dal.swing.impl.featuretable.table.GeometryToWKTException; |
|
40 |
import org.slf4j.Logger; |
|
41 |
import org.slf4j.LoggerFactory; |
|
40 | 42 |
|
43 |
import org.gvsig.fmap.dal.swing.impl.featuretable.table.renders.GeometryToWKTException; |
|
41 | 44 |
import org.gvsig.fmap.geom.Geometry; |
42 | 45 |
import org.gvsig.fmap.geom.GeometryLocator; |
43 | 46 |
import org.gvsig.fmap.geom.GeometryManager; |
44 | 47 |
import org.gvsig.i18n.Messages; |
45 |
import org.slf4j.Logger; |
|
46 |
import org.slf4j.LoggerFactory; |
|
47 | 48 |
|
48 | 49 |
/** |
49 | 50 |
* Editor for cells of type Geometry in WKT format. |
... | ... | |
51 | 52 |
* If the WKT to represent a Geometry is too big, editing is not allowed, as the |
52 | 53 |
* rendering of that big text is too slow. |
53 | 54 |
* </p> |
54 |
*
|
|
55 |
* |
|
55 | 56 |
* @author <a href="mailto:cordin@disid.com">C�sar Ordi�ana</a> |
56 | 57 |
*/ |
57 | 58 |
public class GeometryWKTCellEditor extends TextAreaCellEditor { |
... | ... | |
60 | 61 |
public static final int DEFAULT_MAX_WKT_LENGTH = 10000; |
61 | 62 |
|
62 | 63 |
private static final long serialVersionUID = -2296004227902843851L; |
63 |
|
|
64 |
|
|
64 | 65 |
private int maxRowHeight; |
65 | 66 |
|
66 | 67 |
/** |
... | ... | |
72 | 73 |
|
73 | 74 |
/** |
74 | 75 |
* Creates a new editor for Geometries in WKT format. |
75 |
*
|
|
76 |
* |
|
76 | 77 |
* @param maxWKTLength |
77 | 78 |
* the maximum WTK length allowed to be edited. |
78 | 79 |
* @param maxRowHeight |
Also available in: Unified diff