From cf92b6a3c48381de42646e44f835d3b924fe8890 Mon Sep 17 00:00:00 2001 From: LHeng1 Date: Wed, 25 Oct 2023 00:53:43 +0800 Subject: [PATCH 1/3] Add basic version of compare command UI --- .../logic/commands/CompareCommand.java | 18 +---- .../java/seedu/address/ui/CompareWindow.java | 70 +++++++++++++++++++ 2 files changed, 73 insertions(+), 15 deletions(-) create mode 100644 src/main/java/seedu/address/ui/CompareWindow.java diff --git a/src/main/java/seedu/address/logic/commands/CompareCommand.java b/src/main/java/seedu/address/logic/commands/CompareCommand.java index 0a49b9a61fa..7039d13fa59 100644 --- a/src/main/java/seedu/address/logic/commands/CompareCommand.java +++ b/src/main/java/seedu/address/logic/commands/CompareCommand.java @@ -7,8 +7,8 @@ import seedu.address.commons.core.index.Index; import seedu.address.logic.commands.exceptions.CommandException; import seedu.address.model.Model; -import seedu.address.model.person.Gpa; import seedu.address.model.person.Person; +import seedu.address.ui.CompareWindow; /** @@ -42,7 +42,6 @@ public CompareCommand(Index index1, Index index2) { @Override public CommandResult execute(Model model) throws CommandException { - String compareMessage; requireNonNull(model); List lastShownList = model.getFilteredPersonList(); @@ -55,21 +54,10 @@ public CommandResult execute(Model model) throws CommandException { Person personToCompare1 = lastShownList.get(index1.getZeroBased()); Person personToCompare2 = lastShownList.get(index2.getZeroBased()); - model.updateFilteredPersonList(person -> person.equals(personToCompare1) - || person.equals(personToCompare2)); + new CompareWindow(personToCompare1, personToCompare2).show(); - Gpa gpa1 = personToCompare1.getGpa(); - Gpa gpa2 = personToCompare2.getGpa(); + return new CommandResult("Comparison successful! "); - if (gpa1.compareTo(gpa2) == 0) { - compareMessage = "They have the same GPA, do look out for other criteria!"; - } else if (gpa1.compareTo(gpa2) > 0) { - compareMessage = personToCompare1.getName() + " has a higher GPA!"; - } else { - compareMessage = personToCompare2.getName() + " has a higher GPA!"; - } - - return new CommandResult("Comparison successful! " + compareMessage); } catch (IndexOutOfBoundsException e) { throw new CommandException("Error: One or both of the specified applicants" + " were not found in the list."); diff --git a/src/main/java/seedu/address/ui/CompareWindow.java b/src/main/java/seedu/address/ui/CompareWindow.java new file mode 100644 index 00000000000..02a9b1406c0 --- /dev/null +++ b/src/main/java/seedu/address/ui/CompareWindow.java @@ -0,0 +1,70 @@ +package seedu.address.ui; + +import javafx.geometry.HPos; +import javafx.geometry.Insets; +import javafx.scene.Scene; +import javafx.scene.control.Label; +import javafx.scene.layout.GridPane; +import javafx.scene.text.Font; +import javafx.stage.Stage; +import seedu.address.model.person.Gpa; +import seedu.address.model.person.Name; +import seedu.address.model.person.Person; + +public class CompareWindow extends Stage { + + public CompareWindow(Person person1, Person person2) { + setTitle("Comparison Result"); + + String compareMessage; + Name name1 = person1.getName(); + Gpa gpa1 = person1.getGpa(); + Name name2 = person2.getName(); + Gpa gpa2 = person2.getGpa(); + + Label person1Name = new Label(name1.toString()); + Label person1Gpa = new Label(gpa1.toString()); + Label person2Name = new Label(name2.toString()); + Label person2Gpa = new Label(gpa2.toString()); + Label nameLabel = new Label("Name"); + Label gpaLabel = new Label("GPA"); + + + if (gpa1.compareTo(gpa2) == 0) { + compareMessage = "They have the same GPA, do look out for other criteria!"; + } else if (gpa1.compareTo(gpa2) > 0) { + compareMessage = name1 + " has a higher GPA!"; + } else { + compareMessage = name2 + " has a higher GPA!"; + } + + Label compareMessageLabel = new Label(compareMessage); + compareMessageLabel.setFont(Font.font(40)); + + GridPane gridPane = new GridPane(); + gridPane.setHgap(10); + gridPane.setVgap(10); + gridPane.setPadding(new Insets(10, 10, 10, 10)); + + gridPane.add(person1Name, 0, 0); + gridPane.add(nameLabel, 1, 0); + gridPane.add(person2Name, 2, 0); + + gridPane.add(person1Gpa, 0, 1); + gridPane.add(gpaLabel, 1, 1); + gridPane.add(person2Gpa, 2, 1); + + gridPane.add(compareMessageLabel, 1, 2); + + GridPane.setHalignment(nameLabel, HPos.CENTER); + GridPane.setHalignment(gpaLabel, HPos.CENTER); + + Scene scene = new Scene(gridPane); + + setWidth(900); + setHeight(600); + + setScene(scene); + } +} + From 097786180d12eb1749176c8a75b2ea007f1ac3d9 Mon Sep 17 00:00:00 2001 From: LHeng1 Date: Wed, 25 Oct 2023 20:09:32 +0800 Subject: [PATCH 2/3] Add FXML file for compare function pop-up window --- .../java/seedu/address/ui/CompareWindow.java | 69 +++++++++---------- src/main/resources/view/CompareWindow.fxml | 23 +++++++ 2 files changed, 57 insertions(+), 35 deletions(-) create mode 100644 src/main/resources/view/CompareWindow.fxml diff --git a/src/main/java/seedu/address/ui/CompareWindow.java b/src/main/java/seedu/address/ui/CompareWindow.java index 02a9b1406c0..6a687c98832 100644 --- a/src/main/java/seedu/address/ui/CompareWindow.java +++ b/src/main/java/seedu/address/ui/CompareWindow.java @@ -1,19 +1,43 @@ package seedu.address.ui; -import javafx.geometry.HPos; -import javafx.geometry.Insets; +import javafx.fxml.FXML; +import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.scene.control.Label; -import javafx.scene.layout.GridPane; -import javafx.scene.text.Font; import javafx.stage.Stage; +import seedu.address.MainApp; import seedu.address.model.person.Gpa; import seedu.address.model.person.Name; import seedu.address.model.person.Person; +import java.io.IOException; + public class CompareWindow extends Stage { + @FXML + private Label person1Name; + @FXML + private Label person1Gpa; + @FXML + private Label person2Name; + @FXML + private Label person2Gpa; + @FXML + private Label nameLabel; + @FXML + private Label gpaLabel; + @FXML + private Label compareMessageLabel; + public CompareWindow(Person person1, Person person2) { + FXMLLoader fxmlLoader = new FXMLLoader(MainApp.class.getResource("/view/CompareWindow.fxml")); + fxmlLoader.setController(this); + try { + fxmlLoader.load(); + } catch (IOException e) { + throw new RuntimeException(e); + } + setTitle("Comparison Result"); String compareMessage; @@ -22,13 +46,10 @@ public CompareWindow(Person person1, Person person2) { Name name2 = person2.getName(); Gpa gpa2 = person2.getGpa(); - Label person1Name = new Label(name1.toString()); - Label person1Gpa = new Label(gpa1.toString()); - Label person2Name = new Label(name2.toString()); - Label person2Gpa = new Label(gpa2.toString()); - Label nameLabel = new Label("Name"); - Label gpaLabel = new Label("GPA"); - + person1Name.setText(name1.toString()); + person1Gpa.setText(gpa1.toString()); + person2Name.setText(name2.toString()); + person2Gpa.setText(gpa2.toString()); if (gpa1.compareTo(gpa2) == 0) { compareMessage = "They have the same GPA, do look out for other criteria!"; @@ -38,33 +59,11 @@ public CompareWindow(Person person1, Person person2) { compareMessage = name2 + " has a higher GPA!"; } - Label compareMessageLabel = new Label(compareMessage); - compareMessageLabel.setFont(Font.font(40)); - - GridPane gridPane = new GridPane(); - gridPane.setHgap(10); - gridPane.setVgap(10); - gridPane.setPadding(new Insets(10, 10, 10, 10)); - - gridPane.add(person1Name, 0, 0); - gridPane.add(nameLabel, 1, 0); - gridPane.add(person2Name, 2, 0); - - gridPane.add(person1Gpa, 0, 1); - gridPane.add(gpaLabel, 1, 1); - gridPane.add(person2Gpa, 2, 1); - - gridPane.add(compareMessageLabel, 1, 2); - - GridPane.setHalignment(nameLabel, HPos.CENTER); - GridPane.setHalignment(gpaLabel, HPos.CENTER); - - Scene scene = new Scene(gridPane); + compareMessageLabel.setText(compareMessage); + Scene scene = new Scene(fxmlLoader.getRoot()); setWidth(900); setHeight(600); - setScene(scene); } } - diff --git a/src/main/resources/view/CompareWindow.fxml b/src/main/resources/view/CompareWindow.fxml new file mode 100644 index 00000000000..d4964545115 --- /dev/null +++ b/src/main/resources/view/CompareWindow.fxml @@ -0,0 +1,23 @@ + + + + + + + + + + + + From 1146a74f688a94f5bf74893ff4fa01c5626d89f3 Mon Sep 17 00:00:00 2001 From: LHeng1 Date: Thu, 26 Oct 2023 02:03:13 +0800 Subject: [PATCH 3/3] Improve compare command UI design --- .../java/seedu/address/ui/CompareWindow.java | 48 ++++++++++++------- src/main/resources/view/CompareWindow.fxml | 47 ++++++++++++------ 2 files changed, 63 insertions(+), 32 deletions(-) diff --git a/src/main/java/seedu/address/ui/CompareWindow.java b/src/main/java/seedu/address/ui/CompareWindow.java index 6a687c98832..37cdad8e247 100644 --- a/src/main/java/seedu/address/ui/CompareWindow.java +++ b/src/main/java/seedu/address/ui/CompareWindow.java @@ -1,19 +1,27 @@ package seedu.address.ui; +import java.io.IOException; + import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.scene.Scene; import javafx.scene.control.Label; +import javafx.scene.shape.Rectangle; import javafx.stage.Stage; import seedu.address.MainApp; import seedu.address.model.person.Gpa; -import seedu.address.model.person.Name; import seedu.address.model.person.Person; -import java.io.IOException; - +/** + * The Compare Pop-up Window. Provides a separate JavaFX stage when a "compare" command is inputted. + * This window is used to display and compare the details of two applicants, + * including student number, name, and their relevant achievements. + */ public class CompareWindow extends Stage { - + @FXML + private Label person1StuNum; + @FXML + private Label person2StuNum; @FXML private Label person1Name; @FXML @@ -27,8 +35,16 @@ public class CompareWindow extends Stage { @FXML private Label gpaLabel; @FXML - private Label compareMessageLabel; + private Rectangle gpa1Highlight; + @FXML + private Rectangle gpa2Highlight; + /** + * Creates a new instance of the CompareWindow with information about two persons to be compared. + * + * @param person1 The first person for comparison. + * @param person2 The second person for comparison. + */ public CompareWindow(Person person1, Person person2) { FXMLLoader fxmlLoader = new FXMLLoader(MainApp.class.getResource("/view/CompareWindow.fxml")); fxmlLoader.setController(this); @@ -40,27 +56,23 @@ public CompareWindow(Person person1, Person person2) { setTitle("Comparison Result"); - String compareMessage; - Name name1 = person1.getName(); Gpa gpa1 = person1.getGpa(); - Name name2 = person2.getName(); Gpa gpa2 = person2.getGpa(); - person1Name.setText(name1.toString()); + person1StuNum.setText(person1.getStudentNumber().toString()); + person1Name.setText(person1.getName().toString()); person1Gpa.setText(gpa1.toString()); - person2Name.setText(name2.toString()); + + person2StuNum.setText(person2.getStudentNumber().toString()); + person2Name.setText(person2.getName().toString()); person2Gpa.setText(gpa2.toString()); - if (gpa1.compareTo(gpa2) == 0) { - compareMessage = "They have the same GPA, do look out for other criteria!"; - } else if (gpa1.compareTo(gpa2) > 0) { - compareMessage = name1 + " has a higher GPA!"; - } else { - compareMessage = name2 + " has a higher GPA!"; + if (gpa1.compareTo(gpa2) > 0) { + gpa1Highlight.setOpacity(0.33); + } else if (gpa1.compareTo(gpa2) < 0) { + gpa2Highlight.setOpacity(0.33); } - compareMessageLabel.setText(compareMessage); - Scene scene = new Scene(fxmlLoader.getRoot()); setWidth(900); setHeight(600); diff --git a/src/main/resources/view/CompareWindow.fxml b/src/main/resources/view/CompareWindow.fxml index d4964545115..60528ef825c 100644 --- a/src/main/resources/view/CompareWindow.fxml +++ b/src/main/resources/view/CompareWindow.fxml @@ -2,22 +2,41 @@ + - + + - + - + -