diff --git a/src/main/java/app/Config.java b/src/main/java/app/Config.java index 12df0fd5..6d64e05b 100644 --- a/src/main/java/app/Config.java +++ b/src/main/java/app/Config.java @@ -65,5 +65,7 @@ public GetAverageGradeUseCase getAverageGradeUseCase() { return new GetAverageGradeUseCase(gradeDataBase); } + 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 ff61dddc..c163f71e 100644 --- a/src/main/java/app/gui/Application.java +++ b/src/main/java/app/gui/Application.java @@ -23,6 +23,7 @@ import entity.Grade; import usecase.FormTeamUseCase; import usecase.GetAverageGradeUseCase; +import usecase.GetTopGradeUseCase; import usecase.GetGradeUseCase; import usecase.JoinTeamUseCase; import usecase.LeaveTeamUseCase; @@ -55,6 +56,7 @@ 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(() -> { @@ -70,7 +72,8 @@ 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"); @@ -324,14 +327,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 getTopButton = new JButton("Get Top Grade"); final JButton leaveTeamButton = new JButton("Leave Team"); final JLabel resultLabel = new JLabel(); @@ -347,7 +351,7 @@ public void actionPerformed(ActionEvent e) { try { final float avg = getAverageGradeUseCase.getAverageGrade(course); - JOptionPane.showMessageDialog(jFrame, "Average Grade: " + avg); + JOptionPane.showMessageDialog(jFrame, "Top Grade: " + avg); courseField.setText(""); } catch (JSONException ex) { @@ -357,7 +361,26 @@ public void actionPerformed(ActionEvent e) { }); // TODO Task 4: Add action listener for getTopGrade button, follow example of getAverageButton + getTopButton.addActionListener(new ActionListener() { + /** + * Invoked when an action occurs. + * + * @param e the event to be processed + */ + @Override + public void actionPerformed(ActionEvent e) { + final String course = courseField.getText(); + try { + final float top = getTopGradeUseCase.getTopGrade(course); + JOptionPane.showMessageDialog(jFrame, "Average Grade: " + top); + courseField.setText(""); + } + catch (JSONException ex) { + JOptionPane.showMessageDialog(jFrame, ex.getMessage()); + } + } + }); leaveTeamButton.addActionListener(new ActionListener() { /** * Invoked when an action occurs. @@ -379,6 +402,7 @@ public void actionPerformed(ActionEvent e) { theCard.add(new JLabel("The course you want to calculate the team average for:")); theCard.add(courseField); theCard.add(getAverageButton); + theCard.add(getTopButton); theCard.add(leaveTeamButton); theCard.add(resultLabel); return theCard;