From 73e78336649b438285ea921f5cb4d6329164e0a8 Mon Sep 17 00:00:00 2001 From: tobias <thinkdifferent055@gmail.com> Date: Sun, 12 Dec 2021 22:09:47 +0100 Subject: [PATCH] Throw error for multiple cart actions in settings view --- .../actions/CartActionTypeViewController.java | 28 +++++++++++-------- .../actions/CartActionViewController.java | 1 - 2 files changed, 17 insertions(+), 12 deletions(-) diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/actions/CartActionTypeViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/actions/CartActionTypeViewController.java index da08e59d..ee1dda92 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/actions/CartActionTypeViewController.java +++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/actions/CartActionTypeViewController.java @@ -17,7 +17,9 @@ import javafx.scene.control.ToggleGroup; import javafx.scene.layout.*; import org.controlsfx.control.SegmentedButton; +import java.util.Arrays; import java.util.List; +import java.util.stream.Collectors; /** * Diese View ist die Basis für die Einstellunge für eine CartAction. Dabei enthällt diese View ein Grid aus Buttons (Carts), eine @@ -44,7 +46,7 @@ public class CartActionTypeViewController extends NVC { public CartActionTypeViewController(Mapping mapping, IMappingTabViewController parentController, String actionType) { - this(mapping, parentController, actionType,null); + this(mapping, parentController, actionType, null); } public CartActionTypeViewController(Mapping mapping, IMappingTabViewController parentController, String actionType, AbstractActionViewController actionViewController) { @@ -113,17 +115,21 @@ public class CartActionTypeViewController extends NVC { int currentY = data[1]; try { - List<Action> cartActions = mapping.getActionsForType(actionType); - for (Action action : cartActions) { - if (CartAction.getX(action) == currentX && CartAction.getY(action) == currentY) { - if (actionViewController != null) { - cartActionContainer.getChildren().setAll(actionViewController.getParent()); - cartActionContainer.setVisible(true); - actionViewController.setCartAction(action); - } - parentController.showMapperFor(action); - } + final List<Action> cartActions = mapping.getActionsForType(actionType).stream() + .filter(action -> CartAction.getX(action) == currentX && CartAction.getY(action) == currentY) + .collect(Collectors.toList()); + + if (cartActions.size() > 1) { + throw new IllegalArgumentException("Only one action allowed per pad. Currently " + cartActions.size() + " are registered for pad coordinate " + Arrays.toString(data)); + } + + final Action action = cartActions.get(0); + if (actionViewController != null) { + cartActionContainer.getChildren().setAll(actionViewController.getParent()); + cartActionContainer.setVisible(true); + actionViewController.setCartAction(action); } + parentController.showMapperFor(action); } catch (NoSuchComponentException e) { Logger.error(e); } diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/actions/CartActionViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/actions/CartActionViewController.java index 737251c6..e3fe4664 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/actions/CartActionViewController.java +++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/actions/CartActionViewController.java @@ -1,7 +1,6 @@ package de.tobias.playpad.viewcontroller.actions; import de.thecodelabs.midi.action.Action; -import de.thecodelabs.utils.ui.NVC; import de.thecodelabs.utils.util.Localization; import de.tobias.playpad.Strings; import de.tobias.playpad.action.actions.CartAction; -- GitLab