Revision 28

View differences:

org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.app/org.gvsig.vectorediting.app.mainplugin/src/main/assembly/gvsig-plugin-package.xml
59 59
		<include>org.gvsig:org.gvsig.vectorediting.lib.impl</include>
60 60
		<include>org.gvsig:org.gvsig.vectorediting.swing.impl</include>
61 61
		<include>org.gvsig:org.gvsig.vectorediting.lib.prov.insertpoint</include>
62
		<include>org.gvsig:org.gvsig.vectorediting.lib.prov.circle2P</include>
62 63
		<include>org.gvsig:org.gvsig.vectorediting.lib.spi</include>        
63 64
      </includes>
64 65
    </dependencySet>
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
1
/*
2
 * Copyright 2014 DiSiD Technologies S.L.L. All rights reserved.
3
 * 
4
 * Project  : DiSiD org.gvsig.vectorediting.app.mainplugin 
5
 * SVN Id   : $Id$
6
 */
7
package org.gvsig.vectorediting.app.mainplugin.extensions;
8

  
9
import org.gvsig.andami.IconThemeHelper;
10
import org.gvsig.app.project.documents.view.gui.DefaultViewPanel;
11
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
12
import org.gvsig.vectorediting.app.mainplugin.BaseEditingServiceExtension;
13

  
14

  
15
public class Circle2PExtension extends BaseEditingServiceExtension{
16

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

  
22
  public void execute(String arg0) {
23

  
24
    DefaultViewPanel view = getActiveView();
25
    manager.activateTool("Circle2P", view.getMapControl());
26

  
27
    registerIcons();
28
  }
29

  
30
  private void registerIcons() {
31
    IconThemeHelper.registerIcon("action", "layer-insert-circle", this);
32
  }
33

  
34
  public boolean isEnabled() {
35
    // TODO Auto-generated method stub
36
    return true;
37
  }
38

  
39
  public boolean isVisible() {
40
    DefaultViewPanel view = getActiveView();
41
    if (view != null) {
42
      FLyrVect layer = getActiveLayer(view);
43
      if (layer != null && layer.isEditing()) {
44
        return true;
45
      }
46
    }
47
    return false;
48
  }
49

  
50
  
51

  
52
}
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
7 7
package org.gvsig.vectorediting.app.mainplugin;
8 8

  
9 9
import org.gvsig.andami.PluginServices;
10
import org.gvsig.andami.plugins.IExtension;
11
import org.gvsig.andami.plugins.config.generate.Extension;
12
import org.gvsig.andami.plugins.status.IExtensionStatus;
10
import org.gvsig.andami.plugins.Extension;
13 11
import org.gvsig.app.project.documents.view.ViewDocument;
14 12
import org.gvsig.app.project.documents.view.gui.DefaultViewPanel;
15 13
import org.gvsig.fmap.mapcontext.layers.FLayer;
......
18 16
import org.gvsig.vectorediting.lib.api.EditingManager;
19 17

  
20 18

  
21
public class BaseEditingServiceExtension extends Extension implements IExtension{
19
public abstract class BaseEditingServiceExtension extends Extension{
22 20
  
23 21
  /**
24 22
   * 
......
59 57
    }
60 58
    return null;
61 59
  }
62

  
63
  public void execute(String arg0) {
64
    // TODO Auto-generated method stub
65
    
66
  }
67

  
68
  public IExtensionStatus getStatus() {
69
    // TODO Auto-generated method stub
70
    return null;
71
  }
72

  
73
  public IExtensionStatus getStatus(IExtension arg0) {
74
    // TODO Auto-generated method stub
75
    return null;
76
  }
77

  
78
  public void initialize() {
79
    // TODO Auto-generated method stub
80
    
81
  }
82

  
83
  public boolean isEnabled() {
84
    // TODO Auto-generated method stub
85
    return false;
86
  }
87

  
88
  public boolean isVisible() {
89
    // TODO Auto-generated method stub
90
    return false;
91
  }
92

  
93
  public void postInitialize() {
94
    // TODO Auto-generated method stub
95
    
96
  }
97

  
98
  public void terminate() {
99
    // TODO Auto-generated method stub
100
    
101
  }
102

  
103

  
104 60
}
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.app/org.gvsig.vectorediting.app.mainplugin/src/main/resources-plugin/config.xml
21 21
			description="" active="true" priority="1">
22 22

  
23 23
			<action name="VectorEditing" label="Start_edit" tooltip="Strat_edit"
24
				action-command="start_edit" icon="vector-editing" position="302001000"
24
				action-command="start_edit" icon="vector-editing" position="302010000"
25 25
				accelerator="" />
26 26

  
27 27
			<menu text="tools/start_edit/start_edit" name="start_edit" />
......
36 36
			description="" active="true" priority="1">
37 37

  
38 38
			<action name="InsertPoint" label="Insert_point" tooltip="insert_point"
39
				action-command="insert_point" icon="layer-insert-point" position="302001000"
39
				action-command="insert_point" icon="layer-insert-point" position="302020000"
40 40
				accelerator="" />
41 41

  
42 42
			<menu text="tools/insert_point" name="insert_point" />
......
46 46
			</tool-bar>
47 47

  
48 48
		</extension>
49
		
50
		<extension
51
			class-name="org.gvsig.vectorediting.app.mainplugin.extensions.Circle2PExtension"
52
			description="" active="true" priority="1">
49 53

  
54
			<action name="InsertCircle" label="Insert_circle" tooltip="insert_circle"
55
				action-command="insert_circle" icon="layer-insert-circle" position="302030000"
56
				accelerator="" />
57

  
58
			<menu text="tools/insert_circle" name="insert_cirlce" />
59

  
60
			<tool-bar name="Insert Circle 2P" position="1">
61
				<selectable-tool name="InsertCircle" />
62
			</tool-bar>
63

  
64
		</extension>
65
		
66

  
50 67
	</extensions>
51 68

  
52 69
</plugin-config>
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.app/org.gvsig.vectorediting.app.mainplugin/pom.xml
11 11
		<artifactId>org.gvsig.vectorediting.app</artifactId>
12 12
		<version>1.0.0-SNAPSHOT</version>
13 13
	</parent>
14
	
14

  
15 15
	<properties>
16
        <!-- Package info property values -->
17
        <!-- Default values in org.gvsig.desktop -->
18
        <gvsig.package.info.state>devel</gvsig.package.info.state>
16
		<!-- Package info property values -->
17
		<!-- Default values in org.gvsig.desktop -->
18
		<gvsig.package.info.state>devel</gvsig.package.info.state>
19 19
        <gvsig.package.info.dependencies>required: org.gvsig.app.mainplugin -ge 2.1.0-A</gvsig.package.info.dependencies>
20
        <gvsig.package.info.categories></gvsig.package.info.categories>
21
        <gvsig.package.info.poolURL>http://devel.gvsig.org/download/projects/gvsig-templates/pool/</gvsig.package.info.poolURL>
22
    </properties>
23
	
20
		<gvsig.package.info.categories></gvsig.package.info.categories>
21
		<gvsig.package.info.poolURL>http://devel.gvsig.org/download/projects/gvsig-templates/pool/</gvsig.package.info.poolURL>
22
	</properties>
23

  
24 24
	<dependencies>
25 25
		<dependency>
26 26
			<groupId>org.gvsig</groupId>
......
48 48
			<groupId>org.gvsig</groupId>
49 49
			<artifactId>org.gvsig.app.mainplugin</artifactId>
50 50
		</dependency>
51
		<dependency>
52
			<groupId>org.gvsig</groupId>
53
			<artifactId>
54
				org.gvsig.vectorediting.lib.prov.circle2P
55
			</artifactId>
56
		</dependency>
51 57
	</dependencies>
52 58
</project>
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/pom.xml
11 11
	<parent>
12 12
		<groupId>org.gvsig</groupId>
13 13
		<artifactId>org.gvsig.desktop</artifactId>
14
		<version>2.0.56</version>
14
		<version>2.0.58</version>
15 15
	</parent>
16 16
	<url>http://devel.gvsig.org/sites/org.gvsig.vectorediting/${project.version}</url>
17 17
	<scm>
......
118 118
				</artifactId>
119 119
				<version>1.0.0-SNAPSHOT</version>
120 120
			</dependency>
121
			<dependency>
122
				<groupId>org.gvsig</groupId>
123
				<artifactId>
124
					org.gvsig.vectorediting.lib.prov.circle2P
125
				</artifactId>
126
				<version>1.0.0-SNAPSHOT</version>
127
			</dependency>
121 128
		</dependencies>
122 129
	</dependencyManagement>
123 130
</project>
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.impl/src/main/java/org/gvsig/vectorediting/lib/impl/DefaultEditingBehavior.java
19 19
import org.gvsig.andami.ui.mdiFrame.MainFrame;
20 20
import org.gvsig.app.project.documents.view.gui.DefaultViewPanel;
21 21
import org.gvsig.app.project.documents.view.toolListeners.StatusBarListener;
22
import org.gvsig.fmap.geom.Geometry;
22 23
import org.gvsig.fmap.mapcontext.MapContext;
23 24
import org.gvsig.fmap.mapcontext.ViewPort;
24 25
import org.gvsig.fmap.mapcontext.layers.CancelationException;
......
31 32
import org.gvsig.fmap.mapcontext.layers.LayerPositionEvent;
32 33
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
33 34
import org.gvsig.fmap.mapcontrol.MapControl;
35
import org.gvsig.fmap.mapcontrol.MapControlDrawer;
36
import org.gvsig.fmap.mapcontrol.MapControlLocator;
34 37
import org.gvsig.fmap.mapcontrol.tools.BehaviorException;
35 38
import org.gvsig.fmap.mapcontrol.tools.Behavior.Behavior;
36 39
import org.gvsig.fmap.mapcontrol.tools.Listeners.ToolListener;
......
51 54
  private EditingService activatedTool;
52 55

  
53 56
  private EditingServiceParameter currentParam;
57
  
58
  private Point adjustedPoint;
54 59

  
55 60
  private StatusBarListener sbl = null;
56 61

  
......
68 73
    g.drawRect((x - 3), (y - 3), 6, 6);
69 74
  }
70 75

  
76
  private LayerListener layerListener = new LayerListener() {
77

  
78
    public void activationChanged(LayerEvent e) {
79
      DefaultViewPanel view = getActiveView();
80
      FLayer layer = e.getSource();
81
      if (layer instanceof FLyrVect) {
82

  
83
        if (layer.isActive() && layer.isEditing()) {
84
          view.showConsole();
85
          getMapControl().setTool("VectorEditing");
86
        }
87
        else if (!layer.isEditing() && layer.isActive()) {
88
          setCurrentLayer((FLyrVect) layer);
89
          view.hideConsole();
90
          getMapControl().setTool("zoomIn");
91
          PluginServices.getMainFrame().setSelectedTool("ZOOM_IN");
92
        }
93
        setCurrentLayer((FLyrVect) layer);
94
      }
95

  
96
    }
97

  
98
    public void drawValueChanged(LayerEvent e) {}
99

  
100
    public void editionChanged(LayerEvent e) {}
101

  
102
    public void nameChanged(LayerEvent e) {}
103

  
104
    public void visibilityChanged(LayerEvent e) {}
105
  };
106

  
71 107
  public DefaultEditingBehavior(MapControl mapControl) {
72 108
    // TODO Auto-generated constructor stub
73 109
    if (mapControl != null) {
......
76 112
      initMapControlListeners(mapControl);
77 113
      FLayers layers = mapControl.getMapContext().getLayers();
78 114
      for (int i = 0; i < layers.getLayersCount(); i++) {
79
        if (layers.getLayer(i) instanceof FLyrVect)
115
        if (layers.getLayer(i) instanceof FLyrVect
116
            && layers.getLayer(i).isActive())
80 117
          setCurrentLayer((FLyrVect) layers.getLayer(i));
81 118
      }
82 119

  
83 120
    }
84 121
  }
85 122

  
86
  private LayerListener layerListener = new LayerListener() {
123
  public void activateTool(String name) {
87 124

  
88
    public void visibilityChanged(LayerEvent e) {}
125
    EditingManager manager = EditingLocator.getManager();
89 126

  
90
    public void nameChanged(LayerEvent e) {}
127
    if (currentLayer != null) {
128
      EditingService tool = (EditingService) manager.getEditingService(name,
129
          currentLayer);
130
      if (tool != null) {
131
        this.activatedTool = tool;
132
        tool.start();
133
        getNextParameter();
134
      }
135
    }
136
  }
91 137

  
92
    public void editionChanged(LayerEvent e) {}
138
  private void askQuestion(EditingServiceParameter param) {
139
    DefaultViewPanel viewActive = getActiveView();
140
    if (viewActive != null) {
141
      viewActive.getConsolePanel().addText(
142
          "\n" + "#" + param.getConsoleMessage() + " > ", JConsole.MESSAGE);
143
    }
144
  }
93 145

  
94
    public void drawValueChanged(LayerEvent e) {}
146
  private DefaultViewPanel getActiveView() {
147
    org.gvsig.andami.ui.mdiManager.IWindow activeWindow = PluginServices
148
        .getMDIManager().getActiveWindow();
95 149

  
96
    public void activationChanged(LayerEvent e) {
97
      FLayer layer = e.getSource();
98
      if (layer.isEditing() && layer instanceof FLyrVect) {
99
        setCurrentLayer((FLyrVect) layer);
150
    if (activeWindow instanceof DefaultViewPanel) {
151
      return (DefaultViewPanel) activeWindow;
152
    }
153
    return null;
154
  }
155

  
156
  @Override
157
  public ToolListener getListener() {
158
    return new ToolListener() {
159

  
160
      /**
161
       * 
162
       */
163
      public boolean cancelDrawing() {
164
        return false;
100 165
      }
166

  
167
      /**
168
       * 
169
       */
170
      public Image getImageCursor() {
171
        return imageCursor;
172
      }
173
    };
174
  }
