Revision 4347

View differences:

org.gvsig.vectorediting.symmetry/tags/org.gvsig.vectorediting.symmetry-1.0.246/org.gvsig.vectorediting.symmetry.lib/pom.xml
1
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
2
  <modelVersion>4.0.0</modelVersion>
3
  <parent>
4
    <groupId>org.gvsig</groupId>
5
    <artifactId>org.gvsig.vectorediting.symmetry</artifactId>
6
    <version>1.0.246</version>
7
  </parent>
8
  <artifactId>org.gvsig.vectorediting.symmetry.lib</artifactId>
9
  <packaging>pom</packaging>
10
  <name>org.gvsig.vectorediting.symmetry.lib</name>
11
  <modules>
12
  	<module>org.gvsig.vectorediting.symmetry.lib.prov</module>
13
  </modules>
14
</project>
org.gvsig.vectorediting.symmetry/tags/org.gvsig.vectorediting.symmetry-1.0.246/org.gvsig.vectorediting.symmetry.lib/org.gvsig.vectorediting.symmetry.lib.prov/pom.xml
1
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
2
  <modelVersion>4.0.0</modelVersion>
3
  <parent>
4
    <groupId>org.gvsig</groupId>
5
    <artifactId>org.gvsig.vectorediting.symmetry.lib</artifactId>
6
    <version>1.0.246</version>
7
  </parent>
8
  <artifactId>org.gvsig.vectorediting.symmetry.lib.prov</artifactId>
9
  <packaging>pom</packaging>
10
  <name>org.gvsig.vectorediting.symmetry.lib.prov</name>
11
  <modules>
12
  	<module>
13
  		org.gvsig.vectorediting.symmetry.lib.prov.symmetry
14
  	</module>
15
  </modules>
