Ticket #23648: 23648-3.patch

File 23648-3.patch, 4.9 KB (added by GerdP, 22 months ago)
  • src/org/openstreetmap/josm/actions/SaveAction.java

     
    2222import org.openstreetmap.josm.gui.layer.Layer;
    2323import org.openstreetmap.josm.gui.layer.LayerManager.LayerAddEvent;
    2424import org.openstreetmap.josm.gui.layer.LayerManager.LayerRemoveEvent;
    25 import org.openstreetmap.josm.gui.layer.SaveToFile;
    26 import org.openstreetmap.josm.gui.util.GuiHelper;
    2725import org.openstreetmap.josm.spi.preferences.Config;
    2826import org.openstreetmap.josm.tools.GBC;
    2927import org.openstreetmap.josm.tools.Shortcut;
     
    8987    }
    9088
    9189    @Override
    92     protected void updateEnabledState() {
    93         Layer activeLayer = getLayerManager().getActiveLayer();
    94         boolean en = activeLayer != null
    95                 && activeLayer.isSavable() && !(activeLayer.getAssociatedFile() != null
    96                 && activeLayer instanceof SaveToFile && !((SaveToFile) activeLayer).requiresSaveToFile());
    97         GuiHelper.runInEDT(() -> setEnabled(en));
    98     }
    99 
    100     @Override
    10190    public File getFile(Layer layer) {
    10291        File f = layer.getAssociatedFile();
    10392        if (f != null && !f.exists()) {
  • src/org/openstreetmap/josm/actions/SaveActionBase.java

     
    2222import org.openstreetmap.josm.gui.io.importexport.FileExporter;
    2323import org.openstreetmap.josm.gui.layer.AbstractModifiableLayer;
    2424import org.openstreetmap.josm.gui.layer.Layer;
     25import org.openstreetmap.josm.gui.layer.SaveToFile;
    2526import org.openstreetmap.josm.gui.util.GuiHelper;
    2627import org.openstreetmap.josm.gui.widgets.AbstractFileChooser;
    2728import org.openstreetmap.josm.spi.preferences.Config;
     
    184185    @Override
    185186    protected void updateEnabledState() {
    186187        Layer activeLayer = getLayerManager().getActiveLayer();
    187         setEnabled(activeLayer != null && activeLayer.isSavable());
     188        boolean en = activeLayer != null && activeLayer.isSavable();
     189        // see #12669 and #23648
     190        if (en && this instanceof SaveAction && activeLayer instanceof SaveToFile) {
     191            en = activeLayer.getAssociatedFile() == null || ((SaveToFile) activeLayer).requiresSaveToFile();
     192        }
     193        setEnabled(en);
    188194    }
    189195
    190196    /**
  • src/org/openstreetmap/josm/actions/ToggleUploadDiscouragedLayerAction.java

     
    1111import javax.swing.AbstractAction;
    1212import javax.swing.JCheckBoxMenuItem;
    1313
     14import org.openstreetmap.josm.gui.Notification;
    1415import org.openstreetmap.josm.gui.dialogs.LayerListDialog;
    1516import org.openstreetmap.josm.gui.layer.Layer;
    1617import org.openstreetmap.josm.gui.layer.Layer.LayerAction;
    1718import org.openstreetmap.josm.gui.layer.OsmDataLayer;
     19import org.openstreetmap.josm.gui.util.GuiHelper;
    1820import org.openstreetmap.josm.tools.ImageProvider;
    1921
    2022/**
     
    3032     * @param layer the layer for which to toggle the {@linkplain OsmDataLayer#setUploadDiscouraged(boolean) discouraged upload flag}
    3133     */
    3234    public ToggleUploadDiscouragedLayerAction(OsmDataLayer layer) {
    33         super(tr("Discourage upload"));
     35        super(tr("Discourage/Encourage upload"));
    3436        new ImageProvider("no_upload").getResource().attachImageIcon(this, true);
    3537        this.layer = layer;
    3638        setEnabled(layer.isUploadable());
     
    4042    @Override
    4143    public void actionPerformed(ActionEvent e) {
    4244        layer.setUploadDiscouraged(!layer.isUploadDiscouraged());
     45        String msg = layer.isUploadDiscouraged() ? tr("Upload is discouraged") : tr("Upload is encouraged");
     46        GuiHelper.runInEDT(() -> new Notification(msg).show());
    4347        LayerListDialog.getInstance().repaint();
    4448    }
    4549
  • src/org/openstreetmap/josm/gui/layer/OsmDataLayer.java

     
    11951195        if (data.getUploadPolicy() != UploadPolicy.BLOCKED &&
    11961196                (uploadDiscouraged ^ isUploadDiscouraged())) {
    11971197            data.setUploadPolicy(uploadDiscouraged ? UploadPolicy.DISCOURAGED : UploadPolicy.NORMAL);
     1198            setRequiresSaveToFile(true);
    11981199            for (LayerStateChangeListener l : layerStateChangeListeners) {
    11991200                l.uploadDiscouragedChanged(this, uploadDiscouraged);
    12001201            }