Ticket #23417: 23417.patch

File 23417.patch, 2.4 KB (added by GerdP, 2 years ago)

disable action when last layer was removed

  • src/org/openstreetmap/josm/gui/layer/geoimage/WikimediaCommonsLoader.java

     
    1515import org.openstreetmap.josm.data.Bounds;
    1616import org.openstreetmap.josm.gui.MainApplication;
    1717import org.openstreetmap.josm.gui.PleaseWaitRunnable;
     18import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
     19import org.openstreetmap.josm.gui.layer.LayerManager.LayerChangeListener;
     20import org.openstreetmap.josm.gui.layer.LayerManager.LayerOrderChangeEvent;
     21import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
    1822import org.openstreetmap.josm.io.OsmTransferException;
    1923import org.openstreetmap.josm.tools.Logging;
    2024import org.openstreetmap.josm.tools.Mediawiki;
     
    6569     * Load images from Wikimedia Commons
    6670     * @since 18021
    6771     */
    68     public static class WikimediaCommonsLoadImagesAction extends JosmAction {
     72    public static class WikimediaCommonsLoadImagesAction extends JosmAction implements LayerChangeListener {
    6973        /**
    7074         * Constructs a new {@code WikimediaCommonsLoadImagesAction}
    7175         */
    7276        public WikimediaCommonsLoadImagesAction() {
    73             super(tr("Load images from Wikimedia Commons"), "wikimedia_commons", null, null, false);
     77            super(tr("Load images from Wikimedia Commons"), "wikimedia_commons", null, null, false, false);
     78            MainApplication.getLayerManager().addLayerChangeListener(this);
     79            initEnabledState();
    7480        }
    7581
    7682        @Override
     
    8389        protected void updateEnabledState() {
    8490            setEnabled(MainApplication.isDisplayingMapView());
    8591        }
     92
     93        @Override
     94        public void layerAdded(LayerAddEvent e) {
     95            updateEnabledState();
     96        }
     97
     98        @Override
     99        public void layerRemoving(LayerRemoveEvent e) {
     100            if (e.isLastLayer())
     101                setEnabled(false);
     102        }
     103
     104        @Override
     105        public void layerOrderChanged(LayerOrderChangeEvent e) {
     106            // not used
     107        }
     108
     109        @Override
     110        public void destroy() {
     111            MainApplication.getLayerManager().removeLayerChangeListener(this);
     112            super.destroy();
     113        }
    86114    }
    87115}