Changeset 18278 in josm


Ignore:
Timestamp:
2021-10-17T06:14:05+02:00 (3 years ago)
Author:
Don-vip
Message:

fix #21430 - Fix deletion of images (patch by taylor.smock)

Location:
trunk/src/org/openstreetmap/josm
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/org/openstreetmap/josm/data/imagery/street_level/IImageEntry.java

    r18246 r18278  
    88import java.time.Instant;
    99import java.util.List;
     10
    1011import javax.imageio.IIOParam;
    1112
     
    1617 * An interface for image entries that will be shown in {@link org.openstreetmap.josm.gui.layer.geoimage.ImageDisplay}
    1718 * @author Taylor Smock
     19 * @param <I> type of image
    1820 * @since 18246
    1921 */
     
    9496
    9597    /**
     98     * Delete the image
     99     * @return {@code true} if deletion was successful
     100     * @throws UnsupportedOperationException If the implementation does not support deletion.
     101     * Use {@link #isDeleteSupported()}} to check for support.
     102     * @since 18278
     103     */
     104    default boolean delete() {
     105        throw new UnsupportedOperationException("remove is not supported for " + this.getClass().getSimpleName());
     106    }
     107
     108    /**
     109     * Check if image deletion is supported
     110     * @return {@code true} if deletion is supported
     111     * @since 18278
     112     */
     113    default boolean isDeleteSupported() {
     114        return false;
     115    }
     116
     117    /**
    96118     * Returns a display name for this entry (shown in image viewer title bar)
    97119     * @return a display name for this entry
  • trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageEntry.java

    r18246 r18278  
    2626import org.openstreetmap.josm.tools.ImageProvider;
    2727import org.openstreetmap.josm.tools.Logging;
     28import org.openstreetmap.josm.tools.Utils;
    2829
    2930/**
     
    189190        this.dataSet.removeImage(this, false);
    190191        return true;
     192    }
     193
     194    @Override
     195    public boolean isDeleteSupported() {
     196        return true;
     197    }
     198
     199    @Override
     200    public boolean delete() {
     201        return Utils.deleteFile(this.getFile());
    191202    }
    192203
  • trunk/src/org/openstreetmap/josm/gui/layer/geoimage/ImageViewerDialog.java

    r18263 r18278  
    359359                            .map(ImageEntry.class::cast).map(ImageEntry::getDataSet).distinct().collect(Collectors.toList());
    360360                    for (IImageEntry<?> delete : toDelete) {
    361                         if (delete.isRemoveSupported() && delete.remove()) {
     361                        // We have to be able to remove the image from the layer and the image from its storage location
     362                        // If either are false, then don't remove the image.
     363                        if (delete.isRemoveSupported() && delete.isDeleteSupported() && delete.remove() && delete.delete()) {
    362364                            Logging.info("File {0} deleted.", delete.getFile());
    363365                        } else {
Note: See TracChangeset for help on using the changeset viewer.