Revision 70

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/InsertPointEditingProvider.java
11 11

  
12 12
import org.gvsig.fmap.dal.feature.FeatureStore;
13 13
import org.gvsig.fmap.geom.primitive.Point;
14
import org.gvsig.tools.ToolsLocator;
14 15
import org.gvsig.tools.dynobject.DynObject;
16
import org.gvsig.tools.i18n.I18nManager;
15 17
import org.gvsig.tools.service.spi.ProviderServices;
16 18
import org.gvsig.vectorediting.lib.api.EditingServiceParameter;
17 19
import org.gvsig.vectorediting.lib.api.EditingServiceParameter.TYPE;
......
30 32
    implements EditingProvider {
31 33

  
32 34
  private EditingProviderServices editingProviderServices = (EditingProviderServices) getProviderServices();
35
  
36
  private I18nManager i18nManager = ToolsLocator.getI18nManager();
33 37

  
34 38
  private EditingServiceParameter point = new DefaultEditingServiceParameter(
35
      "Insert point", "Indicate a position of point", TYPE.POSITION);
39
      "Insert point", i18nManager.getTranslation("indicate_new_point"), TYPE.POSITION);
36 40

  
37 41
  private Point valuePoint;
38 42

  
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.polyline/src/main/java/org/gvsig/vectorediting/lib/prov/polyline/PolylineEditingProvider.java
25 25
import org.gvsig.fmap.geom.primitive.Point;
26 26
import org.gvsig.fmap.geom.primitive.Surface;
27 27
import org.gvsig.fmap.geom.type.GeometryType;
28
import org.gvsig.tools.ToolsLocator;
28 29
import org.gvsig.tools.dynobject.DynObject;
30
import org.gvsig.tools.i18n.I18nManager;
29 31
import org.gvsig.tools.service.spi.ProviderServices;
30 32
import org.gvsig.vectorediting.lib.api.DrawingStatus;
31 33
import org.gvsig.vectorediting.lib.api.EditingServiceParameter;
......
49 51

  
50 52
  private EditingProviderServices editingProviderServices = (EditingProviderServices) getProviderServices();
51 53

  
54
  private I18nManager i18nManager = ToolsLocator.getI18nManager();
55

  
52 56
  private EditingServiceParameter points = new DefaultEditingServiceParameter(
53
      "Polyline", "Inserts a new point.", TYPE.LIST_POSITIONS, TYPE.OPTION);
57
      "Polyline", i18nManager.getTranslation("indicates_new_point"),
58
      TYPE.LIST_POSITIONS, TYPE.OPTION);
54 59

  
55 60
  private boolean arcMode = false;
56 61

  
......
125 130
          try {
126 131

  
127 132
            lineAntPointToPoint = editingProviderServices.createLine(
128
              point.getX(), point.getY(), nextPoint.getX(), nextPoint.getY(),
129
              featureStore);
133
                point.getX(), point.getY(), nextPoint.getX(), nextPoint.getY(),
134
                featureStore);
130 135

  
131
          Double[] lineParams = getLineParams(point, nextPoint);
132
          m = lineParams[0];
133
          b = lineParams[1];
136
            Double[] lineParams = getLineParams(point, nextPoint);
137
            m = lineParams[0];
138
            b = lineParams[1];
134 139

  
135
          Point[] pointPerpendicular = getPerpendicular(antm, antb, point,
136
              featureStore);
137
          Line linePointPerpendicular = geomManager
138
              .createLine(editingProviderServices.getSubType(featureStore));
139
          linePointPerpendicular.setPoints(pointPerpendicular[0],
140
              pointPerpendicular[1]);
140
            Point[] pointPerpendicular = getPerpendicular(antm, antb, point,
141
                featureStore);
142
            Line linePointPerpendicular = geomManager
143
                .createLine(editingProviderServices.getSubType(featureStore));
144
            linePointPerpendicular.setPoints(pointPerpendicular[0],
145
                pointPerpendicular[1]);
141 146

  
142
          Point[] bisector = getPerpendicular(m, b,
143
              getMidPoint(point, nextPoint, featureStore), featureStore);
144
          Line lineBisector = geomManager.createLine(editingProviderServices
145
              .getSubType(featureStore));
146
          lineBisector.setPoints(bisector[0], bisector[1]);
147
            Point[] bisector = getPerpendicular(m, b,
148
                getMidPoint(point, nextPoint, featureStore), featureStore);