16
</project>
org.gvsig.vectorediting.symmetry/tags/org.gvsig.vectorediting.symmetry-1.0.246/org.gvsig.vectorediting.symmetry.lib/org.gvsig.vectorediting.symmetry.lib.prov/org.gvsig.vectorediting.symmetry.lib.prov.symmetry/src/main/java/org/gvsig/vectorediting/symmetry/lib/prov/symmetry/SymmetryEditingProvider.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright ? 2007-2014 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 2
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

  
25
package org.gvsig.vectorediting.symmetry.lib.prov.symmetry;
26

  
27
import java.awt.geom.AffineTransform;
28
import java.util.ArrayList;
29
import java.util.Collections;
30
import java.util.HashMap;
31
import java.util.LinkedHashMap;
32
import java.util.List;
33
import java.util.Map;
34
import java.util.Objects;
35
import org.apache.commons.collections.CollectionUtils;
36
import org.gvsig.fmap.dal.exception.DataException;
37
import org.gvsig.fmap.dal.feature.EditableFeature;
38
import org.gvsig.fmap.dal.feature.Feature;
39
import org.gvsig.fmap.dal.feature.FeatureSelection;
40
import org.gvsig.fmap.dal.feature.FeatureStore;
41
import org.gvsig.fmap.geom.Geometry;
42
import org.gvsig.fmap.geom.GeometryLocator;
43
import org.gvsig.fmap.geom.aggregate.Aggregate;
44
import org.gvsig.fmap.geom.aggregate.MultiCurve;
45
import org.gvsig.fmap.geom.aggregate.MultiPoint;
46
import org.gvsig.fmap.geom.aggregate.MultiSurface;
47
import org.gvsig.fmap.geom.operation.GeometryOperationException;
48
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
49
import org.gvsig.fmap.geom.primitive.Curve;
50
import org.gvsig.fmap.geom.primitive.Line;
51
import org.gvsig.fmap.geom.primitive.Point;
52
import org.gvsig.fmap.geom.primitive.Primitive;
53
import org.gvsig.fmap.geom.primitive.Surface;
54
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
55
import org.gvsig.tools.ToolsLocator;
56
import org.gvsig.tools.dataTypes.DataTypes;
57
import org.gvsig.tools.dispose.DisposableIterator;
58
import org.gvsig.tools.dynobject.DynObject;
59
import org.gvsig.tools.i18n.I18nManager;
60
import org.gvsig.tools.service.spi.ProviderServices;
61
import org.gvsig.vectorediting.lib.api.DrawingStatus;
62
import org.gvsig.vectorediting.lib.api.EditingServiceParameter;
63
import org.gvsig.vectorediting.lib.api.EditingServiceParameter.TYPE;
64
import org.gvsig.vectorediting.lib.api.exceptions.DrawServiceException;
65
import org.gvsig.vectorediting.lib.api.exceptions.FinishServiceException;
66
import org.gvsig.vectorediting.lib.api.exceptions.InvalidEntryException;
67
import org.gvsig.vectorediting.lib.api.exceptions.StartServiceException;
68
import org.gvsig.vectorediting.lib.spi.AbstractEditingProvider;
69
import org.gvsig.vectorediting.lib.spi.DefaultDrawingStatus;
70
import org.gvsig.vectorediting.lib.spi.DefaultEditingServiceParameter;
71
import org.gvsig.vectorediting.lib.spi.DefaultEditingServiceParameterOptions;
72
import org.gvsig.vectorediting.lib.spi.EditingProvider;
73
import org.gvsig.vectorediting.lib.spi.EditingProviderFactory;
74
import org.gvsig.vectorediting.lib.spi.EditingProviderLocator;
75
import org.gvsig.vectorediting.lib.spi.EditingProviderManager;
76
import org.gvsig.vectorediting.lib.spi.EditingProviderServices;
77

  
78
public class SymmetryEditingProvider extends AbstractEditingProvider implements
79
    EditingProvider {
80

  
81
    private final EditingServiceParameter selectionParameter;
82

  
83
    private final EditingServiceParameter firstPointParameter;
84

  
85
    private final EditingServiceParameter secondPointParameter;
86

  
87
    private final EditingServiceParameter deleteOriginalGeometriesParameter;
88

  
89
    private Map<EditingServiceParameter, Object> values;
90

  
91
    private final FeatureStore featureStore;
92
    
93
    private List<Feature> selectedFeatures;
94

  
95
    public SymmetryEditingProvider(ProviderServices providerServices,
96
        DynObject parameters) {
97
        super(providerServices);
98
        
99
        I18nManager i18nManager = ToolsLocator.getI18nManager();
100

  
101
        this.featureStore =
102
            (FeatureStore) parameters
103
                .getDynValue(EditingProviderFactory.FEATURE_STORE_FIELD);
104

  
105
        this.selectionParameter =
106
            new DefaultEditingServiceParameter("selection",
107
                i18nManager.getTranslation("selection"), TYPE.SELECTION);
108

  
109
        this.firstPointParameter =
110
            new DefaultEditingServiceParameter("first_point_of_symmetry_axis",
111
                i18nManager.getTranslation("first_point_of_symmetry_axis"),
112
                TYPE.POSITION);
113

  
114
        this.secondPointParameter =
115
            new DefaultEditingServiceParameter("second_point_of_symmetry_axis",
116
                i18nManager.getTranslation("second_point_of_symmetry_axis"),
117
                TYPE.POSITION);
118

  
119
        EditingProviderServices editingProviderServices =
120
            (EditingProviderServices) getProviderServices();
121

  
122
        DefaultEditingServiceParameterOptions deleteOriginalGeometriesOptions2 = new DefaultEditingServiceParameterOptions()
123
                .add("delete_original_geometries", true, i18nManager.getTranslation("_yes"))
124
                .add("keep_original_geometries", false, i18nManager.getTranslation("_no"));
125

  
126
        String consoleMsg
127
                = editingProviderServices.makeConsoleMessage(
128
                        "delete_original_geometries_question", deleteOriginalGeometriesOptions2);
129

  
130
        this.deleteOriginalGeometriesParameter
131
                = new DefaultEditingServiceParameter(
132
                        i18nManager.getTranslation("delete_original_geometries"),
133
                        consoleMsg,
134
                        deleteOriginalGeometriesOptions2,
135
                        false,
136
                        TYPE.OPTION).setDataType(DataTypes.BOOLEAN);;
137
    }
138

  
139
    @Override
140
    public DrawingStatus getDrawingStatus(Point mousePosition)
141
        throws DrawServiceException {
142
        DefaultDrawingStatus drawingStatus = new DefaultDrawingStatus();
143
        EditingProviderManager editingProviderManager =
144
            EditingProviderLocator.getProviderManager();
145
        ISymbol auxiliaryLineSymbolEditing = editingProviderManager.getSymbol("auxiliary-line-symbol-editing");
146
        ISymbol auxiliaryPointSymbolEditing = editingProviderManager.getSymbol("auxiliary-point-symbol-editing");
147
        ISymbol lineSymbolEditing = editingProviderManager.getSymbol("line-symbol-editing");
148
        ISymbol polygonSymbolEditing = editingProviderManager.getSymbol("polygon-symbol-editing");
149

  
150

  
151
        FeatureSelection selected =
152
            (FeatureSelection) values.get(selectionParameter);
153
        try {
154
            if ( CollectionUtils.isNotEmpty(selectedFeatures)) {
155
                Point p1 = (Point) values.get(firstPointParameter);
156
                if (p1 != null) {
157
                    Object p2Value = values.get(secondPointParameter);
158
                    Point p2;
159
                    if ((p2Value != null) && (p2Value instanceof Point)) {
160
                        p2 = (Point) p2Value;
161
                    } else {
162
                        p2 = mousePosition;
163
                    }
164
                    if (!Objects.equals(p1, p2)) {
165
                        Line line;
166
                        line = GeometryLocator.getGeometryManager().createLine(
167
                                        featureStore.getDefaultFeatureType()
168
                                                .getDefaultGeometryAttribute().getGeomType()
169
                                                .getSubType());
170
                        line.addVertex(p1);
171
                        line.addVertex(p2);
172

  
173
                        drawingStatus.addStatus(line, auxiliaryLineSymbolEditing, "");
174

  
175
                        DisposableIterator it;
176
                        it = selected.fastIterator();
177

  
178
                        AffineTransform at;
179
                        try {
180
                            at = getSymmetryAffineTransform(p1, p2);
181
                        } catch (Exception e) {
182
                            throw new DrawServiceException(e);
183
                        }
184

  
185
                        for (Feature feat : selectedFeatures) {
186

  
187
                            ISymbol previewSymbol = this.getPreviewSymbol(feat);
188

  
189
                            Geometry transformedGeometry = feat.getDefaultGeometry().cloneGeometry();
190
                            transformedGeometry.transform(at);
191

  
192
                            ISymbol symbol = null;
193
                            if (transformedGeometry instanceof Curve || transformedGeometry instanceof MultiCurve) {
194
                                symbol = lineSymbolEditing;
195
                            } else if (transformedGeometry instanceof Surface || transformedGeometry instanceof MultiSurface) {
196
                                symbol = polygonSymbolEditing;
197
                            } else if (transformedGeometry instanceof Point || transformedGeometry instanceof MultiPoint) {
198
                                symbol = auxiliaryPointSymbolEditing;
199
                            }
200
                            if (transformedGeometry instanceof Aggregate) {
201
                                int primitivesNumber = ((Aggregate) transformedGeometry).getPrimitivesNumber();
202
                                for (int i = 0; i < primitivesNumber; i++) {
203
                                    final Primitive primitive = ((Aggregate) transformedGeometry).getPrimitiveAt(i);
204
                                    drawingStatus.addStatus(primitive, symbol, "");
205
                                    drawingStatus.addStatus(primitive, previewSymbol, "");
206
                                }
207
                            } else {
208
                                drawingStatus.addStatus(transformedGeometry, symbol, "");
209
                                drawingStatus.addStatus(transformedGeometry, previewSymbol, "");
210
                            }
211
                        }
212
//                    it.dispose();
213
                    }
214
                }
215
                return drawingStatus;
216
            }
217
        } catch (Exception e) {
218
            throw new DrawServiceException(e);
219
        }
220
        return null;
221
    }
222

  
223
    private AffineTransform getSymmetryAffineTransform(Point axisP1,
224
        Point axisP2) throws GeometryOperationNotSupportedException,
225
        GeometryOperationException {
226

  
227
        AffineTransform translate =
228
            AffineTransform
229
                .getTranslateInstance(-axisP1.getX(), -axisP1.getY());
230

  
231
        EditingProviderServices editingProviderServices =
232
            (EditingProviderServices) getProviderServices();
233
        Double angle = -editingProviderServices.getAngle(axisP1, axisP2);
234
        AffineTransform rotate = AffineTransform.getRotateInstance(angle);
235

  
236
        AffineTransform symmetry = new AffineTransform(1, 0, 0, -1, 0, 0);
237
        AffineTransform inverseRotate =
238
            AffineTransform.getRotateInstance(-angle);
239
        AffineTransform inverseTranslate =
240
            AffineTransform.getTranslateInstance(axisP1.getX(), axisP1.getY());
241
        AffineTransform at = new AffineTransform(translate);
242

  
243
        at.preConcatenate(rotate);
244
        at.preConcatenate(symmetry);
245
        at.preConcatenate(inverseRotate);
246
        at.preConcatenate(inverseTranslate);
247
        return at;
248
    }
249

  
250
    @Override
251
    public EditingServiceParameter next() {
252
        if (values.get(selectionParameter) == null) {
253
            return this.selectionParameter;
254
        } else if (values.get(firstPointParameter) == null) {
255
            return this.firstPointParameter;
256
        } else if (values.get(secondPointParameter) == null) {
257
            return this.secondPointParameter;
258
        } else if (values.get(deleteOriginalGeometriesParameter) == null) {
259
            return this.deleteOriginalGeometriesParameter;
260
        }
261
        return null;
262
    }
263

  
264
    @Override
265
    public void stop() {
266
        values.clear();
267
        this.selectedFeatures = Collections.EMPTY_LIST;
268
    }
269

  
270
    private void validateAndInsertValue(EditingServiceParameter param,
271
        Object value) throws InvalidEntryException {
272
        
273
        I18nManager i18nManager = ToolsLocator.getI18nManager();
274

  
275
        
276
        if (param == selectionParameter) {
277
            if (value instanceof FeatureSelection) {
278
                FeatureSelection featureSelection = (FeatureSelection) value;
279
                if (featureSelection.getSelectedCount() > 0) {
280
                    values.put(param, featureSelection);
281
                    this.selectedFeatures = this.getSelectedFeaturesCopy(featureSelection);
282
                }
283
            }
284
        } else if (param == firstPointParameter) {
285
            if (value instanceof Point) {
286
                values.put(param, value);
287
            }
288
        } else if (param == secondPointParameter) {
289
            if (value instanceof Point) {
290
                values.put(param, value);
291
            }
292
        } else if (param == deleteOriginalGeometriesParameter) {
293
            values.put(param, param.getOptions2().getValue(value, param.getDefaultValue()));
294
        }
295

  
296
    }
297

  
298
    @Override
299
    public List<EditingServiceParameter> getParameters() {
300
        List<EditingServiceParameter> list =
301
            new ArrayList<>();
302
        list.add(selectionParameter);
303
        list.add(firstPointParameter);
304
        list.add(secondPointParameter);
305
        list.add(deleteOriginalGeometriesParameter);
306
        return list;
307
    }
308

  
309
    @Override
310
    public void setValue(EditingServiceParameter parameter, Object value) throws InvalidEntryException {
311
        validateAndInsertValue(parameter, value);
312
    }
313

  
314
    @Override
315
    public void setValue(Object value) throws InvalidEntryException {
316
        EditingServiceParameter param = next();
317
        validateAndInsertValue(param, value);
318
    }
319

  
320
    @Override
321
    public void finishAndStore() throws FinishServiceException {
322

  
323
//        FeatureSelection selected =
324
//            (FeatureSelection) values.get(selectionParameter);
325
        final Boolean deleteOriginalGeometriesValue = (Boolean) values.get(deleteOriginalGeometriesParameter);
326
        
327
        try {
328
            if (CollectionUtils.isNotEmpty(selectedFeatures)) {
329
                Point p1 = (Point) values.get(firstPointParameter);
330
                Point p2 = (Point) values.get(secondPointParameter);
331
                if ((p1 != null) && (p2 != null)) {
332

  
333
                    AffineTransform at;
334
                    try {
335
                        at = getSymmetryAffineTransform(p1, p2);
336
                    } catch (GeometryOperationNotSupportedException | GeometryOperationException e) {
337
                        throw new FinishServiceException(e);
338
                    }
339

  
340
                    for (Feature feature : selectedFeatures) {
341
                        Geometry geom =
342
                            feature.getDefaultGeometry().cloneGeometry();
343
                        geom.transform(at);
344
                        if (deleteOriginalGeometriesValue) {
345
                            // Se sustituye la geometr?a original por la
346
                            // calculada
347
                            EditableFeature editableFeature =
348
                                feature.getEditable();
349
                            editableFeature.setDefaultGeometry(geom);
350
                            ((EditingProviderServices) getProviderServices())
351
                                .updateFeatureInFeatureStore(editableFeature,
352
                                    featureStore);
353
                        } else {
354
                            // Se crea una feature nueva copiando los valores de
355
                            // la feature original excepto aquellos que sean PK
356
                            EditingProviderServices editingProviderServices =
357
                                (EditingProviderServices) getProviderServices();
358
                            EditableFeature editableFeature =
359
                                editingProviderServices
360
                                    .getFeatureCopyWithoutUniqueIndex(featureStore,
361
                                        feature);
362
                            editableFeature.setDefaultGeometry(geom);
363
                            editingProviderServices
364
                                .insertFeatureIntoFeatureStore(editableFeature,
365
                                    featureStore);
366
                        }
367
                    }
368
                    featureStore.getFeatureSelection().deselectAll();
369
                }
370
            }
371
        } catch (DataException e) {
372
            throw new FinishServiceException(e);
373
        }
374
    }
375

  
376
    @Override
377
    public Geometry finish() throws FinishServiceException {
378
        return null;
379
    }
380

  
381
    @Override
382
    public void start() throws StartServiceException {
383
        this.values = new HashMap<>();
384
        this.selectedFeatures = Collections.EMPTY_LIST;
385
        FeatureSelection selected = null;
386
        if (featureStore != null) {
387
            try {
388
                selected =
389
                    (FeatureSelection) featureStore.getFeatureSelection()
390
                        .clone();
391
            } catch (DataException e) {
392
                throw new StartServiceException(e);
393
            } catch (CloneNotSupportedException e) {
394
                // Do nothing
395
            }
396
            if ((selected != null) && (selected.getSelectedCount() > 0)) {
397
                values.put(selectionParameter, selected);
398
                this.selectedFeatures = this.getSelectedFeaturesCopy(selected);                
399
            }
400
        }
401
    }
402

  
403
    @Override
404
    public String getName() {
405
        return SymmetryEditingProviderFactory.PROVIDER_NAME;
406
    }
407

  
408
}
org.gvsig.vectorediting.symmetry/tags/org.gvsig.vectorediting.symmetry-1.0.246/org.gvsig.vectorediting.symmetry.lib/org.gvsig.vectorediting.symmetry.lib.prov/org.gvsig.vectorediting.symmetry.lib.prov.symmetry/src/main/java/org/gvsig/vectorediting/symmetry/lib/prov/symmetry/SymmetryEditingProviderFactory.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright ๏ฟฝ 2007-2014 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 2
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

  
25
package org.gvsig.vectorediting.symmetry.lib.prov.symmetry;
26

  
27
import org.gvsig.fmap.geom.Geometry;
28
import org.gvsig.tools.dynobject.DynObject;
29
import org.gvsig.tools.service.spi.Provider;
30
import org.gvsig.tools.service.spi.ProviderServices;
31
import org.gvsig.vectorediting.lib.api.EditingServiceInfo;
32
import org.gvsig.vectorediting.lib.spi.AbstractEditingProviderFactory;
33
import org.gvsig.vectorediting.lib.spi.DefaultEditingServiceinfo;
34

  
35
public class SymmetryEditingProviderFactory extends AbstractEditingProviderFactory {
36

  
37
    public static final String PROVIDER_NAME = "modify-symmetry";
38

  
39
    private final static String PROVIDER_DESCRIPTION =
40
        "Creates symmetric geometries from selection";
41

  
42
    public SymmetryEditingProviderFactory() {
43
        super(PROVIDER_NAME, PROVIDER_DESCRIPTION);
44
    }
45

  
46

  
47
    public EditingServiceInfo getServiceInfo() {
48
        EditingServiceInfo serviceInfo =
49
            new DefaultEditingServiceinfo(PROVIDER_NAME, "", false, null,
50
                new int[] { 
51
                    Geometry.TYPES.POINT, Geometry.TYPES.MULTIPOINT,
52
                    Geometry.TYPES.POLYGON, Geometry.TYPES.MULTIPOLYGON,
53
                    Geometry.TYPES.LINE, Geometry.TYPES.MULTILINE,
54
                    Geometry.TYPES.SURFACE, Geometry.TYPES.MULTISURFACE,
55
                    Geometry.TYPES.CURVE, Geometry.TYPES.MULTICURVE 
56
                });
57

  
58
        return serviceInfo;
59
    }
60

  
61
    @Override
62
    protected Provider doCreate(DynObject parameters, ProviderServices services) {
63
        return new SymmetryEditingProvider(services, parameters);
64
    }
65

  
66
}
org.gvsig.vectorediting.symmetry/tags/org.gvsig.vectorediting.symmetry-1.0.246/org.gvsig.vectorediting.symmetry.lib/org.gvsig.vectorediting.symmetry.lib.prov/org.gvsig.vectorediting.symmetry.lib.prov.symmetry/src/main/java/org/gvsig/vectorediting/symmetry/lib/prov/symmetry/SymmetryEditingLibrary.java
1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright ? 2007-2014 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 2
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

  
25
package org.gvsig.vectorediting.symmetry.lib.prov.symmetry;
26

  
27
import org.gvsig.tools.ToolsLocator;
28
import org.gvsig.tools.i18n.I18nManager;
29
import org.gvsig.tools.library.AbstractLibrary;
30
import org.gvsig.tools.library.LibraryException;
31
import org.gvsig.vectorediting.lib.api.EditingLibrary;
32
import org.gvsig.vectorediting.lib.spi.EditingProviderLocator;
33
import org.gvsig.vectorediting.lib.spi.EditingProviderManager;
34

  
35
/**
36
 * Library for default implementation initialization and configuration.
37
 *
38
 * @author gvSIG team
39
 * @version $Id$
40
 */
