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 @ 37

History | View | Annotate | Download (3.54 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.awt.geom.Point2D;
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 final static String PROVIDER_NAME = "Circle2P";
31

    
32
  private final static String PROVIDER_DESCRIPTION = "Creates circles from the center and radius";
33

    
34
  private EditingServiceParameter center = new DefaultEditingServiceParameter(
35
      PROVIDER_NAME, PROVIDER_DESCRIPTION, EditingServiceParameter.TYPE_POINT,
36
      "Inserte el centro del c?rculo");
37

    
38
  private EditingServiceParameter radius = new DefaultEditingServiceParameter(
39
      PROVIDER_NAME, PROVIDER_DESCRIPTION, EditingServiceParameter.TYPE_POINT,
40
      "Inserte el radio del c?ruclo");
41

    
42
  private Map<EditingServiceParameter, Object> values;
43

    
44
  private FLyrVect layer;
45

    
46
  public Circle2PEditingProvider(ProviderServices providerServices,
47
      DynObject parameters) {
48
    super(providerServices);
49
    this.layer = (FLyrVect) parameters
50
        .getDynValue(EditingProviderFactory.LAYER_FIELD);
51
  }
52

    
53
  public Geometry drawOperation(Point mousePosition) {
54
    if (values.get(center) != null) {
55
      Point centerPoint = (Point) values.get(center);
56
      return createCircle(centerPoint, mousePosition,
57
          layer.getFeatureStore());
58
    }
59

    
60
    return null;
61

    
62
  }
63

    
64
  public EditingServiceParameter getNextParameter() {
65
    if (values.get(center) == null) {
66
      return this.center;
67
    }
68
    else if (values.get(radius) == null) {
69
      return this.radius;
70
    }
71
    return null;
72
  }
73

    
74
  public void stopEditingAndSave() {
75
    // TODO Auto-generated method stub
76

    
77
  }
78

    
79
  public void stopEditingAndDiscard() {
80
    // TODO Auto-generated method stub
81

    
82
  }
83

    
84
  public boolean isValidValue(EditingServiceParameter param, Object value) {
85
    // TODO Auto-generated method stub
86
    return true;
87
  }
88

    
89
  public List<EditingServiceParameter> getParameters() {
90
    // TODO Auto-generated method stub
91
    return null;
92
  }
93

    
94
  public void setValueParameter(EditingServiceParameter param, Object value) {
95
    // TODO Auto-generated method stub
96
    if (isValidValue(param, value)) {
97
      values.put(param, value);
98
    }
99
  }
100

    
101
  public void finishOperation() {
102
    // TODO Auto-generated method stub
103
    Point centerPoint = (Point) values.get(center);
104
    Point radiusPoint = (Point) values.get(radius);
105
    Circle geometry = createCircle(centerPoint, radiusPoint,
106
        layer.getFeatureStore());
107
    ((EditingProviderServices) getProviderServices())
108
        .insertGeometryIntoFeatureStore(geometry, layer.getFeatureStore());
109

    
110
  }
111

    
112
  public void start() {
113
    this.values = new HashMap<EditingServiceParameter, Object>();
114
  }
115

    
116
  public String getName() {
117
    return this.PROVIDER_NAME;
118
  }
119

    
120
}