Revision 39055

View differences:

branches/v2_0_0_prep/extensions/extEditing/src/org/gvsig/editing/MatrixExtension.java
52 52

  
53 53

  
54 54
/**
55
 * Extensi?n que gestiona la creaci?n de una matriz a partir de la geometr?a seleccionada.
55
 * Extensi?n que gestiona la creaci?n de una matriz a partir de
56
 * la geometr?a seleccionada.
56 57
 *
57 58
 * @author Vicente Caballero Navarro
58 59
 */
branches/v2_0_0_prep/extensions/extEditing/src/org/gvsig/editing/gui/cad/DefaultCADTool.java
479 479
        PluginServices.getMainFrame().setSelectedTool("_selection");
480 480
        CADTool cadtool = CADExtension.getCADTool();
481 481
        cadtool.setPreviosTool(this);
482
        cadtool.getVLE().getLayer().getMapContext().invalidate();
482 483
    }
483 484

  
484 485
    public void init() {
branches/v2_0_0_prep/extensions/extEditing/src/org/gvsig/editing/gui/cad/tools/MatrixCADTool.java
46 46
import org.gvsig.fmap.geom.Geometry;
47 47
import org.gvsig.fmap.geom.handler.Handler;
48 48
import org.gvsig.fmap.geom.primitive.Curve;
49
import org.gvsig.fmap.geom.primitive.Envelope;
49 50
import org.gvsig.fmap.geom.primitive.GeneralPathX;
50 51
import org.gvsig.fmap.geom.type.GeometryType;
51 52
import org.gvsig.fmap.mapcontext.ViewPort;
53
import org.gvsig.fmap.mapcontext.layers.SpatialCache;
54
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
52 55
import org.gvsig.fmap.mapcontrol.MapControlDrawer;
53 56
import org.gvsig.tools.dispose.DisposableIterator;
54 57

  
......
195 198
                                Geometry geom =
196 199
                                    (feature.getDefaultGeometry())
197 200
                                        .cloneGeometry();
198
                                Rectangle2D originalRec = geom.getBounds2D();
201
                                Envelope original_env = geom.getEnvelope();
199 202
                                Geometry g =
200 203
                                    createPoint(
201
                                        originalRec.getX()
204
                                        original_env.getMinimum(0)
202 205
                                            + operations.getDistColumns()
203
                                            * columns, originalRec.getY()
206
                                            * columns, original_env.getMinimum(1)
204 207
                                            + operations.getDistRows() * rows);
205 208
                                AffineTransform at = new AffineTransform();
206 209
                                at.rotate(
207 210
                                    Math.toRadians(operations.getRotation()),
208
                                    originalRec.getMinX(),
209
                                    originalRec.getMinY());
211
                                    original_env.getMinimum(0),
212
                                    original_env.getMinimum(1));
210 213
                                g.transform(at);
214
                                Envelope new_env = g.getEnvelope();
211 215
                                Point2D pDest =
212
                                    new Point2D.Double(g.getBounds2D().getX(),
213
                                        g.getBounds2D().getY());
216
                                    new Point2D.Double(
217
                                        new_env.getMinimum(0),
218
                                        new_env.getMinimum(1));
214 219

  
215
                                double difX = pDest.getX() - originalRec.getX();
216
                                double difY = pDest.getY() - originalRec.getY();
220
                                double difX = pDest.getX() - original_env.getMinimum(0);
221
                                double difY = pDest.getY() - original_env.getMinimum(1);
217 222
                                Handler[] handlers =
218 223
                                    geom.getHandlers(Geometry.SELECTHANDLER);
219 224
                                for (int j = 0; j < handlers.length; j++) {
......
248 253
                                (feature.getDefaultGeometry()).cloneGeometry();
249 254

  
250 255
                            if (!operations.isRotateElements()) {
251
                                Rectangle2D originalRec = geom.getBounds2D();
256
                                Envelope orig_env = geom.getEnvelope();
252 257
                                Geometry g =
253
                                    createPoint(originalRec.getX(),
254
                                        originalRec.getY());
258
                                    createPoint(
259
                                        orig_env.getMinimum(0),
260
                                        orig_env.getMinimum(1));
255 261
                                AffineTransform at = new AffineTransform();
256 262
                                at.rotate(Math.toRadians(rotation * numElem),
257 263
                                    operations.getPositionX(),
258 264
                                    operations.getPositionY());
259 265
                                g.transform(at);
266
                                
267
                                Envelope new_env = g.getEnvelope();
268
                                
260 269
                                Point2D pDest =
261
                                    new Point2D.Double(g.getBounds2D().getX(),
262
                                        g.getBounds2D().getY());
270
                                    new Point2D.Double(
271
                                        new_env.getMinimum(0),
272
                                        new_env.getMinimum(1));
263 273

  
264
                                double difX = pDest.getX() - originalRec.getX();
265
                                double difY = pDest.getY() - originalRec.getY();
274
                                double difX = pDest.getX() - orig_env.getMinimum(0);
275
                                double difY = pDest.getY() - orig_env.getMinimum(1);
266 276
                                Handler[] handlers =
267 277
                                    geom.getHandlers(Geometry.SELECTHANDLER);
268 278
                                for (int j = 0; j < handlers.length; j++) {
......
273 283
                            } else {// Cuando los elemtos rotan al mismo tiempo
274 284
                                    // que se van a?adiendo.
275 285

  
276
                                Rectangle2D originalRec = geom.getBounds2D();
286
                                Envelope orig_env = geom.getEnvelope();
277 287
                                AffineTransform at = new AffineTransform();
278 288
                                at.rotate(Math.toRadians(rotation * numElem),
279 289
                                    operations.getPositionX(),
280 290
                                    operations.getPositionY());
281 291
                                geom.transform(at);
292
                                
293
                                Envelope new_env = geom.getEnvelope();
294
                                
282 295
                                Point2D pDest =
283
                                    new Point2D.Double(geom.getBounds2D()
284
                                        .getX(), geom.getBounds2D().getY());
296
                                    new Point2D.Double(
297
                                        new_env.getMinimum(0),
298
                                        new_env.getMinimum(1)
299
                                        );
285 300

  
286
                                double difX = pDest.getX() - originalRec.getX();
287
                                double difY = pDest.getY() - originalRec.getY();
301
                                double difX = pDest.getX() - orig_env.getMinimum(0);
302
                                double difY = pDest.getY() - orig_env.getMinimum(1);
288 303
                                Handler[] handlers =
289 304
                                    geom.getHandlers(Geometry.SELECTHANDLER);
290 305
                                for (int j = 0; j < handlers.length; j++) {
......
304 319
                        }
305 320
                    }
306 321
                }
322
                
323
                // =================================================
324
                /*
325
                 * Inserting geometries of matrix
326
                 */
327
                SpatialCache spatialCache =
328
                    ((FLyrVect) vle.getLayer()).getSpatialCache();
329
                
330
                for (int i=0; i<selectedRowAux.size(); i++) {
331
                    EditableFeature efeat = (EditableFeature) selectedRowAux.get(i);
332
                    featureStore.insert(efeat);
333
                    Geometry ngeom = efeat.getDefaultGeometry();
334
                    Envelope envelope = ngeom.getEnvelope();
335
                    /*
336
                     * Updating spatial cache
337
                     */
338
                    spatialCache.insert(envelope, ngeom);
339
                }
340
                
341
                // =================================================
342
                
307 343
                featureStore.endEditingGroup();
308 344
                // vle.setSelectionCache(VectorialLayerEdited.SAVEPREVIOUS,
309 345
                // selectedRowAux);

Also available in: Unified diff