175

  
176
  private void getNextParameter() {
177
    currentParam = activatedTool.getNextParameter();
178
    if (currentParam == null) {
179
      activatedTool.finishOperation();
180
      mapControl.rePaintDirtyLayers();
181
      activatedTool.start();
182
      getNextParameter();
101 183
    }
102
  };
184
    else {
185
      askQuestion(currentParam);
103 186

  
187
    }
188

  
189
  }
190

  
104 191
  private void initMapControlListeners(MapControl mapControl) {
105 192
    DefaultViewPanel view = getActiveView();
106 193

  
......
129 216

  
130 217
    layers.addLayerCollectionListener(new LayerCollectionListener() {
131 218

  
132
      public void visibilityChanged(LayerCollectionEvent e)
133
          throws CancelationException {}
134

  
135
      public void layerRemoving(LayerCollectionEvent e)
136
          throws CancelationException {}
137

  
138
      public void layerRemoved(LayerCollectionEvent e) {
219
      public void layerAdded(LayerCollectionEvent e) {
139 220
        FLayers layers2 = e.getLayers();
140 221
        for (int i = 0; i < layers2.getLayersCount(); i++) {
141 222
          FLayer layer = layers2.getLayer(i);
142 223
          if (layer instanceof FLyrVect) {
143
            ((FLyrVect) layer).removeLayerListener(layerListener);
224
            ((FLyrVect) layer).addLayerListener(layerListener);
144 225
          }
145 226
        }
146 227
      }
147 228

  
148
      public void layerMoving(LayerPositionEvent e) throws CancelationException {}
229
      public void layerAdding(LayerCollectionEvent e)
230
          throws CancelationException {}
149 231

  
150 232
      public void layerMoved(LayerPositionEvent e) {}
151 233

  
152
      public void layerAdding(LayerCollectionEvent e)
153
          throws CancelationException {}
234
      public void layerMoving(LayerPositionEvent e) throws CancelationException {}
154 235

  
155
      public void layerAdded(LayerCollectionEvent e) {
236
      public void layerRemoved(LayerCollectionEvent e) {
156 237
        FLayers layers2 = e.getLayers();
157 238
        for (int i = 0; i < layers2.getLayersCount(); i++) {
158 239
          FLayer layer = layers2.getLayer(i);
159 240
          if (layer instanceof FLyrVect) {
160
            ((FLyrVect) layer).addLayerListener(layerListener);
241
            ((FLyrVect) layer).removeLayerListener(layerListener);
161 242
          }
162 243
        }
163 244
      }
164
    });
165
  }
166 245

  
167
  private void textEntered(String response) {
168
    int type = currentParam.getType();
169
    try {
170
      switch (type) {
171
        case EditingServiceParameter.TYPE_POINT:
172
          String[] numbers = new String[1];
173
          numbers[0] = response;
174
          numbers = response.split(",");
175
          if (numbers.length == 2) {
176
            if (numbers[0].startsWith("(") && numbers[1].endsWith(")\n")) { // CCS
177
              numbers[0] = numbers[0].replace("(", "");
178
              numbers[1] = numbers[1].replace(")\n", "");
179
            }
180
            double[] values = new double[] { Double.parseDouble(numbers[0]),
181
                Double.parseDouble(numbers[1]) };
182
            Point2D point = new Point2D.Double(values[0], values[1]);
183
            this.activatedTool.setValueParameter(currentParam, point);
246
      public void layerRemoving(LayerCollectionEvent e)
247
          throws CancelationException {}
184 248

  
185
          }
186
          else {
187
            throw new RuntimeException("Datos inv?lidos: " + response);
188
          }
189
        case EditingServiceParameter.TYPE_LIST_POINTS:
190
        case EditingServiceParameter.TYPE_OPTION:
191
        case EditingServiceParameter.TYPE_SELECTION:
192
        case EditingServiceParameter.TYPE_GEOMETRY:
193
        case EditingServiceParameter.TYPE_VALUE:
194
      }
195
      getNextParameter();
196
    }
197
    catch (Exception e) {
198
      throw new RuntimeException("Datos inv?lidos: " + response);
199
    }
249
      public void visibilityChanged(LayerCollectionEvent e)
250
          throws CancelationException {}
251
    });
200 252
  }
