Revision 47355

View differences:

trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.snapping.app/org.gvsig.snapping.app.mainplugin/src/main/java/org/gvsig/app/gui/preferencespage/SnapConfigPage.java
108 108
        });
109 109

  
110 110
        this.setLayout(new BorderLayout());
111
        this.add(this.snapConfig, BorderLayout.NORTH);
111
        this.add(this.snapConfig, BorderLayout.CENTER);
112 112
        this.snapConfig.setSnappers();
113 113
        initializeValues();
114 114
    }
......
199 199
            ISnapper snp = (ISnapper) mapControlManager.getSnapperAt(n);
200 200
            String nameClass = snp.getClass().getName();
201 201
            nameClass = nameClass.substring(nameClass.lastIndexOf('.')+1);
202
            Boolean active = (Boolean) pluginProperties.getDynValue("snapperActivated"+nameClass);
202
                Boolean active = (Boolean) pluginProperties.getDynValue("snapperActivated"+nameClass);
203 203
            snapConfig.getTableModel().setValueAt(active.booleanValue(),n,0);
204
            Integer prior = (Integer) pluginProperties.getDynValue("snapperPriority"+nameClass);
205
            snapConfig.getTableModel().setValueAt(prior, n, 3);
204
                Integer prior = (Integer) pluginProperties.getDynValue("snapperPriority"+nameClass);
205
                snapConfig.getTableModel().setValueAt(prior, n, 3);
206 206
        }
207 207
      Integer snapTolerance = (Integer) pluginProperties.getDynValue("snapTolerance");
208 208
      snapConfig.setSnapTolerance(snapTolerance);
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.snapping.app/org.gvsig.snapping.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/gui/ViewSnappingInfoImpl.java
7 7

  
8 8
import java.awt.Dimension;
9 9
import java.awt.event.ActionEvent;
10
import java.awt.event.ActionListener;
11 10
import java.awt.event.MouseAdapter;
12 11
import java.awt.event.MouseEvent;
13 12
import java.net.URL;
......
198 197
    }
199 198

  
200 199
    private static final Logger LOGGER = LoggerFactory.getLogger(ViewSnappingInfoImpl.class);
201
    private final MapContext mapContext;
200
    private MapContext mapContext;