41
public class SymmetryEditingLibrary extends AbstractLibrary {
42

  
43
    @Override
44
    public void doRegistration() {
45
        registerAsServiceOf(EditingLibrary.class);
46
    }
47

  
48
    @Override
49
    protected void doInitialize() throws LibraryException {
50
    }
51

  
52
    @Override
53
    protected void doPostInitialize() throws LibraryException {
54
        EditingProviderManager manager =
55
            EditingProviderLocator.getProviderManager();
56

  
57
        manager.addProviderFactory(new SymmetryEditingProviderFactory());
58

  
59
        manager.registerIcon("vectorediting-tools", "modify-symmetry", this
60
            .getClass().getClassLoader(), this.getClass().getName());
61

  
62
        registerTranslations();
63
    }
64

  
65
    private void registerTranslations() {
66
        I18nManager manager = ToolsLocator.getI18nManager();
67
        manager.addResourceFamily("i18n.text",
68
            this.getClass().getClassLoader(), "symmetry-editing");
69
    }
70

  
71
}
org.gvsig.vectorediting.symmetry/tags/org.gvsig.vectorediting.symmetry-1.0.246/org.gvsig.vectorediting.symmetry.lib/org.gvsig.vectorediting.symmetry.lib.prov/org.gvsig.vectorediting.symmetry.lib.prov.symmetry/src/main/resources/i18n/text.properties
1
modify_symmetry = Geometr\u00eda sim\u00e9trica
2
selection=Selecci\u00f3n
3
first_point_of_symmetry_axis=Primer punto del eje de simetr\u00eda
4
second_point_of_symmetry_axis=Segundo punto del eje de simetr\u00eda
5
delete_original_geometries_question=\u00bfDesea borrar las geometr\u00edas originales?
6
short_yes=S
7
short_no=N
8
delete_original_geometries = Eliminar geometr\u00edas originales
9
keep_original_geometries = Mantener geometr\u00edas originales
org.gvsig.vectorediting.symmetry/tags/org.gvsig.vectorediting.symmetry-1.0.246/org.gvsig.vectorediting.symmetry.lib/org.gvsig.vectorediting.symmetry.lib.prov/org.gvsig.vectorediting.symmetry.lib.prov.symmetry/src/main/resources/i18n/text_en.properties
1
modify_symmetry = Symmetrical geometry
2
selection = Selection
3
first_point_of_symmetry_axis=First point of the symmetry axis
4
second_point_of_symmetry_axis=Second point of the symmetry axis
5
delete_original_geometries_question=Delete original geometries?
6
short_yes=Y
7
short_no=N
8
delete_original_geometries = Delete original geometries
9
keep_original_geometries = Keep original geometries
org.gvsig.vectorediting.symmetry/tags/org.gvsig.vectorediting.symmetry-1.0.246/org.gvsig.vectorediting.symmetry.lib/org.gvsig.vectorediting.symmetry.lib.prov/org.gvsig.vectorediting.symmetry.lib.prov.symmetry/src/main/resources/META-INF/services/org.gvsig.tools.library.Library
1
org.gvsig.vectorediting.symmetry.lib.prov.symmetry.SymmetryEditingLibrary
org.gvsig.vectorediting.symmetry/tags/org.gvsig.vectorediting.symmetry-1.0.246/org.gvsig.vectorediting.symmetry.lib/org.gvsig.vectorediting.symmetry.lib.prov/org.gvsig.vectorediting.symmetry.lib.prov.symmetry/pom.xml
1
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
2
	<modelVersion>4.0.0</modelVersion>
