diff options
Diffstat (limited to 'src/dk.biks.bachelorizer/dk/biks/bachelorizer/Controller.java')
-rw-r--r-- | src/dk.biks.bachelorizer/dk/biks/bachelorizer/Controller.java | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Controller.java b/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Controller.java new file mode 100644 index 0000000..ab62bfa --- /dev/null +++ b/src/dk.biks.bachelorizer/dk/biks/bachelorizer/Controller.java @@ -0,0 +1,92 @@ +// SPDX-FileCopyrightText: 2025 Jonas Smedegaard <dr@jones.dk> +// SPDX-License-Identifier: GPL-3.0-or-later + +package dk.biks.bachelorizer; + +import java.util.List; + +/// Bachelorizer - Controller +public class Controller { + + /// Application model + // (declared explicitly only to silence javadoc) + private GUI model; + + /// Application view + private Window view; + + /// Parameters passed on command-line and in JNLP file + private List<String> parameters; + + /// Default constructor + /// + /// @param model Application model + /// @param view Application view + public Controller(final GUI model, final Window view) { + this.model = model; + this.view = view; + } + + /// parse application parameters + /// + /// parse parameters as GNU-style options and arguments, + /// i.e. treat dash-prefixed words as options + /// until an optional first bare "--", + /// taking first non-option argument as name of student + /// and remaining ones as activity selections + /// + /// @param parameters Application parameters + public final void setParameters(final List<String> parameters) { + boolean optionsDone = false; + boolean studentAssigned = false; + for (String item: parameters) { + if (!optionsDone && item.matches("--")) { + optionsDone = true; + } else if (!item.startsWith("-")) { + if (!studentAssigned) { + model.addStudent(item); + studentAssigned = true; + showStudent(); + } else { + model.addActivity(item); + showActivities(); + } + } + } + } + + /// Enter activity + /// + /// @param s String entered + public final void enterActivity(final String s) { + model.addActivity(s); + view.clearActivityEntry(); + showActivities(); + } + + /// Display student + public final void showStudent() { + view.setStudentName(model.getStudentName()); + } + + /// Display list of activity entries + public final void showActivities() { + String toarea = ""; + for (String t: model.getActivities()) { + toarea += t + "\n"; + } + view.setArea(toarea); + } + + /// drop last activity entry + public final void delOne() { + model.delOneActivity(); + showActivities(); + } + + /// drop all activity entries + public final void delAll() { + model.delAllActivities(); + showActivities(); + } +} |