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.Component;
007import java.awt.event.ActionEvent;
008import java.util.List;
009
010import javax.swing.AbstractAction;
011import javax.swing.JCheckBoxMenuItem;
012
013import org.openstreetmap.josm.gui.layer.AbstractTileSourceLayer;
014import org.openstreetmap.josm.gui.layer.Layer;
015import org.openstreetmap.josm.gui.layer.Layer.LayerAction;
016
017/**
018 * Show tile errors.
019 * @since 11950 (extracted from {@link AbstractTileSourceLayer})
020 */
021public class ShowErrorsAction extends AbstractAction implements LayerAction {
022
023    private final AbstractTileSourceLayer<?> layer;
024
025    /**
026     * Constructs a new {@code ShowErrorsAction}.
027     * @param layer imagery layer
028     */
029    public ShowErrorsAction(AbstractTileSourceLayer<?> layer) {
030        super(tr("Show errors"));
031        this.layer = layer;
032    }
033
034    @Override
035    public void actionPerformed(ActionEvent ae) {
036        TileSourceDisplaySettings settings = layer.getDisplaySettings();
037        settings.setShowErrors(!settings.isShowErrors());
038    }
039
040    @Override
041    public Component createMenuComponent() {
042        JCheckBoxMenuItem item = new JCheckBoxMenuItem(this);
043        item.setSelected(layer.getDisplaySettings().isShowErrors());
044        return item;
045    }
046
047    @Override
048    public boolean supportLayers(List<Layer> layers) {
049        return AbstractTileSourceLayer.actionSupportLayers(layers);
050    }
051}