3
	<parent>
4
		<groupId>org.gvsig</groupId>
5
		<artifactId>org.gvsig.vectorediting.symmetry.lib.prov</artifactId>
6
		<version>1.0.246</version>
7
	</parent>
8
	<artifactId>org.gvsig.vectorediting.symmetry.lib.prov.symmetry</artifactId>
9
	<name>org.gvsig.vectorediting.symmetry.lib.prov.symmetry</name>
10

  
11
	<dependencies>
12
		<dependency>
13
			<groupId>org.gvsig</groupId>
14
			<artifactId>org.gvsig.vectorediting.lib.api</artifactId>
15
		</dependency>
16
		<dependency>
17
			<groupId>org.gvsig</groupId>
18
			<artifactId>org.gvsig.vectorediting.lib.impl</artifactId>
19
		</dependency>
20
		<dependency>
21
			<groupId>org.gvsig</groupId>
22
			<artifactId>org.gvsig.vectorediting.lib.spi</artifactId>
23
		</dependency>
24
	 <dependency>
25
	  <groupId>org.gvsig</groupId>
26
	  <artifactId>org.gvsig.tools.lib</artifactId>
27
          <scope>compile</scope>
28
	 </dependency>
29
	</dependencies>
30
</project>
0 31

  
org.gvsig.vectorediting.symmetry/tags/org.gvsig.vectorediting.symmetry-1.0.246/pom.xml
1
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
2
  <modelVersion>4.0.0</modelVersion>
