From fae5b8bcdad5b57885545e8f10187b75f0d08e29 Mon Sep 17 00:00:00 2001 From: ramollia <@> Date: Fri, 3 Oct 2025 22:34:26 +0200 Subject: [PATCH] added: toggle --- .../java/org/toop/app/layer/Container.java | 36 +++++++++++++++++++ .../toop/app/layer/layers/SelectionLayer.java | 10 ++++++ app/src/main/resources/assets/style/app.css | 4 +-- 3 files changed, 48 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/org/toop/app/layer/Container.java b/app/src/main/java/org/toop/app/layer/Container.java index ed4b75e..5ec1bd3 100644 --- a/app/src/main/java/org/toop/app/layer/Container.java +++ b/app/src/main/java/org/toop/app/layer/Container.java @@ -3,13 +3,18 @@ package org.toop.app.layer; import org.toop.app.events.AppEvents; import org.toop.framework.eventbus.GlobalEventBus; +import javafx.beans.property.BooleanProperty; +import javafx.beans.property.SimpleBooleanProperty; import javafx.scene.control.Button; import javafx.scene.layout.HBox; +import javafx.scene.control.Label; import javafx.scene.layout.Pane; import javafx.scene.layout.Region; import javafx.scene.layout.VBox; import javafx.scene.text.Text; +import java.util.function.Consumer; + public final class Container { public enum Type { VERTICAL, HORIZONTAL, @@ -82,5 +87,36 @@ public final class Container { return addButton("button", x, runnable); } + public Label addToggle(String cssClass, String unChecked, String checked, Consumer consumer) { + final Label element = new Label(unChecked); + element.getStyleClass().add(cssClass); + + final BooleanProperty selected = new SimpleBooleanProperty(false); + + element.setOnMouseEntered(_ -> { + GlobalEventBus.post(new AppEvents.OnNodeHover()); + }); + + element.setOnMouseClicked(_ -> { + GlobalEventBus.post(new AppEvents.OnNodeClick()); + selected.set(!selected.get()); + + if (selected.get()) { + element.setText(checked); + } else { + element.setText(unChecked); + } + + consumer.accept(selected.get()); + }); + + container.getChildren().addLast(element); + return element; + } + + public Label addToggle(String unChecked, String checked, Consumer consumer) { + return addToggle("toggle", unChecked, checked, consumer); + } + public Pane getContainer() { return container; } } \ No newline at end of file diff --git a/app/src/main/java/org/toop/app/layer/layers/SelectionLayer.java b/app/src/main/java/org/toop/app/layer/layers/SelectionLayer.java index 13d9d32..a7d8f9d 100644 --- a/app/src/main/java/org/toop/app/layer/layers/SelectionLayer.java +++ b/app/src/main/java/org/toop/app/layer/layers/SelectionLayer.java @@ -11,9 +11,19 @@ public class SelectionLayer extends Layer { protected SelectionLayer(GameType type) { super("selection.css"); + final Container player1Container = Container.create(Container.Type.HORIZONTAL, 5); + player1Container.addToggle("test","other test", (checked) -> { + if (checked) { + System.out.println("Checked"); + } else { + System.out.println("Un checked"); + } + }); + final Container controlContainer = Container.create(Container.Type.VERTICAL, 5); controlContainer.addButton("Back", () -> { App.activate(new MainLayer()); }); + addContainer(player1Container, Pos.TOP_LEFT, 2, 2); addContainer(controlContainer, Pos.BOTTOM_LEFT, 2, -2); } } \ No newline at end of file diff --git a/app/src/main/resources/assets/style/app.css b/app/src/main/resources/assets/style/app.css index f737ece..73474dc 100644 --- a/app/src/main/resources/assets/style/app.css +++ b/app/src/main/resources/assets/style/app.css @@ -20,7 +20,7 @@ -fx-font-size: 24px; } -.button { +.button, .toggle { -fx-padding: 10; -fx-background-color: transparent; @@ -29,7 +29,7 @@ -fx-transition: all 0.3s ease-in-out; } -.button:hover { +.button:hover, .toggle:hover { -fx-cursor: hand; -fx-scale-x: 1.1;