Revision 2616 org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.scale/src/main/java/org/gvsig/vectorediting/lib/prov/scale/ScaleEditingProvider.java

View differences:

ScaleEditingProvider.java
25 25

  
26 26

  
27 27

  
28
import java.awt.Font;
29 28
import java.awt.geom.AffineTransform;
30 29
import java.util.ArrayList;
31 30
import java.util.HashMap;
32 31
import java.util.List;
33 32
import java.util.Map;
34

  
35 33
import org.gvsig.fmap.dal.exception.DataException;
36 34
import org.gvsig.fmap.dal.feature.EditableFeature;
37 35
import org.gvsig.fmap.dal.feature.Feature;
......
62 60
import org.gvsig.tools.exception.BaseException;
63 61
import org.gvsig.tools.i18n.I18nManager;
64 62
import org.gvsig.tools.service.spi.ProviderServices;
65
import org.gvsig.tools.visitor.VisitCanceledException;
66
import org.gvsig.tools.visitor.Visitor;
67 63
import org.gvsig.vectorediting.lib.api.DrawingStatus;
68 64
import org.gvsig.vectorediting.lib.api.EditingServiceParameter;
69 65
import org.gvsig.vectorediting.lib.api.EditingServiceParameter.TYPE;
......
83 79
public class ScaleEditingProvider extends AbstractEditingProvider implements
84 80
    EditingProvider {
85 81

  
86
    private I18nManager i18nManager = ToolsLocator.getI18nManager();
82
    private final EditingServiceParameter selectionParameter;
87 83

  
88
    private EditingServiceParameter selectionParameter;
84
    private final EditingServiceParameter originPointParameter;
89 85

  
90
    private EditingServiceParameter originPointParameter;
86
    private final EditingServiceParameter scaleFactorOrReferencePointParameter;
91 87

  
92
    private EditingServiceParameter scaleFactorOrReferencePointParameter;
88
    private final EditingServiceParameter secondScalePointParameter;
93 89

  
94
    private EditingServiceParameter secondScalePointParameter;
95

  
96 90
    private Map<EditingServiceParameter, Object> values;
97 91

  
98
    private FeatureStore featureStore;
92
    private final FeatureStore featureStore;
99 93

  
100
    private MapContext mapContext;
94
    private final MapContext mapContext;
101 95

  
102 96
    public ScaleEditingProvider(ProviderServices providerServices,
103 97
        DynObject parameters) {
......
110 104
            (FeatureStore) parameters
111 105
                .getDynValue(EditingProviderFactory.FEATURE_STORE_FIELD);
112 106

  
107
        I18nManager i18nManager = ToolsLocator.getI18nManager();
108

  
113 109
        this.selectionParameter =
114 110
            new DefaultEditingServiceParameter("selection",
115 111
                i18nManager.getTranslation("selection"), TYPE.SELECTION);
......
127 123
                i18nManager.getTranslation("second_scale_point"), TYPE.POSITION);
128 124
    }
129 125

  
126
    @Override
130 127
    public List<EditingServiceParameter> getParameters() {
131 128
        List<EditingServiceParameter> list =
132
            new ArrayList<EditingServiceParameter>();
129
            new ArrayList<>();
133 130
        list.add(selectionParameter);
134 131
        list.add(originPointParameter);
135 132
        list.add(secondScalePointParameter);
......
141 138
        if (param == selectionParameter) {
142 139
            if (value instanceof FeatureSelection) {
143 140
                values.put(param, value);
144
                return;
145 141
            }
146 142
        } else if (param == originPointParameter) {
147 143
            if (value instanceof Point) {
148 144
                values.put(param, value);
149
                return;
150 145
            }
151 146
        } else if (param == scaleFactorOrReferencePointParameter) {
152 147
            if (value instanceof Point) {
......
154 149
                    throw new InvalidEntryException(null);
155 150
                }
156 151
                values.put(param, value);
157
                return;
158 152
            } else if (value instanceof Double) {
159 153
                if ((Double)value == 0.0){
160 154
                    throw new InvalidEntryException(null);
161 155
                }
162 156
                values.put(param, value);
163
                return;
164 157
            }
165 158
        } else if (param == secondScalePointParameter) {
166 159
            if (value instanceof Point) {
167 160
                values.put(param, value);
168
                return;
169 161
            }
170 162
        }