3
  <parent>
4
    <groupId>org.gvsig</groupId>
5
    <artifactId>org.gvsig.desktop</artifactId>
6
    <version>2.0.445</version>
7
  </parent>
8
  <groupId>org.gvsig</groupId>
9
  <artifactId>org.gvsig.vectorediting.symmetry</artifactId>
10
  <version>1.0.246</version>
11
  <packaging>pom</packaging>
12
  <name>org.gvsig.vectorediting.symmetry</name>
13
  <description>Project that provides the symmetry vector editing tool</description>
14

  
15
  <repositories>
16
    <repository>
17
      <id>gvsig-public-http-repository</id>
18
      <name>gvSIG maven public HTTP repository</name>
19
      <url>http://devel.gvsig.org/m2repo/j2se</url>
20
      <releases>
21
        <enabled>true</enabled>
22
        <updatePolicy>daily</updatePolicy>
23
        <checksumPolicy>warn</checksumPolicy>
24
      </releases>
25
      <snapshots>
26
        <enabled>true</enabled>
27
        <updatePolicy>daily</updatePolicy>
28
        <checksumPolicy>warn</checksumPolicy>
29
      </snapshots>
30
    </repository>
31
  </repositories>
32

  
33
  <url>dav:https://devel.gvsig.org/sites/${project.artifactId}/${project.version}</url>
