diff options
Diffstat (limited to 'src/com.example.portfolio2/com/example/portfolio2/HelloApplication.java')
-rw-r--r-- | src/com.example.portfolio2/com/example/portfolio2/HelloApplication.java | 274 |
1 files changed, 137 insertions, 137 deletions
diff --git a/src/com.example.portfolio2/com/example/portfolio2/HelloApplication.java b/src/com.example.portfolio2/com/example/portfolio2/HelloApplication.java index eb4b49d..2d8c7b2 100644 --- a/src/com.example.portfolio2/com/example/portfolio2/HelloApplication.java +++ b/src/com.example.portfolio2/com/example/portfolio2/HelloApplication.java @@ -13,141 +13,141 @@ import java.io.IOException; import java.util.List; public class HelloApplication extends Application { - // Initializing model, controller and database objects - private Model model = new Model(); - private Controller con = new Controller(model,this); - MyDB myDB = new MyDB(); - - /* Below is the original implementation of the UI elements with - accompanying, individual calls to setOnAction to specify functionality. - Before changing to a list format, - we made sure methods in controller and model - were generalized to allow for the new structure seamlessly. - private ComboBox<String> programCombo = new ComboBox<>(); - private ComboBox<String> subject1Combo = new ComboBox<>(); - private ComboBox<String> subject2Combo = new ComboBox<>(); - private ComboBox<String> electiveCombo = new ComboBox<>(); - - private ComboBox<String> programSelect = new ComboBox<>(); - private ComboBox<String> subject1Select = new ComboBox<>(); - private ComboBox<String> subject2Select = new ComboBox<>(); - private ComboBox<String> electiveSelect = new ComboBox<>(); - - private TextArea programArea = new TextArea(); - private TextArea subject1Area = new TextArea(); - private TextArea subject2Area = new TextArea(); - private TextArea electiveArea = new TextArea(); - - private Label programEcts = new Label(); - private Label subject1Ects = new Label(); - private Label subject2Ects = new Label(); - private Label electiveEcts = new Label(); - - private VBox program = new VBox(new Label("Program"), programCombo, programSelect, programArea, programEcts); - private VBox subject1 = new VBox(new Label("Subject 1"), subject1Combo, subject1Select, subject1Area, subject1Ects); - private VBox subject2 = new VBox(new Label("Subject 2"), subject2Combo, subject2Select, subject2Area, subject2Ects); - private VBox elective = new VBox(new Label("Elective"), electiveCombo, electiveSelect, electiveArea, electiveEcts); - */ - - @Override - public void start(Stage stage) throws IOException { - // Clears old insertions into the participation table - con.initialize(); - - // Defines a list of columns based on their names. - List<ActivityColumn> columns = List.of( - new ActivityColumn("Program"), - new ActivityColumn("Subject 1"), - new ActivityColumn("Subject 2"), - new ActivityColumn("Elective") - ); - - // Defines a list of subject modules - List<String> subjectModules = List.of("Computer Science", "Informatik", "Astrology"); - - // Loop for defining button funtionality for each activity column - for (ActivityColumn col : columns) { - col.nameLabel.setStyle("-fx-font-size: 18px; -fx-padding: 10px;"); // Styling - col.ectsLabel.setStyle("-fx-font-size: 18px; -fx-padding: 10px"); - col.categoryCombo.setPrefSize(250, 35); - col.activitySelect.setPrefSize(250, 35); - col.area.setPrefWidth(250); - - // All boxes share the same activity logic - col.activitySelect.setOnAction(event -> { - con.onActivitySelected(col.categoryCombo, col.activitySelect, col.area); - con.updateEcts(col.ectsLabel, col.categoryCombo); - }); - - switch (col.name) { // Switch statement handles different category boxes - case "Program" -> { - col.categoryCombo.getItems().addAll("HumTek", "NatBach"); - col.categoryCombo.setOnAction(event -> { - con.onComboSelected(col.categoryCombo, col.activitySelect, col.area); - }); - } - case "Subject 1" -> { // We considered using the list for filling the box but couldn't figure it out - col.categoryCombo.getItems().addAll("Computer Science", "Informatik", "Astrology"); - col.categoryCombo.setOnAction(event -> { - con.onSubjectModuleSelected(col.categoryCombo, columns.get(2).categoryCombo, subjectModules); - con.onComboSelected(col.categoryCombo, col.activitySelect, col.area); - }); - } - case "Subject 2" -> { - col.categoryCombo.getItems().addAll("Computer Science", "Informatik", "Astrology"); - col.categoryCombo.setOnAction(event -> { // We figured we have to specify - // the second column like this but reckon there's a better way. - con.onSubjectModuleSelected(col.categoryCombo, columns.get(1).categoryCombo, subjectModules); - con.onComboSelected(col.categoryCombo, col.activitySelect, col.area); - }); - } - case "Elective" -> { - col.categoryCombo.setVisible(false); // Hide useless box - con.fillElective(col.activitySelect); - } - } - } - - // Define an HBox based on the columns and define the scene based on it. - HBox root = new HBox(columns.get(0).asVBox(), columns.get(1).asVBox(), columns.get(2).asVBox(), columns.get(3).asVBox()); - Scene scene = new Scene(root, 1000, 500); - stage.setTitle("Course Selector RUC: Ultimate Deluxe Edition"); - stage.setScene(scene); - stage.show(); - } - - public static void main(String[] args) { - launch(); - } - - // Class for each column of activities - private class ActivityColumn { - // Each column contains these elements - String name; - Label nameLabel; - ComboBox<String> categoryCombo; - ComboBox<String> activitySelect; - TextArea area; - Label ectsLabel; - - ActivityColumn(String name) { - this.name = name; - nameLabel = new Label(name); - categoryCombo = new ComboBox<>(); - activitySelect = new ComboBox<>(); - area = new TextArea(); - ectsLabel = new Label(); - // new column, "this.name" to define and saved in the text felt, - // new "nameLabel" to show visual text. - // CategoryCombo creat a dropdown list - // activitySelect creat one more dropdown list with Combobox, possible to choose activity. - // area = new TextArea helps create a text felt to describe the chosen activity - // ectsLabel = new Label shows text for ects points - - } - - VBox asVBox() { - return new VBox(nameLabel, categoryCombo, activitySelect, area, ectsLabel); - } - } + // Initializing model, controller and database objects + private Model model = new Model(); + private Controller con = new Controller(model,this); + MyDB myDB = new MyDB(); + + /* Below is the original implementation of the UI elements with + accompanying, individual calls to setOnAction to specify functionality. + Before changing to a list format, + we made sure methods in controller and model + were generalized to allow for the new structure seamlessly. + private ComboBox<String> programCombo = new ComboBox<>(); + private ComboBox<String> subject1Combo = new ComboBox<>(); + private ComboBox<String> subject2Combo = new ComboBox<>(); + private ComboBox<String> electiveCombo = new ComboBox<>(); + + private ComboBox<String> programSelect = new ComboBox<>(); + private ComboBox<String> subject1Select = new ComboBox<>(); + private ComboBox<String> subject2Select = new ComboBox<>(); + private ComboBox<String> electiveSelect = new ComboBox<>(); + + private TextArea programArea = new TextArea(); + private TextArea subject1Area = new TextArea(); + private TextArea subject2Area = new TextArea(); + private TextArea electiveArea = new TextArea(); + + private Label programEcts = new Label(); + private Label subject1Ects = new Label(); + private Label subject2Ects = new Label(); + private Label electiveEcts = new Label(); + + private VBox program = new VBox(new Label("Program"), programCombo, programSelect, programArea, programEcts); + private VBox subject1 = new VBox(new Label("Subject 1"), subject1Combo, subject1Select, subject1Area, subject1Ects); + private VBox subject2 = new VBox(new Label("Subject 2"), subject2Combo, subject2Select, subject2Area, subject2Ects); + private VBox elective = new VBox(new Label("Elective"), electiveCombo, electiveSelect, electiveArea, electiveEcts); + */ + + @Override + public void start(Stage stage) throws IOException { + // Clears old insertions into the participation table + con.initialize(); + + // Defines a list of columns based on their names. + List<ActivityColumn> columns = List.of( + new ActivityColumn("Program"), + new ActivityColumn("Subject 1"), + new ActivityColumn("Subject 2"), + new ActivityColumn("Elective") + ); + + // Defines a list of subject modules + List<String> subjectModules = List.of("Computer Science", "Informatik", "Astrology"); + + // Loop for defining button funtionality for each activity column + for (ActivityColumn col : columns) { + col.nameLabel.setStyle("-fx-font-size: 18px; -fx-padding: 10px;"); // Styling + col.ectsLabel.setStyle("-fx-font-size: 18px; -fx-padding: 10px"); + col.categoryCombo.setPrefSize(250, 35); + col.activitySelect.setPrefSize(250, 35); + col.area.setPrefWidth(250); + + // All boxes share the same activity logic + col.activitySelect.setOnAction(event -> { + con.onActivitySelected(col.categoryCombo, col.activitySelect, col.area); + con.updateEcts(col.ectsLabel, col.categoryCombo); + }); + + switch (col.name) { // Switch statement handles different category boxes + case "Program" -> { + col.categoryCombo.getItems().addAll("HumTek", "NatBach"); + col.categoryCombo.setOnAction(event -> { + con.onComboSelected(col.categoryCombo, col.activitySelect, col.area); + }); + } + case "Subject 1" -> { // We considered using the list for filling the box but couldn't figure it out + col.categoryCombo.getItems().addAll("Computer Science", "Informatik", "Astrology"); + col.categoryCombo.setOnAction(event -> { + con.onSubjectModuleSelected(col.categoryCombo, columns.get(2).categoryCombo, subjectModules); + con.onComboSelected(col.categoryCombo, col.activitySelect, col.area); + }); + } + case "Subject 2" -> { + col.categoryCombo.getItems().addAll("Computer Science", "Informatik", "Astrology"); + col.categoryCombo.setOnAction(event -> { // We figured we have to specify + // the second column like this but reckon there's a better way. + con.onSubjectModuleSelected(col.categoryCombo, columns.get(1).categoryCombo, subjectModules); + con.onComboSelected(col.categoryCombo, col.activitySelect, col.area); + }); + } + case "Elective" -> { + col.categoryCombo.setVisible(false); // Hide useless box + con.fillElective(col.activitySelect); + } + } + } + + // Define an HBox based on the columns and define the scene based on it. + HBox root = new HBox(columns.get(0).asVBox(), columns.get(1).asVBox(), columns.get(2).asVBox(), columns.get(3).asVBox()); + Scene scene = new Scene(root, 1000, 500); + stage.setTitle("Course Selector RUC: Ultimate Deluxe Edition"); + stage.setScene(scene); + stage.show(); + } + + public static void main(String[] args) { + launch(); + } + + // Class for each column of activities + private class ActivityColumn { + // Each column contains these elements + String name; + Label nameLabel; + ComboBox<String> categoryCombo; + ComboBox<String> activitySelect; + TextArea area; + Label ectsLabel; + + ActivityColumn(String name) { + this.name = name; + nameLabel = new Label(name); + categoryCombo = new ComboBox<>(); + activitySelect = new ComboBox<>(); + area = new TextArea(); + ectsLabel = new Label(); + // new column, "this.name" to define and saved in the text felt, + // new "nameLabel" to show visual text. + // CategoryCombo creat a dropdown list + // activitySelect creat one more dropdown list with Combobox, possible to choose activity. + // area = new TextArea helps create a text felt to describe the chosen activity + // ectsLabel = new Label shows text for ects points + + } + + VBox asVBox() { + return new VBox(nameLabel, categoryCombo, activitySelect, area, ectsLabel); + } + } } |