diff options
Diffstat (limited to 'src/main/java/net/sowgro/npehero/gui')
| -rw-r--r-- | src/main/java/net/sowgro/npehero/gui/ControlEditor.java | 106 | 
1 files changed, 58 insertions, 48 deletions
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("<err>"); -            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<String, List<Control>> 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("<err>");                  controlButton.setText(keyToString(control.keyProperty.get())); -                net.sowgro.npehero.main.Control.writeToFile(); -            }); -            controlButton.setOnMouseClicked(_ -> { -                EventHandler<KeyEvent> 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<KeyEvent> 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++; +            }          }  | 
