From c2137b3fc13ee89cfbaedd1e4c2f48101fa07a9b Mon Sep 17 00:00:00 2001 From: sowgro Date: Tue, 16 Jul 2024 17:33:03 -0400 Subject: Fix control editor and file writing for notes editor --- .../java/net/sowgro/npehero/gui/ControlEditor.java | 106 +++++++++++---------- 1 file changed, 58 insertions(+), 48 deletions(-) (limited to 'src/main/java/net/sowgro/npehero/gui/ControlEditor.java') diff --git a/src/main/java/net/sowgro/npehero/gui/ControlEditor.java b/src/main/java/net/sowgro/npehero/gui/ControlEditor.java index 637a9d8..ecd2fab 100644 --- a/src/main/java/net/sowgro/npehero/gui/ControlEditor.java +++ b/src/main/java/net/sowgro/npehero/gui/ControlEditor.java @@ -1,23 +1,28 @@ package net.sowgro.npehero.gui; +import javafx.beans.InvalidationListener; +import javafx.beans.binding.DoubleBinding; +import javafx.beans.property.Property; import javafx.beans.property.ReadOnlyObjectWrapper; import javafx.beans.property.ReadOnlyStringWrapper; import javafx.event.EventHandler; import javafx.geometry.Insets; import javafx.geometry.Pos; +import javafx.scene.Node; import javafx.scene.control.*; import javafx.scene.input.KeyCode; import javafx.scene.input.KeyEvent; import javafx.scene.input.MouseEvent; -import javafx.scene.layout.GridPane; -import javafx.scene.layout.HBox; -import javafx.scene.layout.Pane; -import javafx.scene.layout.VBox; +import javafx.scene.layout.*; +import javafx.scene.paint.Color; import net.sowgro.npehero.Driver; import net.sowgro.npehero.main.Control; import net.sowgro.npehero.main.SoundController; import org.w3c.dom.events.Event; +import java.util.List; +import java.util.Map; + public class ControlEditor extends Pane { public ControlEditor() { @@ -27,8 +32,8 @@ public class ControlEditor extends Pane { scrollPane.getStyleClass().add("box"); scrollPane.setPadding(new Insets(10)); controls.setPadding(new Insets(10)); - controls.setHgap(40); controls.setVgap(20); + controls.setHgap(40); scrollPane.prefWidthProperty().bind(super.prefWidthProperty().multiply(0.35)); @@ -55,51 +60,56 @@ public class ControlEditor extends Pane { rootBox.setAlignment(Pos.CENTER); ToggleGroup tg = new ToggleGroup(); - for (int i = 0; i < Control.values().length; i++) { - Control control = Control.values()[i]; - - - // label - Label label = new Label(control.label); - controls.add(label, 0, i); - - // control button - ToggleButton controlButton = new ToggleButton(""); - controlButton.setText(keyToString(control.keyProperty.get())); - control.keyProperty.addListener(_ -> { - System.out.println(control.label + " set to " + control.keyProperty.get()); - System.out.println(controlButton.getText()); + int i = 0; + for (Map.Entry> section : Control.sections) { + // section header + Label sectionLabel = new Label(section.getKey()); + sectionLabel.getStyleClass().add("gray"); + BorderPane sectionBox = new BorderPane(); + sectionBox.setCenter(sectionLabel); + controls.add(sectionBox, 0, i, 3, 1); + i++; + + for (Control control : section.getValue()) { + + // label + Label label = new Label(control.label); + controls.add(label, 0, i); + + // control button + ToggleButton controlButton = new ToggleButton(""); controlButton.setText(keyToString(control.keyProperty.get())); - net.sowgro.npehero.main.Control.writeToFile(); - }); - controlButton.setOnMouseClicked(_ -> { - EventHandler keyListener = new EventHandler<>() { - @Override - public void handle(KeyEvent k) { - control.keyProperty.set(k.getCode()); - rootBox.removeEventFilter(KeyEvent.KEY_PRESSED, this); - controlButton.setSelected(false); - k.consume(); + control.keyProperty.addListener(_ -> { + controlButton.setText(keyToString(control.keyProperty.get())); + Control.writeToFile(); + }); + controlButton.setOnMouseClicked(_ -> { + EventHandler keyListener = new EventHandler<>() { + @Override + public void handle(KeyEvent k) { + control.keyProperty.set(k.getCode()); + rootBox.removeEventFilter(KeyEvent.KEY_PRESSED, this); + controlButton.setSelected(false); + k.consume(); + } + }; + if (controlButton.isSelected()) { + rootBox.addEventFilter(KeyEvent.KEY_PRESSED, keyListener); + } else { + rootBox.removeEventFilter(KeyEvent.KEY_PRESSED, keyListener); } - }; - if (controlButton.isSelected()) { - System.out.println("Event registered"); - rootBox.addEventFilter(KeyEvent.KEY_PRESSED, keyListener); - } - else { - System.out.println("Event un-registered"); - rootBox.removeEventFilter(KeyEvent.KEY_PRESSED, keyListener); - } - }); - tg.getToggles().add(controlButton); - controls.add(controlButton, 1, i); - - // label button - Button resetButton = new Button("Reset"); - resetButton.setOnMouseClicked(_ -> { - control.keyProperty.set(control.defaultKey); - }); - controls.add(resetButton, 2, i); + }); + tg.getToggles().add(controlButton); + controls.add(controlButton, 1, i); + + // reset button + Button resetButton = new Button("Reset"); + resetButton.setOnMouseClicked(_ -> { + control.keyProperty.set(control.defaultKey); + }); + controls.add(resetButton, 2, i); + i++; + } } -- cgit v1.2.3