34
  <scm>
35
    <connection>scm:svn:https://devel.gvsig.org/svn/gvsig-vectorediting/org.gvsig.vectorediting.symmetry/tags/org.gvsig.vectorediting.symmetry-1.0.246</connection>
36
    <developerConnection>scm:svn:https://devel.gvsig.org/svn/gvsig-vectorediting/org.gvsig.vectorediting.symmetry/tags/org.gvsig.vectorediting.symmetry-1.0.246</developerConnection>
37
    <url>https://devel.gvsig.org/redmine/projects/gvsig-vector-editing/repository/show/org.gvsig.vectorediting.symmetry/tags/org.gvsig.vectorediting.symmetry-1.0.246</url>
38
  </scm>
39

  
40
  <distributionManagement>
41
    <site>
42
      <id>gvsig-repository</id>
43
      <url>dav:https://devel.gvsig.org/download/projects/gvsig-vectorediting/pool/${project.artifactId}/${project.version}</url>
44
    </site>
45
  </distributionManagement>
46

  
47
  <build>
48
    <plugins>
49
      <plugin>
50
        <groupId>org.apache.maven.plugins</groupId>
51
        <artifactId>maven-release-plugin</artifactId>
52
        <configuration>
53
          <tagBase>https://devel.gvsig.org/svn/gvsig-vectorediting/${project.artifactId}/tags</tagBase>
