diff --git a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java index 4a4468d3159e874ae5d2ec9b7a7538f3082eb861..1f22e8a009f5d727ee47fbb9a57377ebe1631963 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java +++ b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadView.java @@ -92,7 +92,7 @@ public class DesktopPadView implements IPadView { infoBox = new PadHBox(5); - preview = new HBox(); + preview = PadHBox.deepStyled(STYLE_CLASS_PAD_TITLE, STYLE_CLASS_PAD_TITLE_INDEX); HBox.setHgrow(preview, Priority.ALWAYS); VBox.setVgrow(preview, Priority.ALWAYS); @@ -148,8 +148,6 @@ public class DesktopPadView implements IPadView { previewContent = connect.getPadContentPreview(pad, preview); Node node = previewContent.getNode(); - node.getStyleClass().addAll("pad-title", "pad" + pad.getPadIndex() + "-title"); - // Copy Pseudoclasses for (PseudoClass pseudoClass : superRoot.getPseudoClassStates()) { node.pseudoClassStateChanged(pseudoClass, true); @@ -163,11 +161,6 @@ public class DesktopPadView implements IPadView { } } EmptyPadView view = new EmptyPadView(preview); - if (pad != null) { - view.getStyleClass().addAll("pad-title", "pad" + pad.getPadIndex() + "-title"); - } else { - view.getStyleClass().addAll("pad-title"); - } preview.getChildren().setAll(view); } @@ -195,10 +188,6 @@ public class DesktopPadView implements IPadView { this.indexLabel.setText(text); } - ProgressBar getPlayBar() { - return playBar; - } - @Override public void pseudoClassState(PseudoClass pseudoClass, boolean active) { NodeWalker.getAllNodes(getRootNode()) @@ -247,8 +236,7 @@ public class DesktopPadView implements IPadView { triggerLabel.setVisible(hasTriggerItems); } - void - setTime(String time) { + void setTime(String time) { if (time == null) { timeLabel.setText(""); } else { @@ -295,8 +283,6 @@ public class DesktopPadView implements IPadView { @Override public void applyStyleClasses(PadIndex index) { - preview.getChildren().forEach(i -> i.getStyleClass().addAll("pad-title", "pad" + index + "-title")); - NodeWalker.getAllNodes(getRootNode()) .stream() .filter(node -> node instanceof PadIndexable) @@ -305,8 +291,6 @@ public class DesktopPadView implements IPadView { @Override public void removeStyleClasses() { - preview.getChildren().forEach(i -> i.getStyleClass().removeIf(c -> c.startsWith("pad"))); - NodeWalker.getAllNodes(getRootNode()) .stream() .filter(node -> node instanceof PadIndexable) diff --git a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java index 2c1973d80cd16a167511c4e3f0f371e6fa16e899..75cabd29dc71b2b324f49c3d25d6d0da935b0390 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java +++ b/PlayWall/src/main/java/de/tobias/playpad/layout/desktop/pad/DesktopPadViewController.java @@ -326,7 +326,7 @@ public class DesktopPadViewController implements IPadViewController, EventHandle padView.getSettingsButton().setDisable(true); } - // Alles Desktivieren, wenn nicht Play Mode + // Alles Deaktivieren, wenn nicht Play Mode if (connect.getEditMode() != DesktopEditMode.PLAY) { padView.getPlayButton().setDisable(true); padView.getPauseButton().setDisable(true); diff --git a/PlayWall/src/main/java/de/tobias/playpad/view/pad/PadHBox.java b/PlayWall/src/main/java/de/tobias/playpad/view/pad/PadHBox.java index d82de13a2314ef70b0bf4add883442ea9249ebb1..3e0c2cdf37be559da5436023d84f375f701aa7e1 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/view/pad/PadHBox.java +++ b/PlayWall/src/main/java/de/tobias/playpad/view/pad/PadHBox.java @@ -1,17 +1,46 @@ package de.tobias.playpad.view.pad; import de.tobias.playpad.project.page.PadIndex; +import javafx.beans.InvalidationListener; import javafx.beans.property.ObjectProperty; import javafx.beans.property.SimpleObjectProperty; +import javafx.scene.Node; import javafx.scene.layout.HBox; +import java.util.LinkedList; +import java.util.List; + public class PadHBox extends HBox implements PadIndexable { private final ObjectProperty<PadIndex> indexProperty; + private final List<StyleIndexListener> styleListeners = new LinkedList<>(); + + public static PadHBox deepStyled(String... styleClasses) { + PadHBox padHBox = new PadHBox(styleClasses); + + padHBox.getChildren().addListener((InvalidationListener) observable -> { + for (StyleIndexListener listener : padHBox.styleListeners) { + padHBox.indexProperty.removeListener(listener); + } + + padHBox.styleListeners.clear(); + + for (Node child : padHBox.getChildren()) { + StyleIndexListener listener = new StyleIndexListener(child, styleClasses); + padHBox.indexProperty.addListener(listener); + padHBox.styleListeners.add(listener); + + listener.changed(padHBox.indexProperty, null, padHBox.indexProperty.get()); + } + }); + + return padHBox; + } public PadHBox(String... styleClasses) { this(0, styleClasses); } + public PadHBox(double spacing, String... styleClasses) { super(spacing); indexProperty = new SimpleObjectProperty<>(); diff --git a/PlayWall/src/main/java/de/tobias/playpad/view/pad/PadVBox.java b/PlayWall/src/main/java/de/tobias/playpad/view/pad/PadVBox.java index dc4e140b700bdb5952b1b3a995a5a6340bc6736c..33d999dc7349e03010453853977619ba086e468d 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/view/pad/PadVBox.java +++ b/PlayWall/src/main/java/de/tobias/playpad/view/pad/PadVBox.java @@ -12,6 +12,7 @@ public class PadVBox extends VBox implements PadIndexable { public PadVBox(String... styleClasses) { this(0, styleClasses); } + public PadVBox(double spacing, String... styleClasses) { super(spacing); indexProperty = new SimpleObjectProperty<>();