201 253

  
202
  public void setCurrentLayer(FLyrVect layer) {
203
    this.currentLayer = layer;
204
  }
205

  
206
  public void activateTool(String name) {
207

  
208
    EditingManager manager = EditingLocator.getManager();
209

  
210
    if (currentLayer != null) {
211
      EditingService tool = (EditingService) manager.getEditingService(name,
212
          currentLayer);
213
      if (tool != null) {
214
        this.activatedTool = tool;
215
        tool.start();
216
        getNextParameter();
217
      }
218
    }
219
  }
220

  
221
  private void getNextParameter() {
222
    currentParam = activatedTool.getNextParameter();
223
    if (currentParam == null) {
224
      activatedTool.finishOperation();
225
      mapControl.rePaintDirtyLayers();
226
      activatedTool.start();
227
      getNextParameter();
228
    }
229
    else {
230
      askQuestion(currentParam);
231

  
232
    }
233

  
234
  }
235

  
236
  private void askQuestion(EditingServiceParameter param) {
237
    DefaultViewPanel viewActive = getActiveView();
238
    if (viewActive != null) {
239
      viewActive.getConsolePanel().addText(
240
          "\n" + "#" + param.getConsoleMessage() + " > ", JConsole.MESSAGE);
241
    }
242
  }
243

  
244
  private DefaultViewPanel getActiveView() {
245
    org.gvsig.andami.ui.mdiManager.IWindow activeWindow = PluginServices
246
        .getMDIManager().getActiveWindow();
247

  
248
    if (activeWindow instanceof DefaultViewPanel) {
249
      return (DefaultViewPanel) activeWindow;
250
    }
251
    return null;
252
  }
