Exemplo n.º 1
0
  public void onFeatureAdded$vector(Event e) {

    boolean userDrawn = (this.picmode == ADD || this.picmode == SUBTRACT);
    FeatureAddedEvent ev = (FeatureAddedEvent) e;

    if (userDrawn) {
      selectionBar.idle(true);
      getVectorLayer().setEditControl("navigate");
    }

    try {

      boolean redraw = false;
      ShapeValue shape = new ShapeValue(map.getProjectionId() + " " + ev.getFeatureWKT());

      /*
       * happens when user draws too fast, especially with slow
       * browsers
       */
      if (!shape.isValid()) {
        setStatus(STATUS.INVALID_SHAPE);
        if (userModel.getRegionOfInterest() == null) getVectorLayer().clearFeatures();
        return;
      }

      if (this.picmode == ADD) {
        redraw = userModel.addRegionOfInterest(shape);
      } else if (this.picmode == SUBTRACT) {
        redraw = true;
        userModel.subtractRegionOfInterest(shape);
      }

      this.picmode = IDLE;

      if (redraw) {
        getVectorLayer().clearFeatures();
        getVectorLayer()
            .addFeature(NameGenerator.newName("sh"), userModel.getRegionOfInterest().getWKT());
      }

    } catch (ThinklabException e1) {
      throw new ThinklabRuntimeException(e1);
    }

    if (userDrawn) setStatus(STATUS.IDLE);
  }