Revision 2141 org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.impl/src/main/java/org/gvsig/vectorediting/lib/impl/DefaultEditingProviderServices.java

View differences:

DefaultEditingProviderServices.java
26 26
import java.util.Iterator;
27 27
import java.util.List;
28 28
import java.util.Map;
29
import org.geotools.measure.AngleFormat;
29 30
import org.gvsig.euclidean.EuclideanLine2D;
30 31
import org.gvsig.expressionevaluator.GeometryExpressionBuilder;
31 32
import org.gvsig.fmap.dal.DALLocator;
......
61 62
import org.gvsig.fmap.mapcontext.layers.CancelationException;
62 63
import org.gvsig.fmap.mapcontext.layers.FLayer;
63 64
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
65
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
64 66
import org.gvsig.tools.ToolsLocator;
65 67
import org.gvsig.tools.exception.BaseException;
66 68
import org.gvsig.tools.i18n.I18nManager;
67 69
import org.gvsig.tools.service.spi.AbstractProviderServices;
70
import org.gvsig.vectorediting.lib.spi.DefaultDrawingStatus;
71
import org.gvsig.vectorediting.lib.spi.EditingProviderLocator;
72
import org.gvsig.vectorediting.lib.spi.EditingProviderManager;
68 73
import org.gvsig.vectorediting.lib.spi.EditingProviderServices;
69 74
import org.slf4j.Logger;
70 75
import org.slf4j.LoggerFactory;
......
462 467
        } else {
463 468
            //return the director vector of the line
464 469
            res[0] = createPoint(0.0, b1, subtype);
465
            Double mod = Math.sqrt(1+Math.pow(m1,2));
466
            Double x = 1/mod;
467
            Double y = m1*x + b1;
470
            Double mod = Math.sqrt(1 + Math.pow(m1, 2));
471
            Double x = 1 / mod;
472
            Double y = m1 * x + b1;
468 473
            res[1] = createPoint(x, y, subtype);
469 474
        }
470 475

  
......
611 616
        try {
612 617
            double tolerance = mapContext.getViewPort().toMapDistance(mapContext.getLayers().getDefaultTolerance());
613 618
            Geometry buffer = point.buffer(tolerance);
614
            
619

  
615 620
            DataManager dataManager = DALLocator.getDataManager();
616 621
            DALExpressionBuilder dalBuilder = dataManager.createDALExpressionBuilder();
617 622
            GeometryExpressionBuilder builder = dalBuilder.expression();
......
619 624
            String sortBy = builder.ST_Distance(builder.geometry(buffer), dalBuilder.geometry()).toString();
620 625

  
621 626
            Feature f;
622
                f = store.findFirst(filter, sortBy, true);
623
            if(f!=null){
627
            f = store.findFirst(filter, sortBy, true);
628
            if (f != null) {
624 629
                geometry = f.getDefaultGeometry();
625 630
            }
626
         
631

  
627 632
        } catch (Exception ex) {
628
            LOGGER.warn("Can't get geometry on point ("+point.getX()+","+point.getY(), ex);
633
            LOGGER.warn("Can't get geometry on point (" + point.getX() + "," + point.getY(), ex);
629 634
        }
630
        
635

  
631 636
        return geometry;
632 637
    }
633 638

  
634 639
    @Override
635 640
    public Geometry getGeometryOfVisibleLayers(Point point, FeatureStore store, MapContext mapContext) {
636
        
641

  
637 642
        // Search in the store itself
638 643
        Geometry geometry = this.getGeometry(point, store, mapContext);
639 644
        // Search in the store for the layers that are in edit
640
        if(geometry == null){
641
            for( Iterator<FLayer> iterator = mapContext.getLayers().deepiterator(); iterator.hasNext(); ) {
645
        if (geometry == null) {
646
            for (Iterator<FLayer> iterator = mapContext.getLayers().deepiterator(); iterator.hasNext();) {
642 647
                FLayer layer = iterator.next();
643
                if(layer instanceof FLyrVect){
648
                if (layer instanceof FLyrVect) {
644 649
                    FLyrVect vectLayer = (FLyrVect) layer;
645
                    if(vectLayer.getFeatureStore()!=store && vectLayer.isEditing()){
646
                        geometry  = this.getGeometry(point, vectLayer.getFeatureStore(), mapContext);
647
                        if(geometry != null){
650
                    if (vectLayer.getFeatureStore() != store && vectLayer.isEditing()) {
651
                        geometry = this.getGeometry(point, vectLayer.getFeatureStore(), mapContext);
652
                        if (geometry != null) {
648 653
                            break;
649 654
                        }
650 655
                    }
......
652 657
            }
653 658
        }
654 659
        // Search in the store for the active layers
655
        if(geometry == null){
660
        if (geometry == null) {
656 661
            FLayer[] activeLayers = mapContext.getLayers().getActives();
657 662
            for (FLayer activeLayer : activeLayers) {
658
                if(activeLayer instanceof FLyrVect){
663
                if (activeLayer instanceof FLyrVect) {
659 664
                    FLyrVect activeVectLayer = (FLyrVect) activeLayer;
660
                    if(activeVectLayer.getFeatureStore()!=store && !activeVectLayer.isEditing()){
661
                        geometry  = this.getGeometry(point, activeVectLayer.getFeatureStore(), mapContext);
662
                        if(geometry != null){
665
                    if (activeVectLayer.getFeatureStore() != store && !activeVectLayer.isEditing()) {
666
                        geometry = this.getGeometry(point, activeVectLayer.getFeatureStore(), mapContext);
667
                        if (geometry != null) {
663 668
                            break;
664 669
                        }
665 670
                    }
......
668 673
        }
669 674
        return geometry;
670 675
    }
671
    
672
    
676

  
677
    @Override
678
    public void addAngleToDrawingStatus(DefaultDrawingStatus drawingStatus, ISymbol textSymbol, Point vertex, Point ray1, Point ray2, int subtype) throws CreateGeometryException, GeometryOperationNotSupportedException, GeometryOperationException {
679
        EditingProviderManager editingProviderManager
680
                = EditingProviderLocator.getProviderManager();
681
        ISymbol auxiliaryLineSymbolEditing = editingProviderManager.getSymbol("auxiliary-line-symbol-editing");
682

  
683
        double angleRay1 = GeometryUtils.calculateAngle(vertex, ray1);
684
        double angle = GeometryUtils.calculateAngle(vertex, ray1, ray2);
685
        double radius = vertex.distance(ray1) / 4;
686
        Arc auxArc = GeometryUtils.createArc(
687
                vertex,
688
                radius,
689
                GeometryUtils.calculateAngle(vertex, ray1),
690
                angle,
691
                subtype
692
        );
693
        drawingStatus.addStatus(auxArc, auxiliaryLineSymbolEditing, "");
694

  
695
        Point measurePoint = GeometryUtils.createPoint(vertex, radius, angleRay1 + angle / 2);
696

  
697
//        drawingStatus.addStatus(measurePoint, textSymbol, new AngleFormat("DD?MM'").format(Math.toDegrees(angle)));
698
        drawingStatus.addStatus(measurePoint, textSymbol, new AngleFormat("DD.ddd?").format(Math.toDegrees(angle)));
699

  
700
    }
673 701
}

Also available in: Unified diff