253

  
254
  @Override
255
  public ToolListener getListener() {
256
    return new ToolListener() {
257

  
258
      /**
259
       * 
260
       */
261
      public Image getImageCursor() {
262
        return imageCursor;
263
      }
264

  
265
      /**
266
       * 
267
       */
268
      public boolean cancelDrawing() {
269
        return false;
270
      }
271
    };
272
  }
273

  
274 254
  public void mouseClicked(MouseEvent e) throws BehaviorException {
275 255
    // TODO Auto-generated method stub
276 256
    if (activatedTool != null) {
......
299 279
  }
300 280

  
301 281
  public void mouseMoved(MouseEvent e) throws BehaviorException {
302
    showCoords(e.getPoint());
282
    adjustedPoint = e.getPoint();
303 283

  
284
    showCoords(adjustedPoint);
285

  
304 286
    getMapControl().repaint();
305 287
  }
306 288

  
289
  public void mousePressed(MouseEvent e) throws BehaviorException {
290
    // TODO Auto-generated method stub
291
  }
292

  
293
  public void mouseReleased(MouseEvent e) throws BehaviorException {
294
    // TODO Auto-generated method stub
295
  }
296

  
297
  @SuppressWarnings("deprecation")
298
  public void paintComponent(MapControlDrawer mapControlDrawer) {
299
    super.paintComponent(mapControlDrawer);
300
    if (activatedTool == null || adjustedPoint == null) {
301
      return;
302
    }
303
    Point2D p = null;
304

  
305
    p = getMapControl().getViewPort().toMapPoint(adjustedPoint);
306
    Geometry helperGeo = activatedTool.drawOperation(p);
307
    if (helperGeo != null) {
308
      mapControl.getMapControlDrawer().draw(helperGeo,
309
          MapControlLocator.getMapControlManager().getAxisReferenceSymbol());
310
    }
311
  }
312

  
313
  public void setCurrentLayer(FLyrVect layer) {
314
    this.currentLayer = layer;
315
  }
316

  
307 317
  private void showCoords(Point point) {
308 318
    String[] axisText = new String[2];
309 319
    axisText[0] = "X = ";
......
338 348

  
339 349
  }
340 350

  
341
  public void mousePressed(MouseEvent e) throws BehaviorException {
342
    // TODO Auto-generated method stub
343
  }
351
  private void textEntered(String response) {
352
    int type = currentParam.getType();
353
    try {
354
      switch (type) {
355
        case EditingServiceParameter.TYPE_POINT:
356
          String[] numbers = new String[1];
357
          numbers[0] = response;
358
          numbers = response.split(",");
359
          if (numbers.length == 2) {
360
            if (numbers[0].startsWith("(") && numbers[1].endsWith(")\n")) { // CCS
361
              numbers[0] = numbers[0].replace("(", "");
362
              numbers[1] = numbers[1].replace(")\n", "");
363
            }
364
            double[] values = new double[] { Double.parseDouble(numbers[0]),
365
                Double.parseDouble(numbers[1]) };
366
            Point2D point = new Point2D.Double(values[0], values[1]);
367
            this.activatedTool.setValueParameter(currentParam, point);
344 368

  
345
  public void mouseReleased(MouseEvent e) throws BehaviorException {
346
    // TODO Auto-generated method stub
369
          }
370
          else {
371
            throw new RuntimeException("Datos inv?lidos: " + response);
372
          }
373
        case EditingServiceParameter.TYPE_LIST_POINTS:
374
        case EditingServiceParameter.TYPE_OPTION:
375
        case EditingServiceParameter.TYPE_SELECTION:
376
        case EditingServiceParameter.TYPE_GEOMETRY:
377
        case EditingServiceParameter.TYPE_VALUE:
378
      }
379
      getNextParameter();
380
    }
381
    catch (Exception e) {
382
      throw new RuntimeException("Datos inv?lidos: " + response);
383
    }
347 384
  }
348 385

  
349 386
}
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.impl/src/main/java/org/gvsig/vectorediting/lib/impl/DefaultEditingProviderLibrary.java
9 9
import org.gvsig.fmap.dal.DALLibrary;
10 10
import org.gvsig.tools.library.AbstractLibrary;
11 11
import org.gvsig.tools.library.LibraryException;
12
import org.gvsig.vectorediting.lib.prov.circle2P.Circle2PEditingProviderFactory;
12 13
import org.gvsig.vectorediting.lib.prov.insertpoint.InsertPointEditingProviderFactory;
13 14
import org.gvsig.vectorediting.lib.spi.EditingProviderLibrary;
14 15
import org.gvsig.vectorediting.lib.spi.EditingProviderLocator;
......
37 38
    EditingProviderManager manager = EditingProviderLocator.getProviderManager();
38 39
    
39 40
    manager.addProviderFactory(new InsertPointEditingProviderFactory());
41
    manager.addProviderFactory(new Circle2PEditingProviderFactory());
40 42
    
41 43
  }
