From a17200d4a295233172963c81405733fde7f43bdf Mon Sep 17 00:00:00 2001 From: i-2049 Date: Mon, 6 Oct 2025 14:05:24 -0400 Subject: [PATCH 1/3] Get Top Grade Button --- src/main/java/app/gui/Application.java | 29 ++++++++++++++++++-------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/src/main/java/app/gui/Application.java b/src/main/java/app/gui/Application.java index ff61dddc..6c6e1838 100644 --- a/src/main/java/app/gui/Application.java +++ b/src/main/java/app/gui/Application.java @@ -21,12 +21,7 @@ import api.MongoGradeDataBase; import app.Config; import entity.Grade; -import usecase.FormTeamUseCase; -import usecase.GetAverageGradeUseCase; -import usecase.GetGradeUseCase; -import usecase.JoinTeamUseCase; -import usecase.LeaveTeamUseCase; -import usecase.LogGradeUseCase; +import usecase.*; /** * GUI class to run the GUI for the Grade App. @@ -324,13 +319,15 @@ public void actionPerformed(ActionEvent e) { // TODO Task 4: modify this method so that it takes in a getTopGradeUseCase // Note: this will require you to update the code that calls this method. private static JPanel createManageTeamCard(JFrame jFrame, LeaveTeamUseCase leaveTeamUseCase, - GetAverageGradeUseCase getAverageGradeUseCase) { + GetAverageGradeUseCase getAverageGradeUseCase, GetTopGradeUseCase getTopGradeUseCase) { final JPanel theCard = new JPanel(); theCard.setLayout(new GridLayout(ROWS, COLS)); final JTextField courseField = new JTextField(20); // make a separate line. final JButton getAverageButton = new JButton("Get Average Grade"); - // TODO Task 4: Add another button for "Get Top Grade" (check the getAverageButton for example) + + final JButton getTopGradeButon = new JButton("Get Top Grade"); + // DONE: TODO Task 4: Add another button for "Get Top Grade" (check the getAverageButton for example) final JButton leaveTeamButton = new JButton("Leave Team"); final JLabel resultLabel = new JLabel(); @@ -356,7 +353,21 @@ public void actionPerformed(ActionEvent e) { } }); - // TODO Task 4: Add action listener for getTopGrade button, follow example of getAverageButton + // DONE: TODO Task 4: Add action listener for getTopGrade button, follow example of getAverageButton + getTopGradeButon.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e){ + final String course = courseField.getText(); + try { + final float top = getTopGradeUseCase.getTopGrade(course); + JOptionPane.showMessageDialog(jFrame, "Top Grade: " + top); + courseField.setText(""); + } + catch (JSONException ex) { + JOptionPane.showMessageDialog(jFrame, ex.getMessage()); + } + } + }); leaveTeamButton.addActionListener(new ActionListener() { /** From 9fc548a63047303acc53d65cc1e9e8939ba45c62 Mon Sep 17 00:00:00 2001 From: i-2049 Date: Mon, 6 Oct 2025 14:09:10 -0400 Subject: [PATCH 2/3] Top grade button --- src/main/java/app/gui/Application.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/main/java/app/gui/Application.java b/src/main/java/app/gui/Application.java index 6c6e1838..da2b0c45 100644 --- a/src/main/java/app/gui/Application.java +++ b/src/main/java/app/gui/Application.java @@ -353,7 +353,6 @@ public void actionPerformed(ActionEvent e) { } }); - // DONE: TODO Task 4: Add action listener for getTopGrade button, follow example of getAverageButton getTopGradeButon.addActionListener(new ActionListener() { @Override public void actionPerformed(ActionEvent e){ From 4887b13e6c72b832a5dedd632c847fcf10c58de9 Mon Sep 17 00:00:00 2001 From: i-2049 Date: Mon, 6 Oct 2025 14:28:56 -0400 Subject: [PATCH 3/3] fixed bug --- src/main/java/app/Config.java | 8 ++++++++ src/main/java/app/gui/Application.java | 4 +++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/src/main/java/app/Config.java b/src/main/java/app/Config.java index 12df0fd5..26904bf4 100644 --- a/src/main/java/app/Config.java +++ b/src/main/java/app/Config.java @@ -65,5 +65,13 @@ public GetAverageGradeUseCase getAverageGradeUseCase() { return new GetAverageGradeUseCase(gradeDataBase); } + + /** + * Get the GetTopGradeUseCase object. + * @return GetTopGradeUseCase object. + */ + public GetTopGradeUseCase getTopGradeUseCase() { + return new GetTopGradeUseCase(gradeDataBase); + } // TODO Task 4: add code for the new GetTopGradeUseCase following the same pattern as the other use cases above. } diff --git a/src/main/java/app/gui/Application.java b/src/main/java/app/gui/Application.java index da2b0c45..3760df4d 100644 --- a/src/main/java/app/gui/Application.java +++ b/src/main/java/app/gui/Application.java @@ -50,6 +50,8 @@ public static void main(String[] args) { final JoinTeamUseCase joinTeamUseCase = config.joinTeamUseCase(); final LeaveTeamUseCase leaveTeamUseCase = config.leaveTeamUseCase(); final GetAverageGradeUseCase getAverageGradeUseCase = config.getAverageGradeUseCase(); + final GetTopGradeUseCase getTopGradeUseCase = config.getTopGradeUseCase(); + // this is the code that runs to set up our GUI SwingUtilities.invokeLater(() -> { @@ -65,7 +67,7 @@ public static void main(String[] args) { final JPanel logGradeCard = createLogGradeCard(frame, logGradeUseCase); final JPanel formTeamCard = createFormTeamCard(frame, formTeamUseCase); final JPanel joinTeamCard = createJoinTeamCard(frame, joinTeamUseCase); - final JPanel manageTeamCard = createManageTeamCard(frame, leaveTeamUseCase, getAverageGradeUseCase); + final JPanel manageTeamCard = createManageTeamCard(frame, leaveTeamUseCase, getAverageGradeUseCase, getTopGradeUseCase); cardPanel.add(defaultCard, "DefaultCard"); cardPanel.add(getGradeCard, "GetGradeCard");