149
            Line lineBisector = geomManager.createLine(editingProviderServices
150
                .getSubType(featureStore));
151
            lineBisector.setPoints(bisector[0], bisector[1]);
147 152

  
148 153
            center = getIntersection(bisector, pointPerpendicular, featureStore);
149 154

  
......
204 209
          Arc arco = null;
205 210
          try {
206 211
            arco = editingProviderServices.createArc(center, radius,
207
              startAngle, angleExt, featureStore);
212
                startAngle, angleExt, featureStore);
208 213
          }
209 214
          catch (Exception e) {
210 215
            throw new DrawServiceException(e);
......
238 243
        }
239 244
        else {
240 245
          try {
241
          Curve geometry = editingProviderServices.createLine(point.getX(),
242
              point.getY(), nextPoint.getX(), nextPoint.getY(), featureStore);
243
          geometries.addGeometry(geometry);
246
            Curve geometry = editingProviderServices.createLine(point.getX(),
247
                point.getY(), nextPoint.getX(), nextPoint.getY(), featureStore);
248
            geometries.addGeometry(geometry);
244 249
          }
245 250
          catch (Exception e) {
246 251
            throw new DrawServiceException(e);
......
271 276

  
272 277
  public DrawingStatus draw(Point mousePosition) throws DrawServiceException {
273 278
    try {
274
    return calculatePolyline(mousePosition);
275
  }
279
      return calculatePolyline(mousePosition);
280
    }
276 281
    catch (Exception e) {
277 282
      throw new DrawServiceException(e);
278 283
    }
......
280 285

  
281 286
  public void finish() throws FinishServiceException {
282 287
    try {
283
    GeometryType storeGeomType = editingProviderServices
284
        .getGeomType(featureStore);
285
    DrawingStatus finalGeometries = calculatePolyline(null);
286
    if (storeGeomType.isTypeOf(SURFACE)) {
287
      Surface surface = geomManager.createPolygon(storeGeomType.getSubType());
288
      for (Geometry geometry : finalGeometries.getGeometries()) {
289
        surface.addVertex((Point) geometry);
290
      }
291
      surface = closeSurfaceIfNecessary(surface);
292
      editingProviderServices.insertGeometryIntoFeatureStore(surface,
293
          featureStore);
294
    }
295
    else if (storeGeomType.isTypeOf(CURVE)) {
296
      for (Geometry geometry : finalGeometries.getGeometries()) {
297
        editingProviderServices.insertGeometryIntoFeatureStore(geometry,
288
      GeometryType storeGeomType = editingProviderServices
289
          .getGeomType(featureStore);
290
      DrawingStatus finalGeometries = calculatePolyline(null);
291
      if (storeGeomType.isTypeOf(SURFACE)) {
292
        Surface surface = geomManager.createPolygon(storeGeomType.getSubType());
293
        for (Geometry geometry : finalGeometries.getGeometries()) {
294
          surface.addVertex((Point) geometry);
295
        }
296
        surface = closeSurfaceIfNecessary(surface);
297
        editingProviderServices.insertGeometryIntoFeatureStore(surface,
298 298
            featureStore);
299 299
      }
300
    }
301
    else if (storeGeomType.isTypeOf(MULTISURFACE)) {
302
      MultiSurface multiSurface;
300
      else if (storeGeomType.isTypeOf(CURVE)) {
301
        for (Geometry geometry : finalGeometries.getGeometries()) {
302
          editingProviderServices.insertGeometryIntoFeatureStore(geometry,
303
              featureStore);
304
        }
305
      }
306
      else if (storeGeomType.isTypeOf(MULTISURFACE)) {
307
        MultiSurface multiSurface;
303 308
        multiSurface = geomManager.createMultiSurface(storeGeomType
304 309
            .getSubType());
305
      Surface surface = geomManager.createPolygon(storeGeomType.getSubType());
306
      for (Geometry geometry : finalGeometries.getGeometries()) {
307
        if(geometry instanceof Curve){
308
          Curve curve = (Curve) geometry;
309
          for(int i=0; i < curve.getNumVertices(); i++){
310
            surface.addVertex((Point) curve.getVertex(i));
310
        Surface surface = geomManager.createPolygon(storeGeomType.getSubType());
311
        for (Geometry geometry : finalGeometries.getGeometries()) {
312
          if (geometry instanceof Curve) {
313
            Curve curve = (Curve) geometry;
314
            for (int i = 0; i < curve.getNumVertices(); i++) {
315
              surface.addVertex((Point) curve.getVertex(i));
316
            }
311 317
          }
312 318
        }
319
        surface = closeSurfaceIfNecessary(surface);
320
        multiSurface.addSurface(surface);
321
        editingProviderServices.insertGeometryIntoFeatureStore(multiSurface,
322
            featureStore);
313 323
      }
314
      surface = closeSurfaceIfNecessary(surface);
315
      multiSurface.addSurface(surface);
316
      editingProviderServices.insertGeometryIntoFeatureStore(multiSurface,
317
          featureStore);
318
    }
319
    else if (storeGeomType.isTypeOf(MULTICURVE)) {
320
      MultiCurve multiCurve;
321
      multiCurve = geomManager.createMultiCurve(storeGeomType.getSubType());
322
      for (Geometry geometry : finalGeometries.getGeometries()) {
323
        multiCurve.addCurve((Curve) geometry);
324
      else if (storeGeomType.isTypeOf(MULTICURVE)) {
325
        MultiCurve multiCurve;
326
        multiCurve = geomManager.createMultiCurve(storeGeomType.getSubType());
327
        for (Geometry geometry : finalGeometries.getGeometries()) {
328
          multiCurve.addCurve((Curve) geometry);
329
        }
330
        editingProviderServices.insertGeometryIntoFeatureStore(multiCurve,
331
            featureStore);
324 332
      }
325
      editingProviderServices.insertGeometryIntoFeatureStore(multiCurve,
326
          featureStore);
327 333
    }
328
  }
329 334
    catch (Exception e) {
330 335
      throw new FinishServiceException(e);
331 336
    }
......
542 547
   */
543 548
  private boolean isClose(Surface surface) {
544 549

  
545
    if(surface != null){
550
    if (surface != null) {
546 551
      Point firstPoint = surface.getVertex(0);
547
      Point lastPoint = surface.getVertex(surface.getNumVertices()-1);
548
      if(firstPoint.equals(lastPoint)){
552
      Point lastPoint = surface.getVertex(surface.getNumVertices() - 1);
553
      if (firstPoint.equals(lastPoint)) {
549 554
        return true;
550 555
      }
551 556
    }
......
553 558
  }
554 559

  
555 560
  public EditingServiceParameter next() {
556
    if( values.size() >= 2){
557
      if(arcMode){
561
    if (values.size() >= 2) {
562
      if (arcMode) {
558 563
        points
559
            .setDescription("Inserts [L] to change to line mode. Double-click to finish. Inserts new point.");
564
            .setDescription(i18nManager
565
                .getTranslation("inserts_L_to_change_to_line_mode_double_click_to_finish_indate_new_point"));
566

  
560 567
      }
561
      else{
568
      else {
562 569
        points
563
            .setDescription("Inserts [A] to change to arc mode. Double-click to finish. Inserts new point.");
570
            .setDescription(i18nManager
571
                .getTranslation("inserts_A_to_change_to_arc_mode_double_click_to_finish_indate_new_point"));
564 572
      }
565 573
    }
566 574
    return points;
......
569 577
  public void start() throws StartServiceException {
570 578
    stop();
571 579
    values = new ArrayList<MyPolyLinePoint>();
572
    
580

  
573 581
  }
574 582

  
575 583
  public void stop() {
576
    points.setDescription("Inserts a new point.");
584
    points.setDescription(i18nManager.getTranslation("indicates_new_point"));
577 585
    arcMode = false;
578 586
  }
579 587

  
......
582 590
   * @param value
583 591
   */
584 592
  private void validateAndInsertValue(EditingServiceParameter param,
585
                                      Object value) throws InvalidEntryException {
593
                                      Object value)
594
      throws InvalidEntryException {
586 595
    if (value instanceof String) {
587 596
      if (values.size() >= 2) {
588
        if(((String) value).equalsIgnoreCase("A") || ((String) value).equalsIgnoreCase("L")){
589
        if (((String) value).equalsIgnoreCase("A")) {
590
          arcMode = true;
597
        if (((String) value).equalsIgnoreCase("A")
598
            || ((String) value).equalsIgnoreCase("L")) {
599
          if (((String) value).equalsIgnoreCase("A")) {
600
            arcMode = true;
601
          }
602
          else if (((String) value).equalsIgnoreCase("L")) {
603
            arcMode = false;
604
          }
605
          if (values.size() > 0) {
606
            values.get(values.size() - 1).setArcMode(arcMode);
607
            return;
608
          }
591 609
        }
592
        else if (((String) value).equalsIgnoreCase("L")) {
593
          arcMode = false;
594
        }
595
        if (values.size() > 0) {
596
          values.get(values.size() - 1).setArcMode(arcMode);
597
          return;
598
        }
599
        } else{
610
        else {
600 611
          throw new InvalidEntryException(null);
601 612
        }
602
        
603
      } else{
604
          throw new InvalidEntryException(null);
613

  
605 614
      }
615
      else {
616
        throw new InvalidEntryException(null);
617
      }
606 618
    }
607 619
    else if (param == points && value instanceof Point) {
608 620
      values.add(new MyPolyLinePoint((Point) value, arcMode));
609 621
    }
610 622
  }
611 623

  
612
  public void value(Object value) throws InvalidEntryException{
624
  public void value(Object value) throws InvalidEntryException {
613 625
    EditingServiceParameter param = next();
614 626
    validateAndInsertValue(param, value);
615 627
  }
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.swing/org.gvsig.vectorediting.swing.impl/src/main/java/org/gvsig/vectorediting/swing/impl/DefaultEditingBehavior.java
140 140
    activeService = null;
141 141
    currentParam = null;
142 142

  
143
    showConsoleMessage("\nSeleccione una herramienta\n");
143
    showConsoleMessage("\n" + i18nManager.getTranslation("select_new_tool")+ "\n");
144 144
    // MainFrame main = PluginServices.getMainFrame();
145 145
    // main.setSelectedTool(""); We can define a default tool. I.E Zoom in.
146 146
  }
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.swing/org.gvsig.vectorediting.swing.impl/src/main/java/org/gvsig/vectorediting/swing/impl/DefaultEditingSwingManager.java
46 46

  
47 47
  private static final Logger logger = LoggerFactory
48 48
      .getLogger(EditingManager.class);
49
  
49

  
50 50
  private I18nManager i18nManager = ToolsLocator.getI18nManager();
51 51

  
52 52
  private final int CANCEL = 0;
......
129 129
  }
130 130

  
131 131
  /**
132
   * 
133 132
   * @param layer
134 133
   * @param mapControl
135 134
   * @param option
......
167 166
  }
168 167

  
169 168
  public void endEdition(FLyrVect layer, MapControl mapControl) {
170
    EditingNotificationManager editingNotificationManager = MapControlLocator
171
        .getEditingNotificationManager();
169
    if (layer.isEditing()) {
170
      EditingNotificationManager editingNotificationManager = MapControlLocator
171
          .getEditingNotificationManager();
172 172

  
173
    EditingNotification notification = editingNotificationManager
174
        .notifyObservers(this, EditingNotification.BEFORE_EXIT_EDITING_STORE,
175
            null, layer);
173
      EditingNotification notification = editingNotificationManager
174
          .notifyObservers(this, EditingNotification.BEFORE_EXIT_EDITING_STORE,
175
              null, layer);
176 176

  
177
    if (notification.isCanceled()) {
178
      logger.info("Stop edit layer '" + layer.getName()
179
          + "' canceled by somme observer.", new EndEditingException(
180
          "Stop edit layer '" + layer.getName() + "' canceled.", null));
177
      if (notification.isCanceled()) {
178
        logger.info("Stop edit layer '" + layer.getName()
179
            + "' canceled by somme observer.", new EndEditingException(
180
            "Stop edit layer '" + layer.getName() + "' canceled.", null));
181 181

  
182
    }
182
      }
183
      mapControl.getCanceldraw().setCanceled(true);
184
      int option;
185
      if (layer.isWritable()) {
186
        option = showPanelSaveOrDiscard(layer.getName());
187
      }
188
      else {
189
        option = showPanelExportOrDiscard(layer.getName());
190
      }
183 191

  
184
    int option;
185
    if (layer.isWritable()) {
186
      option = showPanelSaveOrDiscard(layer.getName());
187
    }
188
    else {
189
      option = showPanelExportOrDiscard(layer.getName());
190
    }
192
      doAction(layer, mapControl, option);
191 193

  
192
    doAction(layer, mapControl, option);
194
      editingNotificationManager.notifyObservers(this,
195
          EditingNotification.AFTER_EXIT_EDITING_STORE, null, layer);
193 196

  
194
    editingNotificationManager.notifyObservers(this,
195
        EditingNotification.AFTER_EXIT_EDITING_STORE, null, layer);
196

  
197
    }
197 198
  }
198 199

  
199 200
  private void exportLayer(FLyrVect layer, MapControl mapCotrol)
......
239 240
    mainPanel.add(lbl, cc);
240 241
    cc.gridx = 1;
241 242
    mainPanel
242
        .add(new JLabel(i18nManager.getTranslation("discard_and_loose_changes")), cc);
243
        .add(
244
            new JLabel(i18nManager.getTranslation("discard_and_loose_changes")),
245
            cc);
243 246

  
244 247
    cc.gridx = 0;
245 248
    cc.gridy = 2;
......
248 251
    mainPanel.add(lbl, cc);
249 252
    cc.gridx = 1;
250 253
    mainPanel.add(
251
        new JLabel(i18nManager.getTranslation("do_not_save_yet_stay_in_editing_mode")),
252
        cc);
254
        new JLabel(i18nManager
255
            .getTranslation("do_not_save_yet_stay_in_editing_mode")), cc);
253 256

  
254 257
    resp.add(mainPanel, BorderLayout.CENTER);
255 258
    resp.add(topLabel, BorderLayout.NORTH);
......
305 308
  }
306 309

  
307 310
  /**
308
   * 
309 311
   * @param name
310 312
   * @return
311 313
   */
......
314 316
        "       " + i18nManager.getTranslation("discard") + "       ",
315 317
        i18nManager.getTranslation("continue") };
316 318

  
317
    String question = i18nManager.getTranslation("no_existe_writer_para_este_formato_de_capa_o_no_tiene_permisos_de_escritura_los_datos_que_desea_hacer");
319
    String question = i18nManager
320
        .getTranslation("no_existe_writer_para_este_formato_de_capa_o_no_tiene_permisos_de_escritura_los_datos_que_desea_hacer");
318 321
    String firstLabel = i18nManager.getTranslation("export");
319 322
    String firstDesc = i18nManager.getTranslation("export_to_another_format");
320 323

  
......
335 338
    }
336 339
    return CANCEL;
337 340
  }
338
  
341

  
339 342
  /**
340
   * 
341 343
   * @param layerName
342 344
   * @return
343 345
   */
......
346 348
        "       " + PluginServices.getText(this, "_Descartar") + "       ",
347 349
        PluginServices.getText(this, "_Continuar") };
348 350

  
349
    String question = i18nManager.getTranslation("realmente_desea_guardar_la_capa");
351
    String question = i18nManager
352
        .getTranslation("realmente_desea_guardar_la_capa");
350 353
    question = question + " '" + layerName + "'?";
351 354
    String firstLabel = i18nManager.getTranslation("guardar");
352 355
    String firstDesc = i18nManager.getTranslation("save_changes_performed");
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.app/org.gvsig.vectorediting.app.mainplugin/src/main/resources-plugin/i18n/text.properties
11 11
discard= Descartar
12 12
discard_and_loose_changes= Descartar cambios y perder los cambios
13 13
continue= Continuar
14
do_not_save_yet_stay_in_editing_mode= No guardar los cambios y seguir en modo edici\u00f3n
14
do_not_save_yet_stay_in_editing_mode= No guardar los cambios y seguir en modo edici\u00f3n
15
indicates_new_point= Indique un nuevo punto
16
inserts_L_to_change_to_line_mode_double_click_to_finish_indate_new_point= Introduzca [L] para cambiar al modo l\u00ednea. Doble click para finalizar. Indique un nuevo punto. 
17
inserts_A_to_change_to_arc_mode_double_click_to_finish_indate_new_point= Introduzca [A] para cambiar al modo arco. Doble click para finalizar. Indique un nuevo punto.
18
select_new_tool= Seleccione una nueva herramienta
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.app/org.gvsig.vectorediting.app.mainplugin/src/main/resources-plugin/i18n/text_en.properties
12 12
discard_and_loose_changes= Discard changes and loose changes
13 13
continue= Continue
14 14
do_not_save_yet_stay_in_editing_mode= Don't save changes and continue editing 
15
indicates_new_point= Indicates new point
16
inserts_L_to_change_to_line_mode_double_click_to_finish_indate_new_point= Inserts [L] to change to line mode. Double-click to finish. Indicates new point.
17
inserts_A_to_change_to_arc_mode_double_click_to_finish_indate_new_point= Inserts [A] to change to arc mode. Double-click to finish. Indicates new point.
18
select_new_tool= Select a new tool

Also available in: Unified diff