42 44

  
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.impl/src/main/java/org/gvsig/vectorediting/lib/impl/DefaultEditingService.java
6 6
 */
7 7
package org.gvsig.vectorediting.lib.impl;
8 8

  
9
import java.awt.Point;
10
import java.util.Set;
9
import java.awt.geom.Point2D;
10
import java.util.List;
11 11

  
12 12
import org.gvsig.fmap.geom.Geometry;
13 13
import org.gvsig.tools.service.Manager;
......
29 29
    return null;
30 30
  }
31 31

  
32
  public Geometry drawOperation(Point mousePosition) {
32
  public Geometry drawOperation(Point2D mousePosition) {
33 33
    // TODO Auto-generated method stub
34 34
    return provider.drawOperation(mousePosition);
35 35
  }
36 36

  
37
  public Set<EditingServiceParameter> getParameters() {
37
  public List<EditingServiceParameter> getParameters() {
38 38
    // TODO Auto-generated method stub
39 39
    return provider.getParameters();
40 40
  }
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
19 19
import org.gvsig.tools.service.AbstractManager;
20 20
import org.gvsig.tools.service.Service;
21 21
import org.gvsig.tools.service.ServiceException;
22
import org.gvsig.utils.console.ResponseListener;
23 22
import org.gvsig.utils.console.jedit.JEditTextArea;
24 23
import org.gvsig.vectorediting.lib.api.EditingBehavior;
25 24
import org.gvsig.vectorediting.lib.api.EditingManager;
......
125 124
    if (!mapControl.hasTool("VectorEditing")) {
126 125
      Behavior vectorEditing = new DefaultEditingBehavior(mapControl);
127 126
      mapControl.addBehavior("VectorEditing", vectorEditing);
128
    }
129

  
127
    } 
128
    
130 129
    mapControl.setTool("VectorEditing");
130
    
131 131
  }