54
        </configuration>
55
      </plugin>
56
    </plugins>
57
  </build>
58

  
59
  <dependencyManagement>
60
    <dependencies>
61
      <dependency>
62
        <groupId>org.gvsig</groupId>
63
        <artifactId> org.gvsig.vectorediting </artifactId>
64
        <version>${org.gvsig.vectorediting.version}</version>
65
        <scope>import</scope>
66
        <type>pom</type>
67
      </dependency>
68
      <dependency>
69
        <groupId>org.gvsig</groupId>
70
        <artifactId>org.gvsig.vectorediting.symmetry.lib.prov.symmetry</artifactId>
71
        <version>1.0.246</version>
72
      </dependency>
73
    </dependencies>
74
  </dependencyManagement>
75

  
76
  <modules>
77
    <module>org.gvsig.vectorediting.symmetry.lib</module>
78
    <module>org.gvsig.vectorediting.symmetry.app</module>
79
  </modules>
80

  
81
  <properties>
82
     <org.gvsig.vectorediting.version>1.0.262</org.gvsig.vectorediting.version>
83
  </properties>
84
</project>
85

  
org.gvsig.vectorediting.symmetry/tags/org.gvsig.vectorediting.symmetry-1.0.246/org.gvsig.vectorediting.symmetry.app/org.gvsig.vectorediting.symmetry.app.mainplugin/buildNumber.properties
1
#Fri Apr 12 11:37:46 CEST 2024
2
buildNumber=251
org.gvsig.vectorediting.symmetry/tags/org.gvsig.vectorediting.symmetry-1.0.246/org.gvsig.vectorediting.symmetry.app/org.gvsig.vectorediting.symmetry.app.mainplugin/src/main/resources-plugin/i18n/text.properties
1
modify_symmetry=Simetr\u00eda
2

  
org.gvsig.vectorediting.symmetry/tags/org.gvsig.vectorediting.symmetry-1.0.246/org.gvsig.vectorediting.symmetry.app/org.gvsig.vectorediting.symmetry.app.mainplugin/src/main/resources-plugin/i18n/text_en.properties
1
modify_symmetry=Symmetry
org.gvsig.vectorediting.symmetry/tags/org.gvsig.vectorediting.symmetry-1.0.246/org.gvsig.vectorediting.symmetry.app/org.gvsig.vectorediting.symmetry.app.mainplugin/src/main/resources-plugin/config.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<!-- gvSIG. Desktop Geographic Information System. Copyright (C) 2007-2013
3
	gvSIG Association. This program is free software; you can redistribute it
4
	and/or modify it under the terms of the GNU General Public License as published
5
	by the Free Software Foundation; either version 3 of the License, or (at
6
	your option) any later version. This program is distributed in the hope that
7
	it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty
8
	of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
9
	Public License for more details. You should have received a copy of the GNU
10
	General Public License along with this program; if not, write to the Free
11
	Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301,
12
	USA. For any additional information, do not hesitate to contact us at info
13
	AT gvsig.com, or visit our website www.gvsig.com. -->
14
<plugin-config>
15
	<depends plugin-name="org.gvsig.vectorediting.app.mainplugin" />
16
	<resourceBundle name="text" />
17
	<libraries library-dir="lib" />
18
	<extensions>
19
		<extension class-name="org.gvsig.vectorediting.app.mainplugin.ServiceExtension"
20
			description="" active="true" priority="1">
21

  
22
			<action name="modify-symmetry" label="modify_symmetry"
23
                tooltip="modify_symmetry" position="601002400" action-command="modify-symmetry"
24
                icon="modify-symmetry" accelerator="" />
25

  
26
			<menu text="Layer/Modify/modify_symmetry" name="modify-symmetry" />
27

  
28
			<tool-bar name="vector_editing" position="4000">
29
				<selectable-tool name="modify-symmetry" />
30
			</tool-bar>
31

  
32
		</extension>
33
	</extensions>
34
</plugin-config>
org.gvsig.vectorediting.symmetry/tags/org.gvsig.vectorediting.symmetry-1.0.246/org.gvsig.vectorediting.symmetry.app/org.gvsig.vectorediting.symmetry.app.mainplugin/src/main/assembly/gvsig-plugin-package.xml
1
<!--
2

  
3
    gvSIG. Desktop Geographic Information System.
4

  
5
    Copyright (C) 2007-2013 gvSIG Association.
6

  
7
    This program is free software; you can redistribute it and/or
8
    modify it under the terms of the GNU General Public License
9
    as published by the Free Software Foundation; either version 3
10
    of the License, or (at your option) any later version.
11

  
12
    This program is distributed in the hope that it will be useful,
13
    but WITHOUT ANY WARRANTY; without even the implied warranty of
14
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15
    GNU General Public License for more details.
16

  
17
    You should have received a copy of the GNU General Public License
18
    along with this program; if not, write to the Free Software
19
    Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
20
    MA  02110-1301, USA.
21

  
22
    For any additional information, do not hesitate to contact us
