001// License: GPL. For details, see LICENSE file. 002package org.openstreetmap.josm.plugins.streetside.actions; 003 004import static org.openstreetmap.josm.tools.I18n.tr; 005 006import java.awt.event.ActionEvent; 007 008import org.openstreetmap.josm.actions.JosmAction; 009import org.openstreetmap.josm.gui.MainApplication; 010import org.openstreetmap.josm.plugins.streetside.StreetsideLayer; 011import org.openstreetmap.josm.plugins.streetside.mode.JoinMode; 012import org.openstreetmap.josm.plugins.streetside.mode.SelectMode; 013import org.openstreetmap.josm.tools.ImageProvider; 014import org.openstreetmap.josm.tools.ImageProvider.ImageSizes; 015 016/** 017 * Changes the mode of the Layer, from Select mode to Join mode and vice versa. 018 * 019 * @author nokutu 020 * 021 */ 022public class StreetsideJoinAction extends JosmAction { 023 024 private static final long serialVersionUID = -7082300908202843706L; 025 026 /** 027 * Main constructor. 028 */ 029 public StreetsideJoinAction() { 030 super(tr("Join mode"), new ImageProvider("mapmode", "mapillary-join").setSize(ImageSizes.DEFAULT), 031 tr("Join/unjoin pictures"), null, false, "mapillaryJoin", true); 032 } 033 034 @Override 035 public void actionPerformed(ActionEvent arg0) { 036 if (StreetsideLayer.getInstance().mode instanceof SelectMode) { 037 StreetsideLayer.getInstance().setMode(new JoinMode()); 038 } else { 039 StreetsideLayer.getInstance().setMode(new SelectMode()); 040 } 041 } 042 043 @Override 044 protected boolean listenToSelectionChange() { 045 return false; 046 } 047 048 /** 049 * Enabled when mapillary layer is the active layer 050 */ 051 @Override 052 protected void updateEnabledState() { 053 super.updateEnabledState(); 054 setEnabled(MainApplication.getLayerManager().getActiveLayer() instanceof StreetsideLayer); 055 } 056}