132 132
}
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.impl/pom.xml
25 25
				org.gvsig.vectorediting.lib.prov.insertpoint
26 26
			</artifactId>
27 27
		</dependency>
28
		<dependency>
29
			<groupId>org.gvsig</groupId>
30
			<artifactId>
31
				org.gvsig.vectorediting.lib.prov.circle2P
32
			</artifactId>
33
		</dependency>
28 34
	</dependencies>
29 35
</project>
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/InsertPointEditingProvider.java
8 8

  
9 9
import java.awt.geom.Point2D;
10 10
import java.util.HashMap;
11
import java.util.List;
11 12
import java.util.Map;
12
import java.util.Set;
13 13

  
14 14
import org.gvsig.fmap.geom.Geometry;
15 15
import org.gvsig.fmap.geom.primitive.Point;
......
50 50

  
51 51
  }
52 52

  
53
  public Geometry drawOperation(java.awt.Point mousePosition) {
53
  public Geometry drawOperation(Point2D mousePosition) {
54 54
    // TODO Auto-generated method stub
55 55
    return null;
56 56
  }
......
65 65

  
66 66
  }
67 67

  
68
  public boolean isValidValue(EditingServiceParameter param, Object value) {
68
  private boolean isValidValue(EditingServiceParameter param, Object value) {
69 69
    // TODO Auto-generated method stub
70
    return false;
70
    return true;
71 71
  }
72 72

  
73 73
  public EditingServiceParameter getNextParameter() {
......
77 77
    return null;
78 78
  }
79 79

  
80
  public Set<EditingServiceParameter> getParameters() {
80
  public List<EditingServiceParameter> getParameters() {
81 81
    // TODO Auto-generated method stub
82
    return values.keySet();
82
    return null;
83 83
  }
84 84

  
85 85
  public void setValueParameter(EditingServiceParameter param, Object value) {
86
    // TODO Auto-generated method stub
87
    values.put(param, value);
86
    if(isValidValue(param, value)){
87
      values.put(param, value);
88
    }
88 89
  }
89 90

  
90 91
  public void finishOperation() {
91 92
    // TODO Auto-generated method stub
92 93
    Point2D value = (Point2D) values.get(point);
93
    System.out.println(value.toString());
94 94
    Point geometry = createPoint(value.getX(), value.getY(),
95 95
        layer.getFeatureStore());
96 96
    ((EditingProviderServices) getProviderServices())
......
101 101
    // TODO Auto-generated method stub
102 102
    this.values = new HashMap<EditingServiceParameter, Object>();
103 103
  }
104

  
105 104
}
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
66 66
    // TODO Auto-generated method stub
67 67
    return null;
68 68
  }
69
  
70
  public String getName() {
71
    return this.PROVIDER_NAME;
72
  }
69 73

  
70 74
}
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.insertpoint/pom.xml
6 6
    <version>1.0.0-SNAPSHOT</version>
7 7
  </parent>
8 8
  <artifactId>org.gvsig.vectorediting.lib.prov.insertpoint</artifactId>
9
  <dependencies>
10
  	<dependency>
11
  		<groupId>org.gvsig</groupId>
12
  		<artifactId>org.gvsig.vectorediting.lib.api</artifactId>
13
  	</dependency>
14
  	<dependency>
15
  		<groupId>org.gvsig</groupId>
16
  		<artifactId>org.gvsig.vectorediting.lib.spi</artifactId>
17
  	</dependency>
18
  </dependencies>
19 9
</project>
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
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.mapcontext.layers.vectorial.FLyrVect;
17
import org.gvsig.tools.dynobject.DynObject;
18
import org.gvsig.tools.service.spi.ProviderServices;
19
import org.gvsig.vectorediting.lib.api.EditingServiceParameter;
20
import org.gvsig.vectorediting.lib.spi.AbstractEditingProvider;
21
import org.gvsig.vectorediting.lib.spi.DefaultEditingServiceParameter;
22
import org.gvsig.vectorediting.lib.spi.EditingProvider;
23
import org.gvsig.vectorediting.lib.spi.EditingProviderFactory;
24
import org.gvsig.vectorediting.lib.spi.EditingProviderServices;
25

  
26
public class Circle2PEditingProvider extends AbstractEditingProvider implements
27
    EditingProvider {
28

  
29
  private final static String PROVIDER_NAME = "Circle2P";
30

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

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

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

  
41
  private Map<EditingServiceParameter, Object> values;
42

  
43
  private FLyrVect layer;
44

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

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

  
59
    return null;
60

  
61
  }
