Fix destroy method and use a stream to see if an entry is present

Signed-off-by: Taylor Smock <taylor.smock@kaart.com>
pull/1/head
Taylor Smock 2019-10-29 13:11:07 -06:00
rodzic f3035d89f2
commit c23c1fd193
Nie znaleziono w bazie danych klucza dla tego podpisu
ID klucza GPG: 625F6A74A3E4311A
1 zmienionych plików z 5 dodań i 11 usunięć

Wyświetl plik

@ -60,15 +60,9 @@ public final class MapWithAIPlugin extends Plugin implements Destroyable {
final JMenu dataMenu = MainApplication.getMenu().dataMenu;
for (final Entry<Class<? extends JosmAction>, 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<Action, Component> actions = Arrays.asList(dataMenu.getComponents()).stream()
.filter(component -> component instanceof JMenuItem).map(component -> (JMenuItem) component)
final Map<Action, Component> 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, Component> action : actions.entrySet()) {