Statistics
| Revision:

gvsig-vectorediting / org.gvsig.vectorediting / trunk / org.gvsig.vectorediting / org.gvsig.vectorediting.lib / org.gvsig.vectorediting.lib.prov / org.gvsig.vectorediting.lib.prov.circle2P / src / main / java / org / gvsig / vectorediting / lib / prov / circle2P / Circle2PEditingProvider.java @ 41

History | View | Annotate | Download (3.14 KB)

1
/*
2
 * Copyright 2014 DiSiD Technologies S.L.L. All rights reserved.
3
 *
4
 * Project  : DiSiD org.gvsig.vectorediting.lib.prov.circle2P
5
 * SVN Id   : $Id$
6
 */
7
package org.gvsig.vectorediting.lib.prov.circle2P;
8

    
9
import java.util.ArrayList;
10
import java.util.HashMap;
11
import java.util.List;
12
import java.util.Map;
13

    
14
import org.gvsig.fmap.geom.Geometry;
15
import org.gvsig.fmap.geom.primitive.Circle;
16
import org.gvsig.fmap.geom.primitive.Point;
17
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
18
import org.gvsig.tools.dynobject.DynObject;
19
import org.gvsig.tools.service.spi.ProviderServices;
20
import org.gvsig.vectorediting.lib.api.EditingServiceParameter;
21
import org.gvsig.vectorediting.lib.spi.AbstractEditingProvider;
22
import org.gvsig.vectorediting.lib.spi.DefaultEditingServiceParameter;
23
import org.gvsig.vectorediting.lib.spi.EditingProvider;
24
import org.gvsig.vectorediting.lib.spi.EditingProviderFactory;
25
import org.gvsig.vectorediting.lib.spi.EditingProviderServices;
26

    
27
public class Circle2PEditingProvider extends AbstractEditingProvider implements
28
    EditingProvider {
29

    
30
  private EditingServiceParameter center = new DefaultEditingServiceParameter(
31
      "Center", "Center position of circle", EditingServiceParameter.TYPE_POINT);
32

    
33
  private EditingServiceParameter radius = new DefaultEditingServiceParameter(
34
      "Radius", "Radius position of circle", EditingServiceParameter.TYPE_POINT);
35

    
36
  private Map<EditingServiceParameter, Object> values;
37

    
38
  private FLyrVect layer;
39

    
40
  public Circle2PEditingProvider(ProviderServices providerServices,
41
      DynObject parameters) {
42
    super(providerServices);
43
    this.layer = (FLyrVect) parameters
44
        .getDynValue(EditingProviderFactory.LAYER_FIELD);
45
  }
46

    
47
  public Geometry draw(Point mousePosition) {
48
    if (values.get(center) != null) {
49
      Point centerPoint = (Point) values.get(center);
50
      return createCircle(centerPoint, mousePosition, layer.getFeatureStore());
51
    }
52

    
53
    return null;
54

    
55
  }
56

    
57
  public EditingServiceParameter next() {
58
    if (values.get(center) == null) {
59
      return this.center;
60
    }
61
    else if (values.get(radius) == null) {
62
      return this.radius;
63
    }
64
    return null;
65
  }
66

    
67
  public void stop(){
68

    
69
  }
70

    
71
  public boolean isValidValue(EditingServiceParameter param, Object value) {
72
    return true;
73
  }
74

    
75
  public List<EditingServiceParameter> getParameters() {
76
    List<EditingServiceParameter> list = new ArrayList<EditingServiceParameter>();
77
    list.add(center);
78
    list.add(radius);
79
    return list;
80
  }
81

    
82
  public void value(Object value) {
83
    EditingServiceParameter param = next();
84
    if (isValidValue(param, value)) {
85
      values.put(param, value);
86
    }
87
  }
88

    
89
  public void finish() {
90
    Point centerPoint = (Point) values.get(center);
91
    Point radiusPoint = (Point) values.get(radius);
92
    Circle geometry = createCircle(centerPoint, radiusPoint,
93
        layer.getFeatureStore());
94
    ((EditingProviderServices) getProviderServices())
95
        .insertGeometryIntoFeatureStore(geometry, layer.getFeatureStore());
96

    
97
  }
98

    
99
  public void start() {
100
    this.values = new HashMap<EditingServiceParameter, Object>();
101
  }
102

    
103
  public String getName() {
104
    return Circle2PEditingProviderFactory.PROVIDER_NAME;
105
  }
106

    
107
}