62

  
63
  public EditingServiceParameter getNextParameter() {
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 stopEditingAndSave() {
74
    // TODO Auto-generated method stub
75

  
76
  }
77

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

  
81
  }
82

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

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

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

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

  
109
  }
110

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

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

  
119
}
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
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 org.gvsig.tools.ToolsLocator;
10
import org.gvsig.tools.dynobject.DynClass;
11
import org.gvsig.tools.dynobject.DynObject;
12
import org.gvsig.tools.service.spi.AbstractProviderFactory;
13
import org.gvsig.tools.service.spi.Provider;
14
import org.gvsig.tools.service.spi.ProviderServices;
15
import org.gvsig.vectorediting.lib.api.EditingServiceInfo;
16
import org.gvsig.vectorediting.lib.api.EditingServiceParameter;
17
import org.gvsig.vectorediting.lib.spi.EditingProviderFactory;
18

  
19

  
20
public class Circle2PEditingProviderFactory extends AbstractProviderFactory
21
    implements EditingProviderFactory {
22
  
23
  public static final String PROVIDER_NAME = "Circle2P";
24

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

  
27
  public static final String PROVIDER_NAME_PARAMS_DESCRIPTION = "";
28
  
29
  private DynClass dynclass;
30

  
31
  public void initialize() {
32
    dynclass = ToolsLocator.getDynObjectManager().createDynClass(
33
        PROVIDER_NAME_PARAMS, PROVIDER_NAME_PARAMS_DESCRIPTION);
34

  
35
    dynclass.addDynFieldString(PROVIDER_NAME_FIELD);
36
    dynclass.addDynFieldObject(LAYER_FIELD);
37

  
38
  }
39

  
40
  public EditingServiceInfo getServiceInfo() {
41
    // TODO Auto-generated method stub
42
    return null;
43
  }
44

  
45
  public EditingServiceParameter getServiceParameterInfo() {
46
    // TODO Auto-generated method stub
47
    return null;
48
  }
49

  
50
  @Override
51
  protected Provider doCreate(DynObject parameters, ProviderServices services) {
52
    return new Circle2PEditingProvider(services,parameters);
53
  }
54
  
55
  public DynObject createParameters() {
56
    DynObject dynobject = ToolsLocator.getDynObjectManager().createDynObject(
57
        dynclass);
58

  
59
    dynobject.setDynValue(PROVIDER_NAME_FIELD, PROVIDER_NAME);
60
    return dynobject;
61
  }
62

  
63
  @Override
64
  protected DynClass createParametersDynClass() {
65
    return null;
66
  }
67
  
68
  public String getName() {
69
    return this.PROVIDER_NAME;
70
  }
71

  
72

  
73
}
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.circle2P/pom.xml
1
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
2
  <modelVersion>4.0.0</modelVersion>
3
  <parent>
4
    <groupId>org.gvsig</groupId>
5
    <artifactId>org.gvsig.vectorediting.lib.prov</artifactId>
6
    <version>1.0.0-SNAPSHOT</version>
7
  </parent>
8
  <artifactId>org.gvsig.vectorediting.lib.prov.circle2P</artifactId>
9
  <name>org.gvsig.vectorediting.lib.prov.circle2P</name>
10
</project>
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/pom.xml
10 10
	<packaging>pom</packaging>
11 11
	<modules>
12 12
		<module>org.gvsig.vectorediting.lib.prov.insertpoint</module>
13
		<module>org.gvsig.vectorediting.lib.prov.circle2P</module>
13 14
	</modules>
15
	<dependencies>
16
		<dependency>
17
			<groupId>org.gvsig</groupId>
18
			<artifactId>org.gvsig.vectorediting.lib.api</artifactId>
19
		</dependency>
20
		<dependency>
21
			<groupId>org.gvsig</groupId>
22
			<artifactId>org.gvsig.vectorediting.lib.spi</artifactId>
23
		</dependency>
24
	</dependencies>
14 25
</project>
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.api/src/main/java/org/gvsig/vectorediting/lib/api/EditingService.java
6 6
 */
7 7
package org.gvsig.vectorediting.lib.api;
8 8

  
9
import java.awt.Point;
10
import java.util.Set;
9
import java.awt.geom.Point2D;
10
import java.util.List;
11 11

  
12 12
import org.gvsig.fmap.geom.Geometry;
13 13
import org.gvsig.tools.service.Service;
......
19 19
   * @param mousePosition
20 20
   * @return
21 21
   */
22
  public Geometry drawOperation(Point mousePosition);
22
  public Geometry drawOperation(Point2D mousePosition);
23 23
  
24 24
  /**
25 25
   * 
26 26
   * @return
27 27
   */
28
  public Set<EditingServiceParameter> getParameters();
28
  public List<EditingServiceParameter> getParameters();
29 29
  
