Revision 29

View differences:

org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.insertpoint/src/main/java/org/gvsig/vectorediting/lib/prov/insertpoint/InsertPointEditingProviderFactory.java
6 6
 */
7 7
package org.gvsig.vectorediting.lib.prov.insertpoint;
8 8

  
9
import org.gvsig.fmap.geom.Geometry;
9 10
import org.gvsig.tools.ToolsLocator;
10 11
import org.gvsig.tools.dynobject.DynClass;
11 12
import org.gvsig.tools.dynobject.DynObject;
......
14 15
import org.gvsig.tools.service.spi.ProviderServices;
15 16
import org.gvsig.vectorediting.lib.api.EditingServiceInfo;
16 17
import org.gvsig.vectorediting.lib.api.EditingServiceParameter;
18
import org.gvsig.vectorediting.lib.spi.DefaultEditingServiceinfo;
17 19
import org.gvsig.vectorediting.lib.spi.EditingProviderFactory;
18 20

  
19 21
public class InsertPointEditingProviderFactory extends AbstractProviderFactory implements
......
42 44
  }
43 45

  
44 46
  public EditingServiceInfo getServiceInfo() {
45
    // TODO Auto-generated method stub
46
    return null;
47
    EditingServiceInfo serviceInfo = new DefaultEditingServiceinfo(
48
        PROVIDER_NAME,
49
        "",
50
        true,
51
        null,
52
        null,
53
        new int[]{Geometry.TYPES.POINT, Geometry.TYPES.MULTIPOINT});
54
    
55
    return serviceInfo;
47 56
  }
