diff --git a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/TriggerPadTabViewController.java b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/TriggerPadTabViewController.java index d9e1d8fc62dee9745734c99a475b77898a0bf5ea..a55c2346f4d9d209f04bfed7611d3d19dbc68382 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/TriggerPadTabViewController.java +++ b/PlayWall/src/main/java/de/tobias/playpad/viewcontroller/option/pad/TriggerPadTabViewController.java @@ -48,10 +48,12 @@ public class TriggerPadTabViewController extends PadSettingsTabViewController im // Sort the types for the tree view for (TriggerPoint point : TriggerPoint.values()) { - Trigger trigger = triggers.get(point); + if (point.isAvailable(pad)) { + Trigger trigger = triggers.get(point); - TreeItem<TriggerDisplayable> triggerItem = new TreeItem<>(new TriggerDisplayable(trigger)); - rootItem.getChildren().add(triggerItem); + TreeItem<TriggerDisplayable> triggerItem = new TreeItem<>(new TriggerDisplayable(trigger)); + rootItem.getChildren().add(triggerItem); + } } treeView.setRoot(rootItem); diff --git a/PlayWallCore/src/main/java/de/tobias/playpad/tigger/TriggerPoint.java b/PlayWallCore/src/main/java/de/tobias/playpad/tigger/TriggerPoint.java index 175f1517ebb0418ad0684ea6f2693853d1203fa3..4dc9e6f2155903d3a48a7ed57a399b34ecb2b0fb 100644 --- a/PlayWallCore/src/main/java/de/tobias/playpad/tigger/TriggerPoint.java +++ b/PlayWallCore/src/main/java/de/tobias/playpad/tigger/TriggerPoint.java @@ -1,22 +1,37 @@ package de.tobias.playpad.tigger; +import de.tobias.playpad.pad.Pad; +import de.tobias.playpad.pad.content.Playlistable; + +import java.util.function.Predicate; + public enum TriggerPoint { - START(true), - STOP(false), - EOF(true), - PLAYLIST_NEXT(false); + START(true, pad -> !(pad.getContent() instanceof Playlistable)), + STOP(false, pad -> !(pad.getContent() instanceof Playlistable)), + EOF(true, pad -> !(pad.getContent() instanceof Playlistable)), + PLAYLIST_NEXT(false, pad -> pad.getContent() instanceof Playlistable); /** * Defines if a trigger can be run after, before a certain event. */ private final boolean timeAppendable; + private final Predicate<Pad> availablePredicate; - TriggerPoint(boolean timeAppendable) { + TriggerPoint(boolean timeAppendable, Predicate<Pad> availablePredicate) { this.timeAppendable = timeAppendable; + this.availablePredicate = availablePredicate; } public boolean isTimeAppendable() { return timeAppendable; } + + public Predicate<Pad> getAvailablePredicate() { + return availablePredicate; + } + + public boolean isAvailable(Pad pad) { + return availablePredicate.test(pad); + } }