// License: WTFPL. For details, see LICENSE file. package iodb; import static org.openstreetmap.josm.tools.I18n.tr; import java.awt.event.KeyEvent; import java.util.Collection; import java.util.LinkedList; import javax.swing.JMenu; import org.openstreetmap.josm.Main; import org.openstreetmap.josm.data.Version; import org.openstreetmap.josm.gui.preferences.ToolbarPreferences; import org.openstreetmap.josm.plugins.Plugin; import org.openstreetmap.josm.plugins.PluginInformation; /** * A plugin to request and store imagery offsets in the centralized database. * * @author Zverik * @license WTFPL */ public class ImageryOffsetPlugin extends Plugin { private GetImageryOffsetAction getAction; private StoreImageryOffsetAction storeAction; /** * Add both actions to their own menu. This creates * "Offset" menu, because "Imagery" is constantly rebuilt, * losing all changes, and other menus are either too long already, * or completely unsuitable for imagery offset actions. */ public ImageryOffsetPlugin(PluginInformation info) { super(info); getAction = new GetImageryOffsetAction(); storeAction = new StoreImageryOffsetAction(); // before 5803 imagery menu was constantly regenerated, erasing extra items // before 5729 it was regenerated only when the imagery list was modified (also bad) int version = Version.getInstance().getVersion(); JMenu offsetMenu = version < 5803 ? Main.main.menu.addMenu("Offset", tr("Offset"), KeyEvent.VK_O, 6, "help") : Main.main.menu.imageryMenu; offsetMenu.add(getAction); offsetMenu.add(storeAction); // an ugly hack to add this plugin to the toolbar if (Main.pref.getBoolean("iodb.modify.toolbar", true)) { Collection<String> toolbar = new LinkedList<>(ToolbarPreferences.getToolString()); if (!toolbar.contains("getoffset")) { toolbar.add("getoffset"); Main.pref.putCollection("toolbar", toolbar); Main.toolbar.refreshToolbarControl(); } Main.pref.put("iodb.modify.toolbar", false); } } }