001// License: GPL. For details, see LICENSE file.
002package org.openstreetmap.josm.gui.layer.imagery;
003
004import static org.openstreetmap.josm.tools.I18n.tr;
005
006import java.awt.event.ActionEvent;
007
008import javax.swing.AbstractAction;
009
010import org.openstreetmap.josm.gui.PleaseWaitRunnable;
011import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
012
013/**
014 * Flush tile cache.
015 * @since 11950 (extracted from {@link AbstractTileSourceLayer})
016 */
017public class FlushTileCacheAction extends AbstractAction {
018
019    private final AbstractTileSourceLayer<?> layer;
020
021    /**
022     * Constructs a new {@code FlushTileCacheAction}.
023     * @param layer imagery layer
024     */
025    public FlushTileCacheAction(AbstractTileSourceLayer<?> layer) {
026        super(tr("Flush tile cache"));
027        this.layer = layer;
028    }
029
030    @Override
031    public void actionPerformed(ActionEvent ae) {
032        new PleaseWaitRunnable(tr("Flush tile cache")) {
033            @Override
034            protected void realRun() {
035                layer.clearTileCache();
036                layer.invalidate();
037            }
038
039            @Override
040            protected void finish() {
041                // empty - flush is instantaneous
042            }
043
044            @Override
045            protected void cancel() {
046                // empty - flush is instantaneous
047            }
048        }.run();
049    }
050}