From 6a6df49297419b38182e876183c59379677a13ae Mon Sep 17 00:00:00 2001 From: Jonas Smedegaard Date: Sun, 27 Apr 2025 16:57:27 +0200 Subject: simplify: merge subpackage view into main package --- Makefile | 4 +- .../dk/biks/bachelorizer/Control.java | 1 - .../dk/biks/bachelorizer/Main.java | 10 +- .../dk/biks/bachelorizer/Window.java | 119 ++++++++++++++++++++ .../dk/biks/bachelorizer/view/Window.java | 120 --------------------- 5 files changed, 122 insertions(+), 132 deletions(-) create mode 100644 src/dk.biks.bachelorizer/dk/biks/bachelorizer/Window.java delete mode 100644 src/dk.biks.bachelorizer/dk/biks/bachelorizer/view/Window.java diff --git a/Makefile b/Makefile index 6462f41..e3c01e1 100644 --- a/Makefile +++ b/Makefile @@ -7,8 +7,8 @@ JAVA_MODULEPATHS_bachelorizer = /usr/share/openjfx/lib # TODO: fix properly declare and resolve local interdependencies JAVA_MODULEPATHS_bachelorizer = /usr/share/openjfx/lib mods/com.example.portfolio3 JAVA_ROOT_bachelorizer = src/dk.biks.bachelorizer -JAVA_MAINCLASSES_bachelorizer = Main model/Combi view/Window -JAVA_EXTRACLASSES_bachelorizer = model/GUI model/Person view/Window Control +JAVA_MAINCLASSES_bachelorizer = Main model/Combi Window +JAVA_EXTRACLASSES_bachelorizer = model/GUI model/Person Control JAVA_MODULES_bachelorizer = $(addprefix javafx.,base controls graphics) DOCUMENTS = delivery1 delivery2 diff --git a/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Control.java b/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Control.java index b53fb9f..985c026 100644 --- a/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Control.java +++ b/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Control.java @@ -6,7 +6,6 @@ package dk.biks.bachelorizer; import java.util.List; import dk.biks.bachelorizer.model.GUI; -import dk.biks.bachelorizer.view.Window; /// Bachelorizer - Controller public class Control{ diff --git a/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Main.java b/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Main.java index 2efd5b8..55ae0c1 100644 --- a/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Main.java +++ b/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Main.java @@ -6,14 +6,6 @@ package dk.biks.bachelorizer; import java.lang.UnsupportedOperationException; import java.util.Arrays; -/* TODO -import dk.biks.bachelorizer.view.Oneshot; -import dk.biks.bachelorizer.view.Prompt; -import dk.biks.bachelorizer.view.Pipe; -import dk.biks.bachelorizer.view.Screen; -*/ -import dk.biks.bachelorizer.view.Window; - /// Bachelorizer - bachelor programme registrar /// /// Tool for registering students @@ -41,7 +33,7 @@ public class Main { switch (uiFromArgs(args)) { case "gui" -> { Window.main(args); } // TODO case "tui" -> { Screen.main(args); } -// TODO case "cli" -> { Line.main(args); } +// TODO case "cli" -> { Prompt.main(args); } default -> { throw new UnsupportedOperationException( "Not yet implemented."); diff --git a/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Window.java b/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Window.java new file mode 100644 index 0000000..7bdc88a --- /dev/null +++ b/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Window.java @@ -0,0 +1,119 @@ +// SPDX-FileCopyrightText: 2025 Jonas Smedegaard +// SPDX-License-Identifier: GPL-3.0-or-later + +package dk.biks.bachelorizer; + +import java.util.List; +import javafx.application.Application; +import javafx.scene.control.Button; +import javafx.scene.control.Label; +import javafx.scene.control.TextArea; +import javafx.scene.control.TextField; +import javafx.scene.layout.HBox; +import javafx.scene.layout.VBox; +import javafx.scene.Scene; +import javafx.stage.Stage; + +import dk.biks.bachelorizer.model.GUI; + +/// Bachelorizer - JavaFX Window view +// Class is final to forbid subclassing, +// because object is passed to controller during instatiation +public final class Window extends Application { + + /// Default constructor + // (declared explicitly only to silence javadoc) + public Window() { + } + + /// Label styling + public static String LABEL_STYLE = + "-fx-font-weight: bold; -fx-font-size: 20;"; + + /// Application model + private GUI model = new GUI(); + + /// Application controller + private Control control = new Control(model, this); + + /// Name of student + private TextField nameEntry = new TextField(); + + /// Text entry for adding an activity + private TextField activityEntry = new TextField(); + + /// Text area for activity entries + private TextArea area = new TextArea(); + + /// Button to delete one activity + private Button delOne = new Button("Delete one"); + + /// Button to delete all activities + private Button delAll = new Button("Delete all"); + + /// Application instantiation + /// + /// @param args application parameters + public static void main(String[] args) { + launch(args); + } + + @Override + public void start(Stage stage) { + + // pass application parameters to controller + control.setParameters(getParameters().getRaw()); + + // add listeners +// NameEntry.setOnAction(e -> control.enterName( +// activityEntry.getText())); + activityEntry.setOnAction(e -> control.enterActivity( + activityEntry.getText())); + delOne.setOnAction(e -> control.delOne()); + delAll.setOnAction(e -> control.delAll()); + + // add buttons + VBox root = new VBox(10, + ourHBox("Student", nameEntry), + ourHBox("Add activity", activityEntry), + new HBox(10, delOne, delAll), + area); + + // compose stage + Scene scene = new Scene(root, 500, 500); + stage.setTitle("JavaFX Demo"); + stage.setScene(scene); + stage.show(); + } + + /// action to apply student name + /// + /// @param s Text to apply + public void setStudentName(String s) { + nameEntry.setText(s); + } + + /// action to apply text to area + /// + /// @param s Text to apply + public void setArea(String s) { + area.setText(s); + } + + /// Button action to clear field + public void clearActivityEntry() { + activityEntry.setText(""); + } + + /// Styled HBox with label and TextField + /// + /// @param s Label string + /// @param f Text field + /// @return HBox containing styled label and text field + public HBox ourHBox(String s, TextField f) { + Label label = new Label(s+":"); + label.setStyle(LABEL_STYLE); + + return new HBox(10, label, f); + } +} diff --git a/src/dk.biks.bachelorizer/dk/biks/bachelorizer/view/Window.java b/src/dk.biks.bachelorizer/dk/biks/bachelorizer/view/Window.java deleted file mode 100644 index c75e290..0000000 --- a/src/dk.biks.bachelorizer/dk/biks/bachelorizer/view/Window.java +++ /dev/null @@ -1,120 +0,0 @@ -// SPDX-FileCopyrightText: 2025 Jonas Smedegaard -// SPDX-License-Identifier: GPL-3.0-or-later - -package dk.biks.bachelorizer.view; - -import java.util.List; -import javafx.application.Application; -import javafx.scene.control.Button; -import javafx.scene.control.Label; -import javafx.scene.control.TextArea; -import javafx.scene.control.TextField; -import javafx.scene.layout.HBox; -import javafx.scene.layout.VBox; -import javafx.scene.Scene; -import javafx.stage.Stage; - -import dk.biks.bachelorizer.Control; -import dk.biks.bachelorizer.model.GUI; - -/// Bachelorizer - JavaFX Window view -// Class is final to forbid subclassing, -// because object is passed to controller during instatiation -public final class Window extends Application { // the View - - /// Default constructor - // (declared explicitly only to silence javadoc) - public Window() { - } - - /// Label styling - public static String LABEL_STYLE = - "-fx-font-weight: bold; -fx-font-size: 20;"; - - /// Application model - private GUI model = new GUI(); - - /// Application controller - private Control control = new Control(model, this); - - /// Name of student - private TextField nameEntry = new TextField(); - - /// Text entry for adding an activity - private TextField activityEntry = new TextField(); - - /// Text area for activity entries - private TextArea area = new TextArea(); - - /// Button to delete one activity - private Button delOne = new Button("Delete one"); - - /// Button to delete all activities - private Button delAll = new Button("Delete all"); - - /// Application instantiation - /// - /// @param args application parameters - public static void main(String[] args) { - launch(args); - } - - @Override - public void start(Stage stage) { - - // pass application parameters to controller - control.setParameters(getParameters().getRaw()); - - // add listeners -// NameEntry.setOnAction(e -> control.enterName( -// activityEntry.getText())); - activityEntry.setOnAction(e -> control.enterActivity( - activityEntry.getText())); - delOne.setOnAction(e -> control.delOne()); - delAll.setOnAction(e -> control.delAll()); - - // add buttons - VBox root = new VBox(10, - ourHBox("Student", nameEntry), - ourHBox("Add activity", activityEntry), - new HBox(10, delOne, delAll), - area); - - // compose stage - Scene scene = new Scene(root, 500, 500); - stage.setTitle("JavaFX Demo"); - stage.setScene(scene); - stage.show(); - } - - /// action to apply student name - /// - /// @param s Text to apply - public void setStudentName(String s) { - nameEntry.setText(s); - } - - /// action to apply text to area - /// - /// @param s Text to apply - public void setArea(String s) { - area.setText(s); - } - - /// Button action to clear field - public void clearActivityEntry() { - activityEntry.setText(""); - } - - /// Styled HBox with label and TextField - /// - /// @param s Label string - /// @param f Text field - /// @return HBox containing styled label and text field - public HBox ourHBox(String s, TextField f) { - Label label = new Label(s+":"); - label.setStyle(LABEL_STYLE); - - return new HBox(10, label, f); - } -} -- cgit v1.2.3