From 023e4e377a9a5ffce2d32868f694e71566926929 Mon Sep 17 00:00:00 2001 From: tobias <thinkdifferent055@gmail.com> Date: Mon, 20 Dec 2021 21:16:41 +0100 Subject: [PATCH] Only show available trigger points --- .../pad/TriggerPadTabViewController.java | 8 +++--- .../tobias/playpad/tigger/TriggerPoint.java | 25 +++++++++++++++---- 2 files changed, 25 insertions(+), 8 deletions(-) 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 d9e1d8fc..a55c2346 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 175f1517..4dc9e6f2 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); + } } -- GitLab