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 da08e59d72a87d0213f66478b116bb28ebba7972..ee1dda9212e66fe9acc5ab4a1916a74445d94ab1 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 737251c6fe259d64d4d058ba20ec9727d250a8cb..e3fe4664112f86babef0a24a3ce16e1f4c1c2159 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;