// JOSM tag2link plugin. // Copyright (C) 2011-2012 Don-vip & FrViPofm // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see <http://www.gnu.org/licenses/>. package org.openstreetmap.josm.plugins.tag2link.listeners; import java.util.ArrayList; import java.util.List; import javax.swing.JMenuItem; import javax.swing.JPopupMenu; import javax.swing.event.PopupMenuEvent; import javax.swing.event.PopupMenuListener; import org.openstreetmap.josm.actions.JosmAction; import org.openstreetmap.josm.gui.MapFrame; import org.openstreetmap.josm.plugins.tag2link.action.OpenLinkAction; import org.openstreetmap.josm.plugins.tag2link.action.OpenMailAction; import org.openstreetmap.josm.plugins.tag2link.data.Link; public abstract class AbstractPopupListener implements PopupMenuListener { protected final MapFrame frame; protected final List<JMenuItem> itemList; protected AbstractPopupListener(MapFrame frame) { this.frame = frame; this.itemList = new ArrayList<>(); } @Override public void popupMenuWillBecomeInvisible(PopupMenuEvent e) { JPopupMenu popup = (JPopupMenu) e.getSource(); for (JMenuItem item : itemList) { popup.remove(item); } itemList.clear(); } @Override public void popupMenuCanceled(PopupMenuEvent e) { } protected void addLink(JPopupMenu popup, Link link) { JosmAction action = null; if (link.url.matches("mailto:.*")) { action = new OpenMailAction(link); } else { action = new OpenLinkAction(link); } itemList.add(popup.add(action)); } }