diff options
author | Jonas Smedegaard <dr@jones.dk> | 2025-04-26 08:09:22 +0200 |
---|---|---|
committer | Jonas Smedegaard <dr@jones.dk> | 2025-04-26 08:09:22 +0200 |
commit | 7f93e18b6424b292d4f54fb746aeb6e10b62e76d (patch) | |
tree | 0e9a7aed151580e74736f620ce08e1b811114d9a /dk/biks/bachelorizer/Control.java | |
parent | 03c67a8832ef3469a6dba08436edac3f9b080aec (diff) |
use package domain dk.biks
Diffstat (limited to 'dk/biks/bachelorizer/Control.java')
-rw-r--r-- | dk/biks/bachelorizer/Control.java | 94 |
1 files changed, 94 insertions, 0 deletions
diff --git a/dk/biks/bachelorizer/Control.java b/dk/biks/bachelorizer/Control.java new file mode 100644 index 0000000..b53fb9f --- /dev/null +++ b/dk/biks/bachelorizer/Control.java @@ -0,0 +1,94 @@ +// SPDX-FileCopyrightText: 2025 Jonas Smedegaard <dr@jones.dk> +// SPDX-License-Identifier: GPL-3.0-or-later + +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{ + + /// 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 Control(GUI model, 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 void setParameters(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 void enterActivity(String s){ + model.addActivity(s); + view.clearActivityEntry(); + showActivities(); + } + + /// Display student + public void showStudent() { + view.setStudentName(model.getStudentName()); + } + + /// Display list of activity entries + public void showActivities() { + String toarea = ""; + for (String t : model.getActivities()) + toarea += t + "\n"; + view.setArea(toarea); + } + + /// drop last activity entry + public void delOne(){ + model.delOneActivity(); + showActivities(); + } + + /// drop all activity entries + public void delAll(){ + model.delAllActivities(); + showActivities(); + } +} |