Changeset 13265 in josm for trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
- Timestamp:
- 2017-12-31T03:09:43+01:00 (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/org/openstreetmap/josm/gui/layer/geoimage/GeoImageLayer.java
r13264 r13265 63 63 import org.openstreetmap.josm.gui.layer.JumpToMarkerActions.JumpToPreviousMarker; 64 64 import org.openstreetmap.josm.gui.layer.Layer; 65 import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent; 66 import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener; 67 import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent; 68 import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent; 65 import org.openstreetmap.josm.gui.layer.MainLayerManager.ActiveLayerChangeListener; 69 66 import org.openstreetmap.josm.gui.util.GuiHelper; 70 67 import org.openstreetmap.josm.tools.ImageProvider; … … 102 99 private MouseMotionAdapter mouseMotionAdapter; 103 100 private MapModeChangeListener mapModeListener; 101 private ActiveLayerChangeListener activeLayerChangeListener; 104 102 105 103 /** Mouse position where the last image was selected. */ … … 992 990 mapModeListener.mapModeChange(null, MainApplication.getMap().mapMode); 993 991 994 MainApplication.getLayerManager().addActiveLayerChangeListener(e -> {992 activeLayerChangeListener = e -> { 995 993 if (MainApplication.getLayerManager().getActiveLayer() == this) { 996 994 // only in select mode it is possible to click the images 997 995 MainApplication.getMap().selectSelectTool(false); 998 996 } 999 }); 1000 1001 MainApplication.getLayerManager().addLayerChangeListener(new LayerChangeListener() { 1002 @Override 1003 public void layerAdded(LayerAddEvent e) { 1004 // Do nothing 1005 } 1006 1007 @Override 1008 public void layerRemoving(LayerRemoveEvent e) { 1009 if (e.getRemovedLayer() == GeoImageLayer.this) { 1010 stopLoadThumbs(); 1011 MapView mapView = MainApplication.getMap().mapView; 1012 mapView.removeMouseListener(mouseAdapter); 1013 mapView.removeMouseMotionListener(mouseMotionAdapter); 1014 MapFrame.removeMapModeChangeListener(mapModeListener); 1015 currentPhoto = -1; 1016 if (data != null) { 1017 data.clear(); 1018 } 1019 data = null; 1020 // stop listening to layer change events 1021 MainApplication.getLayerManager().removeLayerChangeListener(this); 1022 } 1023 } 1024 1025 @Override 1026 public void layerOrderChanged(LayerOrderChangeEvent e) { 1027 // Do nothing 1028 } 1029 }); 997 }; 998 MainApplication.getLayerManager().addActiveLayerChangeListener(activeLayerChangeListener); 1030 999 1031 1000 MapFrame map = MainApplication.getMap(); … … 1036 1005 1037 1006 @Override 1007 public synchronized void destroy() { 1008 super.destroy(); 1009 stopLoadThumbs(); 1010 MapView mapView = MainApplication.getMap().mapView; 1011 mapView.removeMouseListener(mouseAdapter); 1012 mapView.removeMouseMotionListener(mouseMotionAdapter); 1013 MapFrame.removeMapModeChangeListener(mapModeListener); 1014 MainApplication.getLayerManager().removeActiveLayerChangeListener(activeLayerChangeListener); 1015 currentPhoto = -1; 1016 if (data != null) { 1017 data.clear(); 1018 } 1019 data = null; 1020 } 1021 1022 @Override 1038 1023 public LayerPainter attachToMapView(MapViewEvent event) { 1039 1024 MapView.addZoomChangeListener(this); 1040 return super.attachToMapView(event); 1025 return new CompatibilityModeLayerPainter() { 1026 @Override 1027 public void detachFromMapView(MapViewEvent event) { 1028 MapView.removeZoomChangeListener(GeoImageLayer.this); 1029 } 1030 }; 1041 1031 } 1042 1032
Note:
See TracChangeset
for help on using the changeset viewer.