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

History | View | Annotate | Download (3.34 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 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?rculo");
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 draw(Point mousePosition) {
54
    if (values.get(center) != null) {
55
      Point centerPoint = (Point) values.get(center);
56
      return createCircle(centerPoint, mousePosition, layer.getFeatureStore());
57
    }
58

    
59
    return null;
60

    
61
  }
62

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

    
73
  public void stop(){
74
    
75
  }
76

    
77
  public boolean isValidValue(EditingServiceParameter param, Object value) {
78
    return true;
79
  }
80

    
81
  public List<EditingServiceParameter> getParameters() {
82
    List<EditingServiceParameter> list = new ArrayList<EditingServiceParameter>();
83
    list.add(center);
84
    list.add(radius);
85
    return list;
86
  }
87

    
88
  public void value(Object value) {
89
    EditingServiceParameter param = next();
90
    if (isValidValue(param, value)) {
91
      values.put(param, value);
92
    }
93
  }
94

    
95
  public void finish() {
96
    Point centerPoint = (Point) values.get(center);
97
    Point radiusPoint = (Point) values.get(radius);
98
    Circle geometry = createCircle(centerPoint, radiusPoint,
99
        layer.getFeatureStore());
100
    ((EditingProviderServices) getProviderServices())
101
        .insertGeometryIntoFeatureStore(geometry, layer.getFeatureStore());
102

    
103
  }
104

    
105
  public void start() {
106
    this.values = new HashMap<EditingServiceParameter, Object>();
107
  }
108

    
109
  public String getName() {
110
    return this.PROVIDER_NAME;
111
  }
112

    
113
}