Exemple #1
0
  @Override
  public void activeLayerChange(Layer oldLayer, Layer newLayer) {
    boolean modeChanged = false;
    if (mapMode == null || !mapMode.layerIsSupported(newLayer)) {
      MapMode newMapMode = getLastMapMode(newLayer);
      modeChanged = newMapMode != mapMode;
      if (newMapMode != null) {
        selectMapMode(
            newMapMode,
            newLayer); // it would be nice to select first supported mode when layer is first
                       // selected, but it don't work well with for example editgpx layer
      } else if (mapMode != null) {
        mapMode.exitMode(); // if new mode is null - simply exit from previous mode
      }
    }
    if (!modeChanged && mapMode != null) {
      // Let mapmodes know about new active layer
      mapMode.exitMode();
      mapMode.enterMode();
    }
    // invalidate repaint cache
    Main.map.mapView.preferenceChanged(null);

    // After all listeners notice new layer, some buttons will be disabled/enabled
    // and possibly need to be hidden/shown.
    SwingUtilities.invokeLater(
        new Runnable() {
          public void run() {
            validateToolBarsVisibility();
          }
        });
  }
 @Override
 public void exitMode() {
   super.exitMode();
   Main.map.mapView.removeMouseListener(this);
   Main.map.mapView.removeMouseMotionListener(this);
   adjustingLayer = null;
   listener.stop();
 }
Exemple #3
0
  /**
   * Another version of the selectMapMode for changing layer action. Pass newly selected layer to
   * this method.
   *
   * @param newMapMode The new mode to set.
   * @param newLayer newly selected layer
   * @return {@code true} if mode is really selected
   */
  public boolean selectMapMode(MapMode newMapMode, Layer newLayer) {
    if (newMapMode == null || !newMapMode.layerIsSupported(newLayer)) return false;

    MapMode oldMapMode = this.mapMode;
    if (newMapMode == oldMapMode) return true;
    if (oldMapMode != null) {
      oldMapMode.exitMode();
    }
    this.mapMode = newMapMode;
    newMapMode.enterMode();
    lastMapMode.put(newLayer, newMapMode);
    fireMapModeChanged(oldMapMode, newMapMode);
    return true;
  }
 @Override
 public void exitMode() {
   super.exitMode();
   Main.map.mapView.removeMouseListener(this);
 }