Revision 39058 branches/v2_0_0_prep/libraries/libFMap_mapcontext/src/org/gvsig/fmap/mapcontext/layers/vectorial/impl/DefaultGraphicLayer.java
DefaultGraphicLayer.java | ||
---|---|---|
26 | 26 |
*/ |
27 | 27 |
package org.gvsig.fmap.mapcontext.layers.vectorial.impl; |
28 | 28 |
|
29 |
import java.awt.Graphics2D; |
|
30 |
import java.awt.geom.Point2D; |
|
31 |
import java.awt.image.BufferedImage; |
|
32 | 29 |
import java.util.Iterator; |
33 | 30 |
|
34 | 31 |
import org.cresques.cts.ICoordTrans; |
... | ... | |
50 | 47 |
import org.gvsig.fmap.geom.Geometry.SUBTYPES; |
51 | 48 |
import org.gvsig.fmap.geom.Geometry.TYPES; |
52 | 49 |
import org.gvsig.fmap.geom.GeometryLocator; |
53 |
import org.gvsig.fmap.geom.exception.CreateEnvelopeException;
|
|
50 |
import org.gvsig.fmap.geom.GeometryManager;
|
|
54 | 51 |
import org.gvsig.fmap.geom.primitive.Envelope; |
55 |
import org.gvsig.fmap.mapcontext.ViewPort; |
|
56 | 52 |
import org.gvsig.fmap.mapcontext.exceptions.LegendLayerException; |
57 | 53 |
import org.gvsig.fmap.mapcontext.exceptions.LoadLayerException; |
58 |
import org.gvsig.fmap.mapcontext.exceptions.ReprojectLayerException; |
|
59 | 54 |
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect; |
60 | 55 |
import org.gvsig.fmap.mapcontext.layers.vectorial.GraphicLayer; |
61 | 56 |
import org.gvsig.fmap.mapcontext.rendering.legend.IVectorLegend; |
... | ... | |
63 | 58 |
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol; |
64 | 59 |
import org.gvsig.tools.dispose.DisposableIterator; |
65 | 60 |
import org.gvsig.tools.exception.BaseException; |
66 |
import org.gvsig.tools.task.Cancellable; |
|
67 | 61 |
import org.slf4j.Logger; |
68 | 62 |
import org.slf4j.LoggerFactory; |
69 | 63 |
|
... | ... | |
90 | 84 |
private int tagIndex; |
91 | 85 |
private int priorityIndex; |
92 | 86 |
|
93 |
public void initialize(IProjection projection) throws ValidateDataParametersException, DataException, LoadLayerException { |
|
87 |
public void initialize(IProjection projection) throws ValidateDataParametersException, DataException, LoadLayerException { |
|
88 |
GeometryManager geomManager = GeometryLocator.getGeometryManager(); |
|
94 | 89 |
store = dataManager.createMemoryStore(FEATURE_ATTR_PRIORITY); |
95 | 90 |
store.edit(); |
96 | 91 |
|
... | ... | |
99 | 94 |
editableFeatureType.add(GraphicLayer.FEATURE_ATTR_GROUPID, DataTypes.STRING); |
100 | 95 |
|
101 | 96 |
EditableFeatureAttributeDescriptor geometryDescriptor = editableFeatureType.add(GraphicLayer.FEATURE_ATTR_GEOMETRY, DataTypes.GEOMETRY); |
102 |
geometryDescriptor.setGeometryType(TYPES.GEOMETRY); |
|
103 |
geometryDescriptor.setGeometrySubType(SUBTYPES.GEOM2D); |
|
97 |
try { |
|
98 |
geometryDescriptor.setGeometryType(geomManager.getGeometryType(TYPES.GEOMETRY, SUBTYPES.GEOM2D)); |
|
99 |
} catch (Exception e) { |
|
100 |
logger.info("Can't create/assign geomery type to feature type of GraphicLayer.", e); |
|
101 |
} |
|
104 | 102 |
geometryDescriptor.setSRS(projection); |
105 | 103 |
editableFeatureType.setDefaultGeometryAttributeName(GraphicLayer.FEATURE_ATTR_GEOMETRY); |
106 | 104 |
|
... | ... | |
130 | 128 |
tagIndex = ftype.getIndex(GraphicLayer.FEATURE_ATTR_TAG); |
131 | 129 |
priorityIndex = ftype.getIndex(GraphicLayer.FEATURE_ATTR_PRIORITY); |
132 | 130 |
|
133 |
this.setDataStore(store);
|
|
131 |
this.bindToDataStore(store);
|
|
134 | 132 |
|
135 | 133 |
setName("Graphic Layer"); |
136 | 134 |
} |
... | ... | |
160 | 158 |
synchronized (store) { |
161 | 159 |
if (!store.isEditing()){ |
162 | 160 |
store.edit(FeatureStore.MODE_APPEND); |
161 |
insertGeometry(groupId, geom, idsym, label, tag, priority); |
|
162 |
store.finishEditing(); |
|
163 |
} else { |
|
164 |
insertGeometry(groupId, geom, idsym, label, tag, priority); |
|
163 | 165 |
} |
164 |
insertGeometry(groupId, geom, idsym, label, tag, priority); |
|
165 |
store.finishEditing(); |
|
166 | 166 |
} |
167 | 167 |
store.endComplexNotification(); |
168 | 168 |
} catch (DataException e) { |
... | ... | |
202 | 202 |
synchronized (store) { |
203 | 203 |
if (!store.isEditing()) { |
204 | 204 |
store.edit(FeatureStore.MODE_APPEND); |
205 |
store.disableNotifications(); |
|
206 |
for (; geoms.hasNext();) { |
|
207 |
Geometry geom = (Geometry) geoms.next(); |
|
208 |
insertGeometry(groupId, geom, idsym, label, tag, priority); |
|
209 |
} |
|
210 |
store.enableNotifications(); |
|
211 |
store.finishEditing(); |
|
212 |
} else { |
|
213 |
store.disableNotifications(); |
|
214 |
for (; geoms.hasNext();) { |
|
215 |
Geometry geom = (Geometry) geoms.next(); |
|
216 |
insertGeometry(groupId, geom, idsym, label, tag, priority); |
|
217 |
} |
|
218 |
store.enableNotifications(); |
|
205 | 219 |
} |
206 |
store.disableNotifications(); |
|
207 |
for (; geoms.hasNext();) { |
|
208 |
Geometry geom = (Geometry) geoms.next(); |
|
209 |
insertGeometry(groupId, geom, idsym, label, tag, priority); |
|
210 |
} |
|
211 |
store.enableNotifications(); |
|
212 |
store.finishEditing(); |
|
213 | 220 |
} |
214 | 221 |
} catch (DataException e) { |
215 | 222 |
logger.error("Error adding a geometry to the graphic layer", e); |
... | ... | |
237 | 244 |
try{ |
238 | 245 |
if (!store.isEditing()){ |
239 | 246 |
store.edit(); |
247 |
featureSet = store.getFeatureSet(); |
|
248 |
for (iterator = featureSet.fastIterator(); iterator.hasNext();) { |
|
249 |
Feature feature = (Feature) iterator.next(); |
|
250 |
featureSet.delete(feature); |
|
251 |
} |
|
252 |
store.finishEditing(); |
|
253 |
} else { |
|
254 |
featureSet = store.getFeatureSet(); |
|
255 |
for (iterator = featureSet.fastIterator(); iterator.hasNext();) { |
|
256 |
Feature feature = (Feature) iterator.next(); |
|
257 |
featureSet.delete(feature); |
|
258 |
} |
|
240 | 259 |
} |
241 |
featureSet = store.getFeatureSet(); |
|
242 |
for (iterator = featureSet.fastIterator(); iterator.hasNext();) { |
|
243 |
Feature feature = (Feature) iterator.next(); |
|
244 |
featureSet.delete(feature); |
|
245 |
} |
|
246 |
store.finishEditing(); |
|
247 | 260 |
} catch (DataException e) { |
248 | 261 |
logger.error("Error clearing all the geometry of the graphic layer", e); |
249 | 262 |
} finally { |
... | ... | |
269 | 282 |
store.beginComplexNotification(); |
270 | 283 |
if (!store.isEditing()){ |
271 | 284 |
store.edit(); |
272 |
}
|
|
273 |
featureSet = store.getFeatureSet();
|
|
274 |
store.beginEditingGroup(groupId);
|
|
275 |
for (iterator = featureSet.fastIterator(); iterator.hasNext();) {
|
|
276 |
Feature feature = (Feature) iterator.next();
|
|
277 |
if (feature.get(FEATURE_ATTR_GROUPID).equals(groupId)) {
|
|
278 |
featureSet.delete(feature);
|
|
285 |
featureSet = store.getFeatureSet();
|
|
286 |
store.beginEditingGroup(groupId);
|
|
287 |
for (iterator = featureSet.fastIterator(); iterator.hasNext();) {
|
|
288 |
Feature feature = (Feature) iterator.next();
|
|
289 |
if (feature.get(FEATURE_ATTR_GROUPID).equals(groupId)) {
|
|
290 |
featureSet.delete(feature);
|
|
291 |
}
|
|
279 | 292 |
} |
293 |
store.endEditingGroup(); |
|
294 |
store.finishEditing(); |
|
295 |
} else { |
|
296 |
featureSet = store.getFeatureSet(); |
|
297 |
store.beginEditingGroup(groupId); |
|
298 |
for (iterator = featureSet.fastIterator(); iterator.hasNext();) { |
|
299 |
Feature feature = (Feature) iterator.next(); |
|
300 |
if (feature.get(FEATURE_ATTR_GROUPID).equals(groupId)) { |
|
301 |
featureSet.delete(feature); |
|
302 |
} |
|
303 |
} |
|
304 |
store.endEditingGroup(); |
|
280 | 305 |
} |
281 |
store.endEditingGroup(); |
|
282 |
store.finishEditing(); |
|
283 | 306 |
store.endComplexNotification(); |
284 | 307 |
} catch (DataException e) { |
285 | 308 |
logger.error("Error clearing all the geometry of the graphic layer", e); |
Also available in: Unified diff