// License: GPL. For details, see LICENSE file. package org.openstreetmap.josm.actions; import static org.openstreetmap.josm.tools.I18n.tr; import java.awt.Component; import java.awt.event.ActionEvent; import java.util.List; import javax.swing.AbstractAction; import javax.swing.JCheckBoxMenuItem; import org.openstreetmap.josm.gui.dialogs.LayerListDialog; import org.openstreetmap.josm.gui.layer.Layer; import org.openstreetmap.josm.gui.layer.Layer.LayerAction; import org.openstreetmap.josm.gui.layer.OsmDataLayer; import org.openstreetmap.josm.tools.ImageProvider; /** * An action enabling/disabling the {@linkplain OsmDataLayer#setUploadDiscouraged(boolean) discouraged upload flag} * of the layer specified in the constructor. */ public class ToggleUploadDiscouragedLayerAction extends AbstractAction implements LayerAction { private final transient OsmDataLayer layer; /** * Constructs a new {@code ToggleUploadDiscouragedLayerAction}. * @param layer the layer for which to toggle the {@linkplain OsmDataLayer#setUploadDiscouraged(boolean) discouraged upload flag} */ public ToggleUploadDiscouragedLayerAction(OsmDataLayer layer) { super(tr("Discourage upload"), ImageProvider.get("no_upload")); this.layer = layer; setEnabled(layer.isUploadable()); } @Override public void actionPerformed(ActionEvent e) { layer.setUploadDiscouraged(!layer.isUploadDiscouraged()); LayerListDialog.getInstance().repaint(); } @Override public Component createMenuComponent() { JCheckBoxMenuItem item = new JCheckBoxMenuItem(this); item.setSelected(layer.isUploadDiscouraged() || !layer.isUploadable()); return item; } @Override public boolean supportLayers(List<Layer> layers) { return layers.size() == 1 && layers.get(0) instanceof OsmDataLayer; } }