30 30
  /**
31 31
   * 
......
54 54
   * 
55 55
   */
56 56
  public void start();
57

  
57 58
}
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.spi/src/main/java/org/gvsig/vectorediting/lib/spi/EditingProvider.java
6 6
 */
7 7
package org.gvsig.vectorediting.lib.spi;
8 8

  
9
import java.awt.Point;
10
import java.util.Set;
9
import java.awt.geom.Point2D;
10
import java.util.List;
11 11

  
12 12
import org.gvsig.fmap.geom.Geometry;
13 13
import org.gvsig.tools.service.spi.Provider;
......
27 27
   * @param mousePosition
28 28
   * @return
29 29
   */
30
  public Geometry drawOperation(Point mousePosition);
30
  public Geometry drawOperation(Point2D mousePosition);
31 31
  
32 32
  /**
33 33
   * 
......
43 43
   * 
44 44
   * @return
45 45
   */
46
  public Set<EditingServiceParameter> getParameters();
46
  public List<EditingServiceParameter> getParameters();
47 47
  
48 48
  /**
49 49
   * 
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.spi/src/main/java/org/gvsig/vectorediting/lib/spi/AbstractEditingProvider.java
6 6
 */
7 7
package org.gvsig.vectorediting.lib.spi;
8 8

  
9
import java.util.Set;
9
import java.awt.geom.Point2D;
10 10

  
11 11
import org.gvsig.fmap.dal.exception.DataException;
12 12
import org.gvsig.fmap.dal.feature.FeatureStore;
......
16 16
import org.gvsig.fmap.geom.Geometry.TYPES;
17 17
import org.gvsig.fmap.geom.GeometryLocator;
18 18
import org.gvsig.fmap.geom.GeometryManager;
19
import org.gvsig.fmap.geom.primitive.Circle;
19 20
import org.gvsig.fmap.geom.primitive.Point;
20 21
import org.gvsig.tools.service.spi.AbstractProvider;
21 22
import org.gvsig.tools.service.spi.ProviderServices;
22
import org.gvsig.vectorediting.lib.api.EditingServiceParameter;
23 23
import org.slf4j.Logger;
24 24
import org.slf4j.LoggerFactory;
25 25

  
......
33 33

  
34 34
  public AbstractEditingProvider(ProviderServices providerServices) {
35 35
    super(providerServices);
36
    // TODO Auto-generated constructor stub
37 36
  }
38

  
39
  public void setProviderServices(ProviderServices services) {
40
    // TODO Auto-generated method stub
41

  
37
  
38
  /**
39
   * Create a circle from a GeneralPath. If there is an
40
   * error return <code>null</code> and add the error
41
   * to the log
42
   * 
43
   * @param p1
44
   * @param p2
45
   * @return
46
   *         The circle
47
   */
48
  protected Circle createCircle(Point2D p1, Point2D p2, FeatureStore featureStore) {
49
      Point centro = createPoint(p1.getX(),p1.getY(), featureStore);
50
      Point radio = createPoint(p2.getX(),p2.getY(), featureStore);
51
      return createCircle(centro, radio, featureStore);
42 52
  }
43 53

  
44
  public EditingServiceParameter getNextParameter() {
45
    // TODO Auto-generated method stub
46
    return null;
54
  /**
55
   * Create a circle. If there is an
56
   * error return <code>null</code> and add the error
57
   * to the log
58
   * 
59
   * @param p1
60
   * @param p2
61
   * @return
62
   *         The circle
63
   */
64
  protected Circle createCircle(Point p1, Point p2, FeatureStore featureStore) {
65
      Circle circle = null;
66
      try {
67
          circle = (Circle) geomManager.create(TYPES.CIRCLE, getSubType(featureStore));
68
          circle.setPoints(p1, p2);
69
      } catch (org.gvsig.fmap.geom.exception.CreateGeometryException e) {
70
          LOG.error("Error creating circle with p1=" + p1 + " p2=" + p2,
71
              new CreateGeometryException(TYPES.CIRCLE, getSubType(featureStore), e));
72
      }
73
      return circle;
47 74
  }
48 75

  
49
  public Geometry drawOperation(Point mousePosition) {
50
    // TODO Auto-generated method stub
51
    return null;
52
  }
53

  
54
  public void stopEditingAndSave() {
55
    // TODO Auto-generated method stub
56

  
57
  }
58

  
59
  public void stopEditingAndDiscard() {
60
    // TODO Auto-generated method stub
61

  
62
  }
63

  
64
  public boolean isValidValue(EditingServiceParameter param, Object value) {
65
    // TODO Auto-generated method stub
66
    return false;
67
  }
68

  
69
  public Set<EditingServiceParameter> getParameters() {
70
    // TODO Auto-generated method stub
71
    return null;
72
  }
73

  
74
  public void setValueParameter(EditingServiceParameter param, Object value) {
75
    // TODO Auto-generated method stub
76

  
77
  }
78

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

  
82
  }
83

  
84
  public void start() {
85
    // TODO Auto-generated method stub
86

  
87
  }
88

  
89 76
  /**
90 77
   * Create point. If there is an
91 78
   * error return <code>null</code> and add the error

Also available in: Unified diff