48 57

  
49 58
  public EditingServiceParameter getServiceParameterInfo() {
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/Circle2PEditingProviderFactory.java
6 6
 */
7 7
package org.gvsig.vectorediting.lib.prov.circle2P;
8 8

  
9
import org.gvsig.fmap.geom.Geometry;
9 10
import org.gvsig.tools.ToolsLocator;
10 11
import org.gvsig.tools.dynobject.DynClass;
11 12
import org.gvsig.tools.dynobject.DynObject;
......
14 15
import org.gvsig.tools.service.spi.ProviderServices;
15 16
import org.gvsig.vectorediting.lib.api.EditingServiceInfo;
16 17
import org.gvsig.vectorediting.lib.api.EditingServiceParameter;
18
import org.gvsig.vectorediting.lib.spi.DefaultEditingServiceinfo;
17 19
import org.gvsig.vectorediting.lib.spi.EditingProviderFactory;
18 20

  
19

  
20 21
public class Circle2PEditingProviderFactory extends AbstractProviderFactory
21 22
    implements EditingProviderFactory {
22
  
23

  
23 24
  public static final String PROVIDER_NAME = "Circle2P";
24 25

  
25 26
  public static final String PROVIDER_NAME_PARAMS = "Circle2PParams";
26 27

  
27 28
  public static final String PROVIDER_NAME_PARAMS_DESCRIPTION = "";
28
  
29

  
29 30
  private DynClass dynclass;
30 31

  
31 32
  public void initialize() {
......
38 39
  }
39 40

  
40 41
  public EditingServiceInfo getServiceInfo() {
41
    // TODO Auto-generated method stub
42
    return null;
42
    EditingServiceInfo serviceInfo = new DefaultEditingServiceinfo(
43
        PROVIDER_NAME,
44
        "",
45
        true,
46
        null,
47
        null,
48
        new int[]{Geometry.TYPES.CIRCLE, Geometry.TYPES.MULTISURFACE});
49
    
50
    return serviceInfo;
43 51
  }
44 52

  
45 53
  public EditingServiceParameter getServiceParameterInfo() {
......
49 57

  
50 58
  @Override
51 59
  protected Provider doCreate(DynObject parameters, ProviderServices services) {
52
    return new Circle2PEditingProvider(services,parameters);
60
    return new Circle2PEditingProvider(services, parameters);
53 61
  }
54
  
62

  
55 63
  public DynObject createParameters() {
56 64
    DynObject dynobject = ToolsLocator.getDynObjectManager().createDynObject(
57 65
        dynclass);
......
64 72
  protected DynClass createParametersDynClass() {
65 73
    return null;
66 74
  }
67
  
75

  
68 76
  public String getName() {
69 77
    return this.PROVIDER_NAME;
70 78
  }
71 79

  
72

  
73 80
}
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.api/src/main/java/org/gvsig/vectorediting/lib/api/EditingManager.java
11 11
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
12 12
import org.gvsig.fmap.mapcontrol.MapControl;
13 13
import org.gvsig.tools.service.Manager;
14
import org.gvsig.tools.service.ServiceException;
14 15

  
15 16
public interface EditingManager extends Manager {
16 17

  
......
18 19
   * @param serviceName
19 20
   * @return
20 21
   */
21
  public EditingServiceInfo getServiceInfo(String serviceName);
22
  public EditingServiceInfo getServiceInfo(String serviceName) throws ServiceException;
22 23

  
23 24
  /**
24 25
   * @param name
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.api/src/main/java/org/gvsig/vectorediting/lib/api/EditingServiceInfo.java
31 31
  /**
32 32
   * @return
33 33
   */
34
  public int getSupportedPrimitiveGeometryType();
34
  public int[] getSupportedPrimitiveGeometryTypes();
35 35

  
36 36
  /**
37 37
   * @return
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.spi/src/main/java/org/gvsig/vectorediting/lib/spi/EditingProviderManager.java
6 6
 */
7 7
package org.gvsig.vectorediting.lib.spi;
8 8

  
9
import org.gvsig.tools.service.ServiceException;
10
import org.gvsig.tools.service.spi.NotRegisteredException;
11
import org.gvsig.tools.service.spi.ParametersException;
9 12
import org.gvsig.tools.service.spi.ProviderManager;
13
import org.gvsig.vectorediting.lib.api.EditingServiceInfo;
10 14

  
11 15

  
12 16
public interface EditingProviderManager extends ProviderManager{
17
  
18
  /**
19
   * 
20
   * @param name
21
   * @return
22
   * @throws ParametersException
23
   * @throws NotRegisteredException
24
   */
25
  public EditingServiceInfo getServiceInfo(String name) throws ServiceException ;
13 26

  
14 27
}
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.spi/src/main/java/org/gvsig/vectorediting/lib/spi/DefaultEditingServiceinfo.java
9 9
import java.awt.Image;
10 10
import java.util.List;
11 11

  
12
import org.gvsig.fmap.geom.Geometry;
12 13
import org.gvsig.vectorediting.lib.api.EditingServiceInfo;
13 14
import org.gvsig.vectorediting.lib.api.EditingServiceParameter;
14 15

  
......
24 25

  
25 26
  private List<EditingServiceParameter> parameters;
26 27

  
27
  private int supportedPrimitiveGeometryType;
28
  private int[] supportedPrimitiveGeometryType;
28 29

  
29 30
  public DefaultEditingServiceinfo(String name, String description,
30 31
      boolean createsNewGeometries, Image mouseCursor,
31 32
      List<EditingServiceParameter> parameters,
32
      int supportedPrimitiveGeometryType) {
33
      int[] supportedPrimitiveGeometryType) {
33 34
    super();
34 35
    this.name = name;
35 36
    this.description = description;
......
64 65
    return this.parameters;
65 66
  }
66 67

  
67
  public int getSupportedPrimitiveGeometryType() {
68
  public int[] getSupportedPrimitiveGeometryTypes() {
68 69
    // TODO Auto-generated method stub
69 70
    return this.supportedPrimitiveGeometryType;
70 71
  }
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.impl/src/main/java/org/gvsig/vectorediting/lib/impl/DefaultEditingManager.java
16 16
import org.gvsig.fmap.mapcontrol.MapControlLocator;
17 17
import org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior;
18 18
import org.gvsig.tools.dynobject.DynObject;
19
import org.gvsig.tools.locator.LocatorException;
19 20
import org.gvsig.tools.service.AbstractManager;
20 21
import org.gvsig.tools.service.Service;
21 22
import org.gvsig.tools.service.ServiceException;
23
import org.gvsig.tools.service.spi.NotRegisteredException;
24
import org.gvsig.tools.service.spi.ParametersException;
22 25
import org.gvsig.utils.console.jedit.JEditTextArea;
23 26
import org.gvsig.vectorediting.lib.api.EditingBehavior;
24 27
import org.gvsig.vectorediting.lib.api.EditingManager;
......
49 52
    return new DefaultEditingService(provider);
50 53
  }
51 54

  
52
  public EditingServiceInfo getServiceInfo(String toolName) {
53
    // TODO Auto-generated method stub
54
    return null;
55
  public EditingServiceInfo getServiceInfo(String toolName) throws ServiceException{
56
   return EditingProviderLocator.getProviderManager().getServiceInfo(toolName);
55 57
  }
56 58

  
57 59
  public void activateTool(String name, MapControl mapControl) {
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.impl/src/main/java/org/gvsig/vectorediting/lib/impl/DefaultEditingProviderManager.java
10 10
import org.gvsig.tools.service.Service;
11 11
import org.gvsig.tools.service.ServiceException;
12 12
import org.gvsig.tools.service.spi.AbstractProviderManager;
13
import org.gvsig.tools.service.spi.NotRegisteredException;
14
import org.gvsig.tools.service.spi.ParametersException;
13 15
import org.gvsig.tools.service.spi.Provider;
14 16
import org.gvsig.tools.service.spi.ProviderFactory;
15 17
import org.gvsig.tools.service.spi.ProviderServices;
18
import org.gvsig.vectorediting.lib.api.EditingServiceInfo;
16 19
import org.gvsig.vectorediting.lib.spi.EditingProviderFactory;
17 20
import org.gvsig.vectorediting.lib.spi.EditingProviderManager;
18 21

  
......
45 48
    return factory == null ? null : factory.create(serviceParameters,
46 49
        providerServices);
47 50
  }
51

  
52
  public EditingServiceInfo getServiceInfo(String name) throws ServiceException {
53
    // TODO Auto-generated method stub
54
    EditingProviderFactory factory = (EditingProviderFactory) getProviderFactory(name);
55
    return (factory == null ? null : factory.getServiceInfo());
56
  }
48 57
}
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.app/org.gvsig.vectorediting.app.mainplugin/src/main/java/org/gvsig/vectorediting/app/mainplugin/BaseEditingServiceExtension.java
10 10
import org.gvsig.andami.plugins.Extension;
11 11
import org.gvsig.app.project.documents.view.ViewDocument;
12 12
import org.gvsig.app.project.documents.view.gui.DefaultViewPanel;
13
import org.gvsig.fmap.dal.exception.ReadException;
14
import org.gvsig.fmap.geom.Geometry;
15
import org.gvsig.fmap.geom.GeometryLocator;
16
import org.gvsig.fmap.geom.type.GeometryType;
17
import org.gvsig.fmap.geom.type.GeometryTypeNotSupportedException;
18
import org.gvsig.fmap.geom.type.GeometryTypeNotValidException;
13 19
import org.gvsig.fmap.mapcontext.layers.FLayer;
14 20
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
21
import org.gvsig.tools.service.ServiceException;
15 22
import org.gvsig.vectorediting.lib.api.EditingLocator;
16 23
import org.gvsig.vectorediting.lib.api.EditingManager;
24
import org.gvsig.vectorediting.lib.api.EditingServiceInfo;
17 25

  
26
public abstract class BaseEditingServiceExtension extends Extension {
18 27

  
19
public abstract class BaseEditingServiceExtension extends Extension{
20
  
21 28
  /**
22 29
   * 
23 30
   */
24 31
  private static final long serialVersionUID = -6005105101114750889L;
25
  
32

  
26 33
  protected final EditingManager manager = EditingLocator.getManager();
27 34

  
28 35
  protected DefaultViewPanel getActiveView() {
......
35 42

  
36 43
    return null;
37 44
  }
38
  
45

  
39 46
  protected boolean canBeEdited(FLyrVect layer) {
40 47
    if (layer != null) {
41 48
      boolean isWritable = layer.isWritable();
......
45 52
    }
46 53
    return false;
47 54
  }
48
  
55

  
49 56
  protected FLyrVect getActiveLayer(DefaultViewPanel vista) {
50 57
    if (vista != null) {
51 58
      ViewDocument viewDocument = vista.getViewDocument();
......
57 64
    }
58 65
    return null;
59 66
  }
67

  
68
  private boolean isApplicable(GeometryType[] supportedTypes, GeometryType geometryType) {
69
    if (supportedTypes != null) {
70
      for (int i = 0; i < supportedTypes.length; i++) {
71
        if (supportedTypes[i].isTypeOf(geometryType)) {
72
          return true;
73
        }
74
      }
75
    }
76
    return false;
77
  }
78

  
79
  protected boolean isApplicable(GeometryType[] supportedTypes, int shapeType) {
80
    GeometryType type = loadGeometryType(shapeType, Geometry.SUBTYPES.GEOM2D);
81
    return isApplicable(supportedTypes, type);
82
  }
83
  
84
  protected GeometryType[] loadGeometryTypes(int[] types) {
85
    GeometryType[] supportedTypes = null;
86
    if (types == null) {
87
      supportedTypes = new GeometryType[0];
88
    }
89
    else {
90
      supportedTypes = new GeometryType[types.length];
91
      for (int i = 0; i < types.length; i++) {
92
        supportedTypes[i] = loadGeometryType(types[i], Geometry.SUBTYPES.GEOM2D);
93
      }
94
    }
95
    return supportedTypes;
96
  }
97

  
98
  private GeometryType loadGeometryType(int type, int subtype) {
99
    try {
100
      return GeometryLocator.getGeometryManager()
101
          .getGeometryType(type, subtype);
102
    }
103
    catch (GeometryTypeNotSupportedException e) {
104
      throw new RuntimeException("Error getting the Geometry type with type = "
105
          + type + ", subtype = " + subtype, e);
106
    }
107
    catch (GeometryTypeNotValidException e) {
108
      throw new RuntimeException("Error getting the Geometry type with type = "
109
          + type + ", subtype = " + subtype, e);
110
    }
111
  }
112

  
60 113
}
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.app/org.gvsig.vectorediting.app.mainplugin/src/main/java/org/gvsig/vectorediting/app/mainplugin/extensions/Circle2PExtension.java
8 8

  
9 9
import org.gvsig.andami.IconThemeHelper;
10 10
import org.gvsig.app.project.documents.view.gui.DefaultViewPanel;
11
import org.gvsig.fmap.dal.exception.ReadException;
12
import org.gvsig.fmap.geom.type.GeometryType;
11 13
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
14
import org.gvsig.tools.service.ServiceException;
12 15
import org.gvsig.vectorediting.app.mainplugin.BaseEditingServiceExtension;
16
import org.gvsig.vectorediting.lib.api.EditingServiceInfo;
13 17

  
18
public class Circle2PExtension extends BaseEditingServiceExtension {
14 19

  
15
public class Circle2PExtension extends BaseEditingServiceExtension{
16

  
17 20
  public void initialize() {
18 21
    // TODO Auto-generated method stub
19
    
22

  
20 23
  }
21 24

  
22 25
  public void execute(String arg0) {
......
32 35
  }
33 36

  
34 37
  public boolean isEnabled() {
35
    // TODO Auto-generated method stub
36
    return true;
38
    EditingServiceInfo Circle2PInfo;
39
    try {
40
      Circle2PInfo = manager.getServiceInfo("Circle2P");
41
      DefaultViewPanel view = getActiveView();
42
      FLyrVect layer = getActiveLayer(view);
43

  
44
      int[] supportedTypes = Circle2PInfo.getSupportedPrimitiveGeometryTypes();
45
      GeometryType[] supportedGeoTypes = loadGeometryTypes(supportedTypes);
46

  
47
      if (isApplicable(supportedGeoTypes, layer.getShapeType())) {
48
        return true;
49
      }
50

  
51
      return false;
52

  
53
    }
54
    catch (ServiceException e1) {
55
      // TODO Auto-generated catch block
56
      e1.printStackTrace();
57
    }
58
    catch (ReadException e) {
59
      // TODO Auto-generated catch block
60
      e.printStackTrace();
61
    }
62
    return false;
37 63
  }
38 64

  
39 65
  public boolean isVisible() {
......
47 73
    return false;
48 74
  }
49 75

  
50
  
51

  
52 76
}
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.app/org.gvsig.vectorediting.app.mainplugin/src/main/java/org/gvsig/vectorediting/app/mainplugin/extensions/InsertPointExtension.java
8 8

  
9 9
import org.gvsig.andami.IconThemeHelper;
10 10
import org.gvsig.app.project.documents.view.gui.DefaultViewPanel;
11
import org.gvsig.fmap.dal.exception.ReadException;
12
import org.gvsig.fmap.geom.type.GeometryType;
11 13
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
14
import org.gvsig.tools.service.ServiceException;
12 15
import org.gvsig.vectorediting.app.mainplugin.BaseEditingServiceExtension;
16
import org.gvsig.vectorediting.lib.api.EditingServiceInfo;
13 17

  
14 18
public class InsertPointExtension extends BaseEditingServiceExtension {
15 19

  
......
36 40
  }
37 41

  
38 42
  public boolean isEnabled() {
39
    // TODO Auto-generated method stub
40
    return true;
43
    EditingServiceInfo insertPointInfo;
44
    try {
45
      insertPointInfo = manager.getServiceInfo("InsertPoint");
46
      DefaultViewPanel view = getActiveView();
47
      FLyrVect layer = getActiveLayer(view);
48

  
49
      int[] supportedTypes = insertPointInfo
50
          .getSupportedPrimitiveGeometryTypes();
51
      GeometryType[] supportedGeoTypes = loadGeometryTypes(supportedTypes);
52

  
53
      if (isApplicable(supportedGeoTypes, layer.getShapeType())) {
54
        return true;
55
      }
56

  
57
      return false;
58

  
59
    }
60
    catch (ServiceException e1) {
61
      // TODO Auto-generated catch block
62
      e1.printStackTrace();
63
    }
64
    catch (ReadException e) {
65
      // TODO Auto-generated catch block
66
      e.printStackTrace();
67
    }
68
    return false;
41 69
  }
42 70

  
43 71
  public boolean isVisible() {
......
50 78
    }
51 79
    return false;
52 80
  }
53

  
54 81
}

Also available in: Unified diff