Ignore:
Timestamp:
2009-12-13T19:31:06+01:00 (14 years ago)
Author:
bastiK
Message:

geoimage: usability - allow clicking on the image symbols only when in select mode

  • introduces MapModeChangeListener
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java

    r2627 r2629  
    4646import org.openstreetmap.josm.Main;
    4747import org.openstreetmap.josm.actions.RenameLayerAction;
     48import org.openstreetmap.josm.actions.mapmode.MapMode;
    4849import org.openstreetmap.josm.data.Bounds;
    4950import org.openstreetmap.josm.data.coor.CachedLatLon;
     
    5152import org.openstreetmap.josm.data.osm.visitor.BoundingXYVisitor;
    5253import org.openstreetmap.josm.gui.ExtendedDialog;
     54import org.openstreetmap.josm.gui.MapFrame;
     55import org.openstreetmap.josm.gui.MapFrame.MapModeChangeListener;
    5356import org.openstreetmap.josm.gui.MapView;
    5457import org.openstreetmap.josm.gui.PleaseWaitRunnable;
     
    646649
    647650    private MouseAdapter mouseAdapter = null;
     651    private MapModeChangeListener mapModeListener = null;
    648652
    649653    private void hook_up_mouse_events() {
     
    689693            }
    690694        };
    691         Main.map.mapView.addMouseListener(mouseAdapter);
     695
     696        mapModeListener = new MapModeChangeListener() {
     697            public void mapModeChange(MapMode oldMapMode, MapMode newMapMode) {
     698                if (newMapMode instanceof org.openstreetmap.josm.actions.mapmode.SelectAction) {
     699                    Main.map.mapView.addMouseListener(mouseAdapter);
     700                } else {
     701                    Main.map.mapView.removeMouseListener(mouseAdapter);
     702                }
     703            }
     704        };
     705
     706        Main.map.addMapModeChangeListener(mapModeListener);
     707        mapModeListener.mapModeChange(null, Main.map.mapMode);
     708
    692709        MapView.addLayerChangeListener(new LayerChangeListener() {
    693710            public void activeLayerChange(Layer oldLayer, Layer newLayer) {
    694                 if (newLayer == GeoImageLayer.this && currentPhoto >= 0) {
    695                     Main.main.map.repaint();
    696                     ImageViewerDialog.showImage(GeoImageLayer.this, data.get(currentPhoto));
     711                if (newLayer == GeoImageLayer.this) {
     712                    // only in select mode it is possible to click the images
     713                    Main.map.selectSelectTool(false);
    697714                }
    698715            }
     
    707724                    }
    708725                    Main.map.mapView.removeMouseListener(mouseAdapter);
     726                    Main.map.removeMapModeChangeListener(mapModeListener);
    709727                    currentPhoto = -1;
    710728                    data.clear();
Note: See TracChangeset for help on using the changeset viewer.