23
    at info AT gvsig.com, or visit our website www.gvsig.com.
24

  
25
-->
26
<assembly>
27
  <id>gvsig-plugin-package</id>
28
  <formats>
29
    <format>zip</format>
30
  </formats>
31
  <baseDirectory>${project.artifactId}</baseDirectory>
32
  <includeBaseDirectory>true</includeBaseDirectory>
33
  <files>
34
    <file>
35
      <source>target/${project.artifactId}-${project.version}.jar</source>
36
      <outputDirectory>lib</outputDirectory>
37
    </file>
38
    <file>
39
      <source>target/package.info</source>
40
    </file>
41
  </files>
42

  
43
  <fileSets>
44
    <fileSet>
45
      <directory>src/main/resources-plugin</directory>
46
      <outputDirectory>.</outputDirectory>
47
    </fileSet>
48
  </fileSets>
49

  
50

  
51
  <dependencySets>
52
    <dependencySet>
53
      <useProjectArtifact>false</useProjectArtifact>
54
      <useTransitiveDependencies>false</useTransitiveDependencies>
55
      <outputDirectory>lib</outputDirectory>
56
      <includes>
57
		<include>org.gvsig:org.gvsig.vectorediting.symmetry.lib.prov.symmetry</include>
58
      </includes>
59
    </dependencySet>
60
  </dependencySets>
61

  
62
</assembly>
63

  
org.gvsig.vectorediting.symmetry/tags/org.gvsig.vectorediting.symmetry-1.0.246/org.gvsig.vectorediting.symmetry.app/org.gvsig.vectorediting.symmetry.app.mainplugin/pom.xml
1
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
2
	<modelVersion>4.0.0</modelVersion>
3
	<parent>
4
		<groupId>org.gvsig</groupId>
5
		<artifactId>org.gvsig.vectorediting.symmetry.app</artifactId>
6
		<version>1.0.246</version>
7
	</parent>
8

  
9
	<artifactId>org.gvsig.vectorediting.symmetry.app.mainplugin</artifactId>
10
	<name>org.gvsig.vectorediting.symmetry.app.mainplugin</name>
11

  
12
	<properties>
13
        <!-- Package info property values -->
14
        <gvsig.package.info.state>testing</gvsig.package.info.state>
15
        <gvsig.package.info.dependencies>required: org.gvsig.app.mainplugin -ge 2.1.0-A, required: org.gvsig.vectorediting.app.mainplugin -ge 1.0.0, conflict: org.gvsig.editing.app.mainplugin -ge 1</gvsig.package.info.dependencies>
16
        <gvsig.package.info.official>true</gvsig.package.info.official>
17
        <gvsig.package.info.name>Tools: Vector editing symmetry provider</gvsig.package.info.name>
18
        <gvsig.package.info.description>Symmetry provider: provides symmetrical geometries.</gvsig.package.info.description>
19
        <gvsig.package.info.categories>Vector</gvsig.package.info.categories>
20
        <gvsig.package.info.javaVM>j1_6</gvsig.package.info.javaVM>
21
        <gvsig.package.info.poolURL>https://devel.gvsig.org/download/projects/gvsig-vectorediting/pool</gvsig.package.info.poolURL>
22
    </properties>
23

  
24
	<dependencies>
25
		<dependency>
26
			<groupId>org.gvsig</groupId>
27
			<artifactId>org.gvsig.vectorediting.app.mainplugin</artifactId>
28
			<scope>compile</scope>
29
		</dependency>
30
		<dependency>
31
			<groupId>org.gvsig</groupId>
32
			<artifactId>org.gvsig.vectorediting.lib.api</artifactId>
33
		</dependency>
34
		<dependency>
35
			<groupId>org.gvsig</groupId>
36
			<artifactId>org.gvsig.vectorediting.lib.impl</artifactId>
37
		</dependency>
38
		<dependency>
39
			<groupId>org.gvsig</groupId>
40
			<artifactId>org.gvsig.vectorediting.lib.spi</artifactId>
41
		</dependency>
42
		<dependency>
43
			<groupId>org.gvsig</groupId>
44
			<artifactId>org.gvsig.vectorediting.symmetry.lib.prov.symmetry</artifactId>
45
		</dependency>
46
	</dependencies>
47
</project>
0 48

  
org.gvsig.vectorediting.symmetry/tags/org.gvsig.vectorediting.symmetry-1.0.246/org.gvsig.vectorediting.symmetry.app/pom.xml
1
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
2
  <modelVersion>4.0.0</modelVersion>
3
  <parent>
4
    <groupId>org.gvsig</groupId>
5
    <artifactId>org.gvsig.vectorediting.symmetry</artifactId>
6
    <version>1.0.246</version>
7
  </parent>
8
  <artifactId>org.gvsig.vectorediting.symmetry.app</artifactId>
9
  <packaging>pom</packaging>
10
  <name>org.gvsig.vectorediting.symmetry.app</name>
11
  <modules>
12
  	<module>org.gvsig.vectorediting.symmetry.app.mainplugin</module>
13
  </modules>
14
</project>

Also available in: Unified diff