171 163
    }
172 164

  
165
    @Override
173 166
    public EditingServiceParameter next() {
174 167
        if (values.get(selectionParameter) == null) {
175 168
            return this.selectionParameter;
......
188 181
    }
189 182

  
190 183

  
184
    @Override
191 185
    public DrawingStatus getDrawingStatus(Point mousePosition)
192 186
        throws DrawServiceException {
193 187
        DefaultDrawingStatus drawingStatus = new DefaultDrawingStatus();
......
317 311
        // que por problemas de precisi?n de los n?meros en punto flotante
318 312
        // no se termine de dibujar la regla
319 313
        while (Math.abs(pos)<=Math.abs(length)*1.01) {
320
            Point mark = null;
321
            mark = geometryManager.createPoint(point.getX()+pos,point.getY(), subType);
314
            Point mark = geometryManager.createPoint(point.getX()+pos,point.getY(), subType);
322 315
            if (i%10==0){
323 316
                drawingStatus.addStatus(mark, ruleUnitySymbol, "");
324 317
                ISimpleTextSymbol textSymbol = getTextSymbol();
......
346 339
        final ISymbol polygonSymbolEditing = editingProviderManager.getSymbol("polygon-symbol-editing");
347 340
        final ISymbol auxiliaryPointSymbolEditing = editingProviderManager.getSymbol("auxiliary-point-symbol-editing");
348 341

  
349
        selected.accept(new Visitor() {
350

  
351
            public void visit(Object obj) throws VisitCanceledException,
352
                BaseException {
353
                Feature feature = (Feature) obj;
354

  
355
                Geometry transformedGeometry = feature.getDefaultGeometry().cloneGeometry();
356
                transformedGeometry.transform(at);
357

  
358
                ISymbol symbol=null;
359
                if(transformedGeometry instanceof Curve || transformedGeometry instanceof MultiCurve){
360
                    symbol = lineSymbolEditing;
361
                } else if(transformedGeometry instanceof Surface || transformedGeometry instanceof MultiSurface){
362
                    symbol = polygonSymbolEditing;
363
                } else if(transformedGeometry instanceof Point || transformedGeometry instanceof MultiPoint){
364
                    symbol = auxiliaryPointSymbolEditing;
342
        selected.accept((Object obj) -> {
343
            Feature feature = (Feature) obj;
344
            
345
            ISymbol previewSymbol = getPreviewSymbol(feature);
346
            
347
            Geometry transformedGeometry = feature.getDefaultGeometry().cloneGeometry();
348
            transformedGeometry.transform(at);
349
            
350
            ISymbol symbol=null;
351
            if(transformedGeometry instanceof Curve || transformedGeometry instanceof MultiCurve){
352
                symbol = lineSymbolEditing;
353
            } else if(transformedGeometry instanceof Surface || transformedGeometry instanceof MultiSurface){
354
                symbol = polygonSymbolEditing;
355
            } else if(transformedGeometry instanceof Point || transformedGeometry instanceof MultiPoint){
356
                symbol = auxiliaryPointSymbolEditing;
357
            }
358
            if(transformedGeometry instanceof Aggregate){
359
                int primitivesNumber = ((Aggregate)transformedGeometry).getPrimitivesNumber();
360
                for (int i = 0; i < primitivesNumber; i++) {
361
                    drawingStatus.addStatus(((Aggregate)transformedGeometry).getPrimitiveAt(i), symbol, "");
362
                    drawingStatus.addStatus(((Aggregate)transformedGeometry).getPrimitiveAt(i), previewSymbol, "");
365 363
                }
366
                if(transformedGeometry instanceof Aggregate){
367
                    int primitivesNumber = ((Aggregate)transformedGeometry).getPrimitivesNumber();
368
                    for (int i = 0; i < primitivesNumber; i++) {
369
                        drawingStatus.addStatus(((Aggregate)transformedGeometry).getPrimitiveAt(i), symbol, "");
370
                    }
371
                } else {
372
                    drawingStatus.addStatus(transformedGeometry, symbol, "");
373
                }
374

  
375

  
364
            } else {
365
                drawingStatus.addStatus(transformedGeometry, symbol, "");
366
                drawingStatus.addStatus(transformedGeometry, previewSymbol, "");
376 367
            }
377 368
        });
378 369
    }
......
397 388
    }
398 389

  
399 390

  
391
    @Override
400 392
    public void stop() {
401 393
        values.clear();
402 394
    }
......
408 400
        validateAndInsertValue(parameter, value);
409 401
    }
410 402

  
403
    @Override
411 404
    public void setValue(Object value) throws InvalidEntryException {
412 405
        EditingServiceParameter param = next();
413 406
        validateAndInsertValue(param, value);
414 407
    }
415 408

  
409
    @Override
416 410
    public void finishAndStore() throws FinishServiceException {
417 411

  
418 412
        FeatureSelection selected =
......
446 440
                    final AffineTransform at;
447 441
                    try {
448 442
                        at = getScaleAffineTransform(origin, scale);
449
                    } catch (GeometryOperationNotSupportedException e) {
443
                    } catch (GeometryOperationNotSupportedException | GeometryOperationException e) {
450 444
                        throw new FinishServiceException(e);
451
                    } catch (GeometryOperationException e) {
452
                        throw new FinishServiceException(e);
453 445
                    }
454 446

  
455 447
                    try {
456
                        selected.accept(new Visitor() {
457

  
458
                            public void visit(Object obj)
459
                                throws VisitCanceledException, BaseException {
460
                                Feature feature = (Feature) obj;
461
                                Geometry geom =
448
                        selected.accept((Object obj) -> {
449
                            Feature feature = (Feature) obj;
450
                            Geometry geom =
462 451
                                    feature.getDefaultGeometry()
463
                                        .cloneGeometry();
464
                                geom.transform(at);
465
                                // Se sustituye la geometr?a original por la
466
                                // calculada
467
                                EditableFeature editableFeature =
452
                                            .cloneGeometry();
453
                            geom.transform(at);
454
                            // Se sustituye la geometr?a original por la
455
                            // calculada
456
                            EditableFeature editableFeature =
468 457
                                    feature.getEditable();
469
                                editableFeature.setDefaultGeometry(geom);
470
                                ((EditingProviderServices) getProviderServices())
458
                            editableFeature.setDefaultGeometry(geom);
459
                            ((EditingProviderServices) getProviderServices())
471 460
                                    .updateFeatureInFeatureStore(
472
                                        editableFeature, featureStore);
473
                            }
461
                                            editableFeature, featureStore);
474 462
                        });
475 463
                    } catch (BaseException e) {
476 464
                        throw new FinishServiceException(e);
......
483 471
        }
484 472
    }
485 473

  
474
    @Override
486 475
    public Geometry finish() throws FinishServiceException {
487 476
        return null;
488 477
    }
489 478

  
479
    @Override
490 480
    public void start() throws StartServiceException {
491
        this.values = new HashMap<EditingServiceParameter, Object>();
481
        this.values = new HashMap<>();
492 482
        FeatureSelection selected = null;
493 483
        if (featureStore != null) {
494 484
            try {
......
506 496
        }
507 497
    }
508 498

  
499
    @Override
509 500
    public String getName() {
510 501
        return ScaleEditingProviderFactory.PROVIDER_NAME;
511 502
    }

Also available in: Unified diff