Ignore:
Timestamp:
2019-10-02T23:11:24+02:00 (5 years ago)
Author:
Don-vip
Message:

fix #12669 - Disable upload and save buttons when not needed

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/actions/SaveAction.java

    r14397 r15404  
    66
    77import java.awt.event.KeyEvent;
     8import java.beans.PropertyChangeListener;
    89import java.io.File;
    910
     
    1213import org.openstreetmap.josm.gui.layer.GpxLayer;
    1314import org.openstreetmap.josm.gui.layer.Layer;
     15import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
     16import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
     17import org.openstreetmap.josm.gui.layer.OsmDataLayer;
     18import org.openstreetmap.josm.gui.layer.SaveToFile;
    1419import org.openstreetmap.josm.tools.Shortcut;
    1520
     
    2126public final class SaveAction extends SaveActionBase {
    2227    private static SaveAction instance = new SaveAction();
     28
     29    private final PropertyChangeListener updateOnRequireSaveChange = evt -> {
     30        if (OsmDataLayer.REQUIRES_SAVE_TO_DISK_PROP.equals(evt.getPropertyName())) {
     31            updateEnabledState();
     32        }
     33    };
    2334
    2435    /**
     
    3950    }
    4051
    41     @Override public File getFile(Layer layer) {
     52    @Override
     53    protected LayerChangeAdapter buildLayerChangeAdapter() {
     54        return new LayerChangeAdapter() {
     55            @Override
     56            public void layerAdded(LayerAddEvent e) {
     57                if (e.getAddedLayer() instanceof OsmDataLayer) {
     58                    e.getAddedLayer().addPropertyChangeListener(updateOnRequireSaveChange);
     59                }
     60                super.layerAdded(e);
     61            }
     62
     63            @Override
     64            public void layerRemoving(LayerRemoveEvent e) {
     65                if (e.getRemovedLayer() instanceof OsmDataLayer) {
     66                    e.getRemovedLayer().removePropertyChangeListener(updateOnRequireSaveChange);
     67                }
     68                super.layerRemoving(e);
     69            }
     70        };
     71    }
     72
     73    @Override
     74    protected void updateEnabledState() {
     75        Layer activeLayer = getLayerManager().getActiveLayer();
     76        setEnabled(activeLayer != null && activeLayer.isSavable()
     77                && (!(activeLayer.getAssociatedFile() != null
     78                    && activeLayer instanceof SaveToFile && !((SaveToFile) activeLayer).requiresSaveToFile())));
     79    }
     80
     81    @Override
     82    public File getFile(Layer layer) {
    4283        File f = layer.getAssociatedFile();
    4384        if (f != null && !f.exists()) {
Note: See TracChangeset for help on using the changeset viewer.