From c23c1fd193d8e6036eb659dc1ab3c3c936945ebd Mon Sep 17 00:00:00 2001 From: Taylor Smock Date: Tue, 29 Oct 2019 13:11:07 -0600 Subject: [PATCH] Fix destroy method and use a stream to see if an entry is present Signed-off-by: Taylor Smock --- .../josm/plugins/mapwithai/MapWithAIPlugin.java | 16 +++++----------- 1 file changed, 5 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/openstreetmap/josm/plugins/mapwithai/MapWithAIPlugin.java b/src/main/java/org/openstreetmap/josm/plugins/mapwithai/MapWithAIPlugin.java index d56fcb0..134aa4b 100644 --- a/src/main/java/org/openstreetmap/josm/plugins/mapwithai/MapWithAIPlugin.java +++ b/src/main/java/org/openstreetmap/josm/plugins/mapwithai/MapWithAIPlugin.java @@ -60,15 +60,9 @@ public final class MapWithAIPlugin extends Plugin implements Destroyable { final JMenu dataMenu = MainApplication.getMenu().dataMenu; for (final Entry, Boolean> entry : MENU_ENTRIES.entrySet()) { - boolean alreadyAdded = false; - for (final Component component : dataMenu.getMenuComponents()) { - if (component instanceof JMenuItem - && entry.getKey().equals(((JMenuItem) component).getAction().getClass())) { - alreadyAdded = true; - break; - } - } - if (!alreadyAdded) { + if (Arrays.asList(dataMenu.getMenuComponents()).parallelStream() + .filter(JMenuItem.class::isInstance).map(JMenuItem.class::cast) + .noneMatch(component -> entry.getKey().equals(component.getAction().getClass()))) { try { MainMenu.add(dataMenu, entry.getKey().getDeclaredConstructor().newInstance(), entry.getValue()); } catch (InstantiationException | IllegalAccessException | IllegalArgumentException @@ -127,8 +121,8 @@ public final class MapWithAIPlugin extends Plugin implements Destroyable { @Override public void destroy() { final JMenu dataMenu = MainApplication.getMenu().dataMenu; - final Map actions = Arrays.asList(dataMenu.getComponents()).stream() - .filter(component -> component instanceof JMenuItem).map(component -> (JMenuItem) component) + final Map actions = Arrays.asList(dataMenu.getMenuComponents()).stream() + .filter(JMenuItem.class::isInstance).map(JMenuItem.class::cast) .collect(Collectors.toMap(JMenuItem::getAction, component -> component)); for (final Entry action : actions.entrySet()) {