diff --git a/PlayWall/src/main/java/de/tobias/playpad/layout/touch/pad/TouchPadView.java b/PlayWall/src/main/java/de/tobias/playpad/layout/touch/pad/TouchPadView.java index c094f0df8c0058df0096424b0d132f1bfdd4f122..0ae8de45f92ab9a27cbeb1c642ad083763efbc9d 100644 --- a/PlayWall/src/main/java/de/tobias/playpad/layout/touch/pad/TouchPadView.java +++ b/PlayWall/src/main/java/de/tobias/playpad/layout/touch/pad/TouchPadView.java @@ -18,8 +18,10 @@ import de.tobias.playpad.pad.viewcontroller.IPadViewController; import de.tobias.playpad.profile.Profile; import de.tobias.playpad.project.page.PadIndex; import de.tobias.playpad.registry.NoSuchComponentException; +import de.tobias.playpad.util.NodeWalker; import de.tobias.playpad.view.EmptyPadView; import de.tobias.playpad.view.PseudoClasses; +import de.tobias.playpad.view.pad.*; import javafx.beans.property.Property; import javafx.css.PseudoClass; import javafx.geometry.Pos; @@ -29,6 +31,8 @@ import javafx.scene.control.ProgressBar; import javafx.scene.layout.*; import javafx.scene.paint.Color; +import static de.tobias.playpad.view.pad.PadStyleClasses.*; + public class TouchPadView implements IPadView { private Label indexLabel; @@ -50,10 +54,9 @@ public class TouchPadView implements IPadView { private VBox root; private BusyView busyView; - private VBox cueInContainer; private Label cueInLayer; - private transient TouchPadViewController controller; // Reference to its controller + private final transient TouchPadViewController controller; // Reference to its controller public TouchPadView() { controller = new TouchPadViewController(this); @@ -61,31 +64,24 @@ public class TouchPadView implements IPadView { } private void setupView() { - superRoot = new StackPane(); - root = new VBox(); + superRoot = new PadStackPane(STYLE_CLASS_PAD, STYLE_CLASS_PAD_INDEX); + root = new PadVBox(STYLE_CLASS_PAD_BUTTON_ROOT); busyView = new BusyView(superRoot); - cueInLayer = new Label(); + cueInLayer = PadLabel.empty(STYLE_CLASS_PAD_CUE_IN, STYLE_CLASS_PAD_CUE_IN_INDEX); cueInLayer.prefHeightProperty().bind(root.heightProperty()); - cueInContainer = new VBox(cueInLayer); - - indexLabel = new Label(); - - loopLabel = new Label(); // Active über Visible - loopLabel.setGraphic(new FontIcon(FontAwesomeType.REPEAT)); + VBox cueInContainer = new VBox(cueInLayer); - triggerLabel = new Label(); - triggerLabel.setGraphic(new FontIcon(FontAwesomeType.EXTERNAL_LINK)); + indexLabel = PadLabel.empty(STYLE_CLASS_PAD_INFO, STYLE_CLASS_PAD_INFO_INDEX); + timeLabel = PadLabel.empty(STYLE_CLASS_PAD_INFO, STYLE_CLASS_PAD_INFO_INDEX); - errorLabel = new Label(); - errorLabel.setGraphic(new FontIcon(FontAwesomeType.WARNING)); + loopLabel = new PadLabel(new FontIcon(FontAwesomeType.REPEAT)); + triggerLabel = new PadLabel(new FontIcon(FontAwesomeType.EXTERNAL_LINK)); + errorLabel = new PadLabel(new FontIcon(FontAwesomeType.WARNING)); - timeLabel = new Label(); + infoBox = new PadHBox(5); - infoBox = new HBox(); // childern in addDefaultButton() - infoBox.setSpacing(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); @@ -93,16 +89,15 @@ public class TouchPadView implements IPadView { timeLabel.setMaxWidth(Double.MAX_VALUE); timeLabel.setAlignment(Pos.CENTER_RIGHT); - playBar = new ProgressBar(0); + playBar = new PadProgressBar(0, STYLE_CLASS_PAD_PLAYBAR, STYLE_CLASS_PAD_PLAYBAR_INDEX); playBar.prefWidthProperty().bind(root.widthProperty()); // Not Found Label notFoundLabel = new FontIcon(FontAwesomeType.EXCLAMATION_TRIANGLE); - notFoundLabel.getStyleClass().add("pad-notfound"); + notFoundLabel.getStyleClass().clear(); notFoundLabel.setOpacity(0.5); notFoundLabel.setSize(50); notFoundLabel.setMouseTransparent(true); - notFoundLabel.setVisible(false); root.getChildren().addAll(infoBox, preview, playBar); @@ -135,8 +130,6 @@ public class TouchPadView 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); @@ -150,11 +143,6 @@ public class TouchPadView 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); } @@ -188,19 +176,8 @@ public class TouchPadView implements IPadView { @Override public void pseudoClassState(PseudoClass pseudoClass, boolean active) { - superRoot.pseudoClassStateChanged(pseudoClass, active); - cueInLayer.pseudoClassStateChanged(pseudoClass, active); - indexLabel.pseudoClassStateChanged(pseudoClass, active); - timeLabel.pseudoClassStateChanged(pseudoClass, active); - loopLabel.getGraphic().pseudoClassStateChanged(pseudoClass, active); - triggerLabel.getGraphic().pseudoClassStateChanged(pseudoClass, active); - errorLabel.getGraphic().pseudoClassStateChanged(pseudoClass, active); - - if (preview != null) { - preview.getChildren().forEach(i -> i.pseudoClassStateChanged(pseudoClass, active)); - } - - playBar.pseudoClassStateChanged(pseudoClass, active); + NodeWalker.getAllNodes(getRootNode()) + .forEach(node -> node.pseudoClassStateChanged(pseudoClass, active)); } @Override @@ -247,38 +224,18 @@ public class TouchPadView implements IPadView { @Override public void applyStyleClasses(PadIndex index) { - superRoot.getStyleClass().addAll("pad", "pad" + index); - cueInLayer.getStyleClass().addAll("pad-cue-in", "pad" + index + "-cue-in"); - - indexLabel.getStyleClass().addAll("pad-index", "pad" + index + "-index", "pad-info", "pad" + index + "-info"); - timeLabel.getStyleClass().addAll("pad-time", "pad" + index + "-time", "pad-info", "pad" + index + "-info"); - loopLabel.getGraphic().getStyleClass().addAll("pad-icon", "pad" + index + "-icon"); - triggerLabel.getGraphic().getStyleClass().addAll("pad-icon", "pad" + index + "-icon"); - errorLabel.getGraphic().getStyleClass().addAll("pad-icon", "pad" + index + "-icon"); - - preview.getChildren().forEach(i -> i.getStyleClass().addAll("pad-title", "pad" + index + "-title")); - - playBar.getStyleClass().addAll("pad-playbar", "pad" + index + "-playbar"); - - root.getStyleClass().add("pad-root"); + NodeWalker.getAllNodes(getRootNode()) + .stream() + .filter(node -> node instanceof PadIndexable) + .forEach(node -> ((PadIndexable) node).setIndex(index)); } @Override public void removeStyleClasses() { - superRoot.getStyleClass().removeIf(c -> c.startsWith("pad")); - cueInLayer.getStyleClass().removeIf(c -> c.startsWith("pad")); - - indexLabel.getStyleClass().removeIf(c -> c.startsWith("pad")); - timeLabel.getStyleClass().removeIf(c -> c.startsWith("pad")); - loopLabel.getGraphic().getStyleClass().removeIf(c -> c.startsWith("pad")); - triggerLabel.getGraphic().getStyleClass().removeIf(c -> c.startsWith("pad")); - errorLabel.getGraphic().getStyleClass().removeIf(c -> c.startsWith("pad")); - - preview.getChildren().forEach(i -> i.getStyleClass().removeIf(c -> c.startsWith("pad"))); - - playBar.getStyleClass().removeIf(c -> c.startsWith("pad")); - - root.getStyleClass().remove("pad-root"); + NodeWalker.getAllNodes(getRootNode()) + .stream() + .filter(node -> node instanceof PadIndexable) + .forEach(node -> ((PadIndexable) node).setIndex(null)); } @Override