source: josm/trunk/src/org/openstreetmap/josm/gui/util/AbstractTag2LinkPopupListener.java@ 15692

Last change on this file since 15692 was 15692, checked in by Don-vip, 4 years ago

see #18172 - compare ELI and JOSM categories + fix missed @since xxx

File size: 1.2 KB
Line 
1// License: GPL. For details, see LICENSE file.
2package org.openstreetmap.josm.gui.util;
3
4import java.awt.Component;
5import java.util.ArrayList;
6import java.util.List;
7
8import javax.swing.JPopupMenu;
9import javax.swing.event.PopupMenuEvent;
10import javax.swing.event.PopupMenuListener;
11
12/**
13 * A popup listener which adds web links based on tags of OSM primitives.
14 *
15 * @since 15673
16 */
17public abstract class AbstractTag2LinkPopupListener implements PopupMenuListener {
18
19 private final List<Component> itemList;
20
21 protected AbstractTag2LinkPopupListener() {
22 this.itemList = new ArrayList<>();
23 }
24
25 @Override
26 public void popupMenuWillBecomeInvisible(PopupMenuEvent e) {
27 JPopupMenu popup = (JPopupMenu) e.getSource();
28 itemList.forEach(popup::remove);
29 itemList.clear();
30 }
31
32 @Override
33 public void popupMenuCanceled(PopupMenuEvent e) {
34 }
35
36 protected void addLinks(JPopupMenu popup, String key, String value) {
37 Tag2Link.getLinksForTag(key, value, (name, url) -> {
38 if (itemList.isEmpty()) {
39 itemList.add(popup.add(new JPopupMenu.Separator()));
40 }
41
42 itemList.add(popup.add(new OpenBrowserAction(name, url)));
43 });
44 }
45}
Note: See TracBrowser for help on using the repository browser.