202 201

  
203
    public ViewSnappingInfoImpl(MapContext mapContext) {
204
        this.mapContext = mapContext;
202
    public ViewSnappingInfoImpl() {
205 203
        this.initComponents();
206 204
    }
207 205

  
......
213 211
        toolsSwingManager.translate(this.btnCheckAllSnapping);
214 212
        toolsSwingManager.translate(this.btnUncheckAllSnapping);
215 213

  
216
        List<FLayer>layers = new ArrayList<>();
217
        Iterator<FLayer> layersUnordered = mapContext.deepiterator();
218
        while (layersUnordered.hasNext()) {
219
            layers.add(layersUnordered.next());
220
        }
221
        Collections.sort(layers, new Comparator<FLayer>() {
222
            @Override
223
            public int compare(FLayer o1, FLayer o2) {
224
                return o1.getName().compareToIgnoreCase(o2.getName());
225
            }
226
        });
227 214
        SnappingTableModel model = new SnappingTableModel();
228
        for (FLayer layer : layers) {
229
            model.addLayer(layer);
230
        }
231

  
232 215
        this.tableSnapping.setModel(model);
233 216

  
234 217
        int tolerance = MapControlLocator.getMapControlManager().getTolerance();
235 218
        this.textFieldTolSnapping.setText(String.valueOf(tolerance));
236 219

  
237
        this.btnCheckAllSnapping.addActionListener(new ActionListener() {
238
            @Override
239
            public void actionPerformed(ActionEvent e) {
240
                doCheckAll();
241
            }
220
        this.btnCheckAllSnapping.addActionListener((ActionEvent e) -> {
221
            doCheckAll();
242 222
        });
243
        this.btnUncheckAllSnapping.addActionListener(new ActionListener() {
244
            @Override
245
            public void actionPerformed(ActionEvent e) {
246
                doUncheckAll();
247
            }
223
        this.btnUncheckAllSnapping.addActionListener((ActionEvent e) -> {
224
            doUncheckAll();
248 225
        });
249 226

  
250 227
        this.tableSnapping.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
......
333 310
        }
334 311
        this.mapContext.invalidate();
335 312
    }
313
    
314
    public void setMapContext(MapContext mapContext){
315
        this.mapContext = mapContext;
316
        
317
        List<FLayer>layers = new ArrayList<>();
318
        Iterator<FLayer> layersUnordered = mapContext.deepiterator();
319
        while (layersUnordered.hasNext()) {
320
            layers.add(layersUnordered.next());
321
        }
322
        Collections.sort(layers, new Comparator<FLayer>() {
323
            @Override
324
            public int compare(FLayer o1, FLayer o2) {
325
                return o1.getName().compareToIgnoreCase(o2.getName());
326
            }
327
        });
328
        SnappingTableModel model = new SnappingTableModel();
329
        for (FLayer layer : layers) {
330
            model.addLayer(layer);
331
        }
336 332

  
333
        this.tableSnapping.setModel(model);
334

  
335

  
336
    }
337

  
337 338
}
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.snapping.app/org.gvsig.snapping.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/gui/ViewSnappingPropertiesPage.java
67 67

  
68 68
    private void initComponents() {
69 69
        this.setLayout(new BorderLayout());
70
        this.panel = new ViewSnappingInfoImpl(this.view.getMapContext());
70
        this.panel = new ViewSnappingInfoImpl();
71
        this.panel.setMapContext(this.view.getMapContext());
71 72
        this.add(this.panel, BorderLayout.CENTER);
72 73
    }
73 74
    
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.snapping.app/org.gvsig.snapping.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/toolListeners/snapping/snappers/QuadrantPointSnapper.java
24 24
package org.gvsig.app.project.documents.view.toolListeners.snapping.snappers;
25 25

  
26 26
import java.awt.geom.Point2D;
27
import java.util.ArrayList;
28
import java.util.List;
27 29

  
28 30
import org.gvsig.fmap.geom.Geometry;
29 31
import org.gvsig.fmap.geom.handler.CuadrantHandler;
30 32
import org.gvsig.fmap.geom.handler.Handler;
33
import org.gvsig.fmap.geom.primitive.Envelope;
31 34
import org.gvsig.fmap.mapcontrol.PrimitivesDrawer;
32 35
import org.gvsig.fmap.mapcontrol.tools.snapping.snappers.ISnapperVectorial;
33 36
import org.gvsig.fmap.mapcontrol.tools.snapping.snappers.impl.AbstractSnapper;
......
48 51
    public Point2D getSnapPoint(Point2D point, Geometry geom,
49 52
        double tolerance, Point2D lastPointEntered) {
50 53
        Point2D resul = null;
54
        
55
        Envelope envelope = geom.getEnvelope();
56
        double minX = envelope.getMinimum(Geometry.DIMENSIONS.X);
57
        double centerX = envelope.getCenter(Geometry.DIMENSIONS.X);
58
        double maxX = envelope.getMaximum(Geometry.DIMENSIONS.X);
59
        double minY = envelope.getMinimum(Geometry.DIMENSIONS.Y);
60
        double centerY = envelope.getCenter(Geometry.DIMENSIONS.Y);
61
        double maxY = envelope.getMaximum(Geometry.DIMENSIONS.Y);
62
        
63
        List<Point2D> pointHandlers = new ArrayList();
64
        
65
        pointHandlers.add(new Point2D.Double(minX, minY));
66
        pointHandlers.add(new Point2D.Double(centerX, minY));
67
        pointHandlers.add(new Point2D.Double(maxX, minY));
68
        
69
        pointHandlers.add(new Point2D.Double(minX, centerY));
70
        pointHandlers.add(new Point2D.Double(maxX, centerY));
71
        
72
        pointHandlers.add(new Point2D.Double(maxX, maxY));
73
        pointHandlers.add(new Point2D.Double(maxX, maxY));
74
        pointHandlers.add(new Point2D.Double(maxX, maxY));
75
        
76
        
51 77

  
52
        Handler[] handlers = geom.getHandlers(Geometry.SELECTHANDLER);
53

  
54 78
        double minDist = tolerance;
55 79

  
56
        for (int j = 0; j < handlers.length; j++) {
57
            if (handlers[j] instanceof CuadrantHandler) {
58
                Point2D handlerPoint = handlers[j].getPoint();
59
                double dist = handlerPoint.distance(point);
60

  
61
                if ((dist < minDist)) {
62
                    resul = handlerPoint;
63
                    minDist = dist;
64
                }
80
        for (Point2D pointHandler : pointHandlers) {
81
            double dist = pointHandler.distance(point);
82
            if ((dist < minDist)) {
83
                resul = pointHandler;
84
                minDist = dist;
65 85
            }
66 86
        }
67 87

  
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.snapping.app/org.gvsig.snapping.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/toolListeners/snapping/snappers/IntersectionPointSnapper.java
157 157
        Point2D point,
158 158
        double tolerance) throws Exception {
159 159
        
160
        List<Geometry> resp = new ArrayList<Geometry>();
161
        if (geomlist == null || geomlist.size() == 0) {
160
        List<Geometry> resp = new ArrayList<>();
161
        if (geomlist == null || geomlist.isEmpty()) {
162 162
            return resp;
163 163
        }
164 164
        
......
200 200
    }
201 201

  
202 202
    public String getToolTipText() {
203
        return Messages.getText("Intersection_point_snapper");
203
        return Messages.getText("_Intersection_point");
204 204
    }
205 205

  
206 206
	public void setGeometries(List geoms) {
......
209 209
	
210 210
	private List<Point> getInterPoints(List geomes) {
211 211
	    
212
	    List<Point> resp = new ArrayList<Point>();
212
	    List<Point> resp = new ArrayList<>();
213 213
	    List borders = getJTSBorders(geomes);
214 214
	    com.vividsolutions.jts.geom.Geometry jtsg1 = null;
215 215
	    com.vividsolutions.jts.geom.Geometry jtsg2 = null;
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.snapping.app/org.gvsig.snapping.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/toolListeners/snapping/snappers/CentroidPointSnapper.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24
package org.gvsig.app.project.documents.view.toolListeners.snapping.snappers;
25

  
26
import java.awt.geom.Point2D;
27
import org.gvsig.fmap.geom.Geometry;
28
import org.gvsig.fmap.geom.operation.GeometryOperationException;
29
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
30
import org.gvsig.fmap.geom.primitive.Envelope;
31
import org.gvsig.fmap.geom.primitive.Point;
32
import org.gvsig.fmap.mapcontrol.PrimitivesDrawer;
33
import org.gvsig.fmap.mapcontrol.tools.snapping.snappers.ISnapperVectorial;
34
import org.gvsig.fmap.mapcontrol.tools.snapping.snappers.impl.AbstractSnapper;
35
import org.gvsig.i18n.Messages;
36
import org.slf4j.Logger;
37
import org.slf4j.LoggerFactory;
38

  
39

  
40
/**
41
 * Central point snapper.
42
 *
43
 * @author Vicente Caballero Navarro
44
 */
45
public class CentroidPointSnapper extends AbstractSnapper
46
    implements ISnapperVectorial {
47
    
48
    private static final Logger LOGGER = LoggerFactory.getLogger(CentroidPointSnapper.class);
49

  
50
    @Override
51
    public Point2D getSnapPoint(Point2D point, Geometry geom,
52
        double tolerance, Point2D lastPointEntered) {
53
        Point2D resul = null;
54
        
55
        Point centroid;
56
        try {
57
            centroid = geom.centroid();
58
            Point2D.Double pointCentroid = new Point2D.Double(centroid.getX(),centroid.getY());
59

  
60
            double dist = pointCentroid.distance(point);
61

  
62
            if ((dist < tolerance)) {
63
                resul = pointCentroid;
64
            }
65
        } catch (Exception ex) {
66
            LOGGER.warn("Can't get centroid.", ex);
67
        }
68
        
69
        return resul;
70
    }
71

  
72
    @Override
73
    public String getToolTipText() {
74
        return Messages.getText("_Centroid_point");
75
    }
76

  
77
    @Override
78
    public void draw(PrimitivesDrawer primitivesDrawer, Point2D pPixels) {
79
    	primitivesDrawer.setColor(getColor());
80

  
81
        int half = getSizePixels() / 2;
82
        primitivesDrawer.drawOval((int) (pPixels.getX() - half),
83
            (int) (pPixels.getY() - half), getSizePixels(), getSizePixels());
84
    }
85
}
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.snapping.app/org.gvsig.snapping.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/toolListeners/snapping/snappers/CentralPointSnapper.java
24 24
package org.gvsig.app.project.documents.view.toolListeners.snapping.snappers;
25 25

  
26 26
import java.awt.geom.Point2D;
27

  
28 27
import org.gvsig.fmap.geom.Geometry;
29
import org.gvsig.fmap.geom.handler.CenterHandler;
30
import org.gvsig.fmap.geom.handler.Handler;
28
import org.gvsig.fmap.geom.primitive.Envelope;
31 29
import org.gvsig.fmap.mapcontrol.PrimitivesDrawer;
32 30
import org.gvsig.fmap.mapcontrol.tools.snapping.snappers.ISnapperVectorial;
33 31
import org.gvsig.fmap.mapcontrol.tools.snapping.snappers.impl.AbstractSnapper;
......
41 39
 */
42 40
public class CentralPointSnapper extends AbstractSnapper
43 41
    implements ISnapperVectorial {
44
	/* (non-Javadoc)
45
     * @see com.iver.cit.gvsig.gui.cad.snapping.ISnapper#getSnapPoint(Point2D point,
46
     * IGeometry geom,double tolerance, Point2D lastPointEntered)
47
     */
48
	public Point2D getSnapPoint(Point2D point, Geometry geom,
42

  
43
    @Override
44
    public Point2D getSnapPoint(Point2D point, Geometry geom,
49 45
        double tolerance, Point2D lastPointEntered) {
50 46
        Point2D resul = null;
47
        
48
        Envelope envelope = geom.getEnvelope();
49
        
50
        Point2D.Double center = new Point2D.Double(envelope.getCenter(Geometry.DIMENSIONS.X),
51
                    envelope.getCenter(Geometry.DIMENSIONS.Y));
51 52

  
52
        Handler[] handlers = geom.getHandlers(Geometry.SELECTHANDLER);
53
        double dist = center.distance(point);
53 54

  
54
        double minDist = tolerance;
55

  
56
        for (int j = 0; j < handlers.length; j++) {
57
            if (handlers[j] instanceof CenterHandler) {
58
                Point2D handlerPoint = handlers[j].getPoint();
59
                double dist = handlerPoint.distance(point);
60

  
61
                if ((dist < minDist)) {
62
                    resul = handlerPoint;
63
                    minDist = dist;
64
                }
65
            }
55
        if ((dist < tolerance)) {
56
            resul = center;
66 57
        }
67

  
58
        
68 59
        return resul;
69 60
    }
70
	/* (non-Javadoc)
71
     * @see com.iver.cit.gvsig.gui.cad.snapping.ISnapper#getToolTipText()
72
     */
61

  
62
    @Override
73 63
    public String getToolTipText() {
74 64
        return Messages.getText("Central_point");
75 65
    }
76 66

  
77
    /*
78
     * (non-Javadoc)
79
     * @see org.gvsig.fmap.mapcontrol.tools.snapping.snappers.ISnapper#draw(org.gvsig.fmap.mapcontrol.PrimitivesDrawer, java.awt.geom.Point2D)
80
     */
67
    @Override
81 68
    public void draw(PrimitivesDrawer primitivesDrawer, Point2D pPixels) {
82 69
    	primitivesDrawer.setColor(getColor());
83 70

  
84 71
        int half = getSizePixels() / 2;
85
        primitivesDrawer.drawOval((int) (pPixels.getX() - half),
86
            (int) (pPixels.getY() - half), getSizePixels(), getSizePixels());
72
        int x1 = (int) (pPixels.getX() - half);
73
        int x2 = (int) (pPixels.getX() + half);
74
        int x3 = (int) pPixels.getX();
75
        int y1 = (int) (pPixels.getY() - half);
76
        int y2 = (int) (pPixels.getY() + half);
77
        int y3 = (int) pPixels.getY();
78

  
79
        primitivesDrawer.drawLine(x1, y3, x3, y1);
80
        primitivesDrawer.drawLine(x1, y3, x3, y2);
81
        primitivesDrawer.drawLine(x2, y3, x3, y1);
82
        primitivesDrawer.drawLine(x2, y3, x3, y2);
87 83
    }
88 84
}
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.snapping.app/org.gvsig.snapping.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/toolListeners/snapping/Snapping.java
25 25

  
26 26

  
27 27
import org.gvsig.app.project.documents.view.toolListeners.snapping.snappers.CentralPointSnapper;
28
import org.gvsig.app.project.documents.view.toolListeners.snapping.snappers.CentroidPointSnapper;
28 29
import org.gvsig.app.project.documents.view.toolListeners.snapping.snappers.FinalPointSnapper;
29 30
import org.gvsig.app.project.documents.view.toolListeners.snapping.snappers.IntersectionPointSnapper;
30 31
import org.gvsig.app.project.documents.view.toolListeners.snapping.snappers.MediumPointSnapper;
......
35 36
import org.gvsig.app.project.documents.view.toolListeners.snapping.snappers.TangentPointSnapper;
36 37
import org.gvsig.fmap.mapcontrol.MapControlLocator;
37 38
import org.gvsig.fmap.mapcontrol.MapControlManager;
38
import org.gvsig.fmap.mapcontrol.impl.DefaultMapControlLibrary;
39 39
import org.gvsig.fmap.mapcontrol.impl.DefaultMapControlManager;
40
import org.gvsig.tools.ToolsLocator;
41
import org.gvsig.tools.extensionpoint.ExtensionPoint;
42 40

  
43 41

  
44 42
/**
......
68 66
    	mapControlManager.registerSnapper("MediumPointSnapper", MediumPointSnapper.class);
69 67
    	mapControlManager.registerSnapper("PerpendicularPointSnapper", PerpendicularPointSnapper.class);
70 68
    	mapControlManager.registerSnapper("TangentPointSnapper", TangentPointSnapper.class);
69
    	mapControlManager.registerSnapper("CentroidPointSnapper", CentroidPointSnapper.class);
71 70
    }
72 71
}
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.snapping.app/org.gvsig.snapping.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/toolListeners/snapping/gui/DrawSnapCellRenderer.java
27 27
import java.awt.Component;
28 28
import java.awt.Graphics;
29 29
import java.awt.geom.Point2D;
30

  
31 30
import javax.swing.JPanel;
32 31
import javax.swing.JTable;
33 32
import javax.swing.table.TableCellRenderer;
34

  
35 33
import org.gvsig.fmap.mapcontrol.MapControlLocator;
36 34
import org.gvsig.fmap.mapcontrol.MapControlManager;
37 35
import org.gvsig.fmap.mapcontrol.PrimitivesDrawer;
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.snapping.app/org.gvsig.snapping.app.mainplugin/src/main/java/org/gvsig/app/project/documents/view/toolListeners/snapping/gui/SnapConfig.java
291 291
		if (jChkBoxRefentActive == null) {
292 292
                        I18nManager i18nManager = ToolsLocator.getI18nManager();
293 293
			jChkBoxRefentActive = new JCheckBox();
294
			jChkBoxRefentActive.setText(i18nManager.getTranslation("activate_reference_to_objects"));
294
			jChkBoxRefentActive.setText(i18nManager.getTranslation("_Activate_reference_to_objects"));
295 295
			jChkBoxRefentActive.setBounds(new java.awt.Rectangle(26,10,418,23));
296 296
		}
297 297
		return jChkBoxRefentActive;
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.snapping.app/org.gvsig.snapping.app.mainplugin/src/main/resources-plugin/plugin-persistence.def
90 90
          <description></description>
91 91
        </field>
92 92

  
93
        <field name="snapperActivatedCentroidPointSnapper" type="Boolean" defaultValue="false" classOfValue="" mandatory="false">
94
          <description></description>
95
        </field>
96

  
97
        <field name="snapperPriorityCentroidPointSnapper" type="Integer" defaultValue="3" classOfValue="" mandatory="false">
98
          <description></description>
99
        </field>
100

  
93 101
        <!--Grid-->
94 102
        <field name="adjustgrid" type="Boolean" defaultValue="false" classOfValue="" mandatory="false">
95 103
          <description></description>
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.snapping.app/org.gvsig.snapping.app.mainplugin/src/main/resources-plugin/i18n/text.properties
26 26
_selected=Seleccionada
27 27
_layer_name=Nombre capa
28 28
_max_number_of_memory_entities=Max. n\u00famero de entidades en memoria
29
_Activate_reference_to_objects=Activar referencia a objetos
30
_Centroid_point=Punto centroide
31
_Intersection_point=Punto de intersecci\u00f3n
trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.snapping.app/org.gvsig.snapping.app.mainplugin/src/main/resources-plugin/i18n/text_en.properties
15 15
snap_tolerance=Tolerance
16 16
capas_edition_cache=Mark the layers to be used for snapping
17 17
MaxFeaturesEditionCache=Max features edition cache
18
LayerName=Layer name
18
LayerName=Layer name
19
_Activate_reference_to_objects=Activate reference to objects
20
_Centroid_point=Centroid point
21
_Intersection_point=Intersection point

Also available in: Unified diff