Skip to content

Commit ea48ce8

Browse files
authored
Merge pull request #85 from CSC207-2022F-UofT/8-feature-main-home-page
Implemented refresh on home page
2 parents 8127b97 + 4f54429 commit ea48ce8

File tree

11 files changed

+150
-54
lines changed

11 files changed

+150
-54
lines changed

.idea/misc.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/main/java/editor_main_page/FlashcardDataPanel.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -69,14 +69,14 @@ else if(event.getActionCommand().equals("Delete Flashcard")){
6969
@Override
7070
public void windowOpened(WindowEvent e) {}
7171
@Override
72-
public void windowClosing(WindowEvent e) {}
73-
@Override
74-
public void windowClosed(WindowEvent e) {
72+
public void windowClosing(WindowEvent e) {
7573
//When observing a window close we refresh the page.
7674
frame.dispose();
7775
new EditorMainPage(flashcardSetId);
7876
}
7977
@Override
78+
public void windowClosed(WindowEvent e) {}
79+
@Override
8080
public void windowIconified(WindowEvent e) {}
8181
@Override
8282
public void windowDeiconified(WindowEvent e) {}

src/main/java/login_and_signup_use_case/UserLoginInteractor.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ public UserLoginResponseModel login(UserLoginRequestModel userLoginRequestModel)
4545
}
4646

4747
UserLoginResponseModel accountResponseModel = new UserLoginResponseModel(tempUser.getUsername(),
48+
tempUser.getPassword(),
4849
tempUser.getIsAdmin(), flashcardSets);
4950
return userLoginOutputBoundary.prepareSuccessView(accountResponseModel);
5051
}

src/main/java/login_and_signup_use_case/UserLoginResponseModel.java

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,8 @@
1010
public class UserLoginResponseModel {
1111
String username;
1212

13+
String password;
14+
1315
boolean isAdmin;
1416

1517
Map<Integer, String[]> flashcardSets;
@@ -21,8 +23,9 @@ public class UserLoginResponseModel {
2123
* @param flashcardSets the flashcard sets map pertaining to the user obtained by the login interactor, where each id
2224
* pertains to its title and description
2325
*/
24-
public UserLoginResponseModel(String loggedInUsername, boolean isAdmin, Map<Integer, String[]> flashcardSets){
26+
public UserLoginResponseModel(String loggedInUsername, String password, boolean isAdmin, Map<Integer, String[]> flashcardSets){
2527
this.username = loggedInUsername;
28+
this.password = password;
2629
this.isAdmin = isAdmin;
2730
this.flashcardSets = flashcardSets;
2831
}
@@ -35,6 +38,12 @@ public String getSignedInUsername() {
3538
return username;
3639
}
3740

41+
/**
42+
* Gets the password of the user as saved in the database
43+
* @return the password that the user stored
44+
*/
45+
public String getPassword() { return password; }
46+
3847
/**
3948
* Gets whether the user is saved as an admin in the database
4049
* @return the admin level access of the user as stored in the database

src/main/java/login_and_signup_use_case/login_and_signup_use_case_screens/LoginScreen.java

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import main_page.HomePage;
44
import login_and_signup_use_case.UserLoginResponseModel;
5+
import data_access.*;
56
import view.Screen;
67

78
import javax.swing.*;
@@ -87,7 +88,12 @@ public void actionPerformed(ActionEvent evt) {
8788
UserLoginResponseModel user = userLoginController.create(username.getText(),
8889
String.valueOf(password.getPassword()));
8990
this.dispose();
90-
new HomePage(user);
91+
IFlashcardSetDataAccess flashcardSetDataAccess = new FlashcardSetDataAccess(DBGateway.getFlashcardSetPath());
92+
IFlashcardDataAccess flashcardDataAccess = new FlashcardDataAccess(DBGateway.getFlashcardPath());
93+
IUserDataAccess userDataAccess = new CommonUserDataAccess(DBGateway.getUserPath());
94+
DBGateway gateway = new DBGateway(flashcardDataAccess,
95+
flashcardSetDataAccess, userDataAccess);
96+
new HomePage(user, gateway);
9197
} catch (Exception e) {
9298
JOptionPane.showMessageDialog(this, e.getMessage());
9399
}

src/main/java/login_and_signup_use_case/login_and_signup_use_case_screens/RegisterScreen.java

Lines changed: 10 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import main_page.HomePage;
44
import login_and_signup_use_case.*;
5+
import data_access.*;
56
import view.Screen;
67

78
import javax.swing.*;
@@ -17,7 +18,7 @@
1718
* @author Aryan Chablani (with inspiration from Professor Paul Gries)
1819
*/
1920

20-
public class RegisterScreen extends Screen implements ActionListener {
21+
public class RegisterScreen extends JFrame implements ActionListener {
2122

2223
private final UserLoginController userLoginController;
2324
/**
@@ -89,7 +90,7 @@ public RegisterScreen(UserRegisterController registerController, UserLoginContro
8990
}
9091

9192
/**
92-
* React to a button click that results in evt, usually sign up.
93+
* React to a button click that results in evt.
9394
*/
9495
public void actionPerformed(ActionEvent evt) {
9596
System.out.println("Click " + evt.getActionCommand());
@@ -113,7 +114,12 @@ public void actionPerformed(ActionEvent evt) {
113114
UserLoginResponseModel user = userLoginController.create(newUser.getSignedUpUsername(),
114115
newUser.getSignedUpPassword());
115116
try {
116-
new HomePage(user);
117+
IFlashcardSetDataAccess flashcardSetDataAccess = new FlashcardSetDataAccess(DBGateway.getFlashcardSetPath());
118+
IFlashcardDataAccess flashcardDataAccess = new FlashcardDataAccess(DBGateway.getFlashcardPath());
119+
IUserDataAccess userDataAccess = new CommonUserDataAccess(DBGateway.getUserPath());
120+
DBGateway gateway = new DBGateway(flashcardDataAccess,
121+
flashcardSetDataAccess, userDataAccess);
122+
new HomePage(user, gateway);
117123
dispose();
118124
} catch (IOException e) {
119125
throw new RuntimeException(e);
@@ -122,6 +128,7 @@ public void actionPerformed(ActionEvent evt) {
122128
catch (UserRegistrationFailed e){
123129
JOptionPane.showMessageDialog(this, e.getMessage());
124130
}
131+
125132
}
126133
}
127134
}

src/main/java/login_and_signup_use_case/login_and_signup_use_case_screens/UserLoginController.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,7 @@ public UserLoginController(UserLoginInputBoundary loginGateway) {
3232
* @param password The password used to log in
3333
* @return The response given by the response model
3434
*/
35-
UserLoginResponseModel create(String username, String password) {
35+
public UserLoginResponseModel create(String username, String password) {
3636
UserLoginRequestModel requestModel = new UserLoginRequestModel(username, password);
3737
return userInput.login(requestModel);
3838
}

src/main/java/main_page/FlashcardSetDataPanel.java

Lines changed: 48 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,21 @@
1111

1212
import javax.swing.*;
1313
import javax.swing.border.Border;
14+
import java.awt.*;
15+
import java.awt.event.WindowEvent;
16+
import java.awt.event.WindowListener;
1417

15-
public class FlashcardSetDataPanel extends JPanel {
16-
18+
public class FlashcardSetDataPanel extends JPanel implements WindowListener {
19+
HomePage home;
1720
public FlashcardSetDataPanel(String title, String description,
1821
int flashcardSetId, DBGateway gateway,
19-
UserLoginResponseModel user) {
22+
UserLoginResponseModel user, HomePage home) {
2023
Border border = BorderFactory.createTitledBorder(title);
2124

2225

2326
JLabel descriptionLabel = new JLabel(description);
2427
this.add(descriptionLabel);
25-
28+
this.home = home;
2629
JPanel buttons = new JPanel();
2730

2831
JButton study = new JButton("Study");
@@ -36,7 +39,11 @@ public FlashcardSetDataPanel(String title, String description,
3639
buttons.add(edit);
3740
buttons.add(delete);
3841

39-
edit.addActionListener((e) -> new EditorMainPage(flashcardSetId));
42+
edit.addActionListener((e) -> {
43+
EditorMainPage editor = new EditorMainPage(flashcardSetId);
44+
editor.addWindowListener(this);
45+
});
46+
4047
study.addActionListener(e -> {
4148
StudySessionOutputBoundary presenter = new StudySessionPresenter();
4249
StudySessionInputBoundary interactor = new StudySessionInteractor(gateway, presenter);
@@ -54,7 +61,8 @@ public FlashcardSetDataPanel(String title, String description,
5461
DelFlashcardSetOutputBoundary presenter = new DelFlashcardSetPresenter();
5562
DelFlashcardSetInputBoundary interactor = new DelFlashcardSetInteractor(gateway, presenter);
5663
DelFlashcardSetController controller = new DelFlashcardSetController(interactor);
57-
new DeletionScreen(flashcardSetId, controller, user, gateway);
64+
DeletionScreen deleter = new DeletionScreen(flashcardSetId, controller, user, gateway);
65+
deleter.addWindowListener(this);
5866
});
5967

6068
this.add(buttons);
@@ -63,4 +71,38 @@ public FlashcardSetDataPanel(String title, String description,
6371
}
6472

6573

74+
@Override
75+
public void windowOpened(WindowEvent e) {
76+
77+
}
78+
79+
@Override
80+
public void windowClosing(WindowEvent e) {
81+
}
82+
83+
@Override
84+
public void windowClosed(WindowEvent e) {
85+
home.refresh();
86+
87+
}
88+
89+
@Override
90+
public void windowIconified(WindowEvent e) {
91+
92+
}
93+
94+
@Override
95+
public void windowDeiconified(WindowEvent e) {
96+
97+
}
98+
99+
@Override
100+
public void windowActivated(WindowEvent e) {
101+
102+
}
103+
104+
@Override
105+
public void windowDeactivated(WindowEvent e) {
106+
107+
}
66108
}

src/main/java/main_page/HomePage.java

Lines changed: 64 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,39 @@
11
package main_page;
22

3+
import editor_main_page.EditorMainPage;
34
import create_flashcard_set_use_case.*;
45
import data_access.*;
56
import entities.FlashcardSetFactory;
7+
import login_and_signup_use_case.UserLoginInputBoundary;
8+
import login_and_signup_use_case.UserLoginInteractor;
9+
import login_and_signup_use_case.UserLoginOutputBoundary;
610
import login_and_signup_use_case.UserLoginResponseModel;
11+
import login_and_signup_use_case.login_and_signup_use_case_screens.UserLoginController;
12+
import login_and_signup_use_case.login_and_signup_use_case_screens.UserLoginPresenter;
713
import login_and_signup_use_case.login_and_signup_use_case_screens.WelcomeScreen;
814
import search_use_case.*;
915
import view.Screen;
1016

1117
import javax.swing.*;
1218
import java.awt.*;
19+
import java.awt.event.WindowEvent;
20+
import java.awt.event.WindowListener;
1321
import java.io.IOException;
1422
import java.util.HashMap;
1523
import java.util.Map;
1624

17-
public class HomePage extends Screen {
25+
public class HomePage extends Screen implements WindowListener {
1826

1927
UserLoginResponseModel user;
2028
DBGateway gateway;
2129

22-
public HomePage(UserLoginResponseModel user) throws IOException {
30+
public HomePage(UserLoginResponseModel user, DBGateway gateway) throws IOException {
2331
super(user.getSignedInUsername() + "'s home page");
24-
32+
this.gateway = gateway;
2533
this.user = user;
2634
// home page layout
2735
getContentPane().setLayout(new BoxLayout(getContentPane(),BoxLayout.Y_AXIS));
2836

29-
// initialize DBGateway
30-
IFlashcardSetDataAccess flashcardSetDataAccess = new FlashcardSetDataAccess(DBGateway.getFlashcardSetPath());
31-
IFlashcardDataAccess flashcardDataAccess = new FlashcardDataAccess(DBGateway.getFlashcardPath());
32-
IUserDataAccess userDataAccess = new CommonUserDataAccess(DBGateway.getUserPath());
33-
DBGateway gateway = new DBGateway(flashcardDataAccess,
34-
flashcardSetDataAccess, userDataAccess);
35-
3637
// top bar
3738
JPanel topBar = new JPanel();
3839
topBar.setLayout(new FlowLayout(FlowLayout.CENTER, 20, 20));
@@ -54,8 +55,8 @@ public HomePage(UserLoginResponseModel user) throws IOException {
5455
FlashcardSetInteractor interactor = new FlashcardSetInteractor(gateway, presenter,
5556
setFactory);
5657
FlashcardSetController controller = new FlashcardSetController(interactor);
57-
new CreationScreen(controller, user);
58-
58+
CreationScreen creation = new CreationScreen(controller, user);
59+
creation.addWindowListener(this);
5960
});
6061

6162
logOff.addActionListener(e -> {
@@ -87,38 +88,68 @@ public HomePage(UserLoginResponseModel user) throws IOException {
8788
this.add(labelPanel);
8889
}
8990
else {
90-
this.add(new ListOfFlashcardSetsDataPanel(idsToFlashcardSetData, gateway, user));
91+
this.add(new ListOfFlashcardSetsDataPanel(idsToFlashcardSetData, gateway, user, this));
9192
}
9293
this.setSize(1000, 800);
9394
this.setVisible(true);
9495
this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
9596
}
9697

9798

98-
private void refresh() {
99+
public void refresh() {
99100
try {
100-
// UserLoginOutputBoundary presenter = new UserLoginPresenter();
101-
// UserLoginInputBoundary interactor = new UserLoginInteractor(
102-
// gateway, presenter);
103-
// UserLoginController userLoginController = new UserLoginController(interactor);
104-
// setVisible(false);
105-
// dispose();
106-
// new LoginScreen(userLoginController).setVisible(true);
107-
//
108-
// UserLoginResponseModel user = userLoginController.create(user.getSignedInUsername(),
109-
// user.getPassword());
110-
// this.dispose();
111-
new HomePage(user);
101+
IFlashcardSetDataAccess flashcardSetDataAccess = new FlashcardSetDataAccess(DBGateway.getFlashcardSetPath());
102+
IFlashcardDataAccess flashcardDataAccess = new FlashcardDataAccess(DBGateway.getFlashcardPath());
103+
IUserDataAccess userDataAccess = new CommonUserDataAccess(DBGateway.getUserPath());
104+
DBGateway gateway = new DBGateway(flashcardDataAccess,
105+
flashcardSetDataAccess, userDataAccess);
106+
UserLoginOutputBoundary presenter = new UserLoginPresenter();
107+
UserLoginInputBoundary interactor = new UserLoginInteractor(
108+
gateway, presenter);
109+
UserLoginController userLoginController = new UserLoginController(interactor);
110+
setVisible(false);
111+
112+
user = userLoginController.create(user.getSignedInUsername(),
113+
user.getPassword());
114+
this.dispose();
115+
new HomePage(user, gateway);
112116
} catch (Exception e) {
113117
JOptionPane.showMessageDialog(this, e.getMessage());
114118
}
115119
}
116-
public static void main(String[] args) throws IOException {
117-
Map<Integer, String[]> map = new HashMap<>();
118-
for (int i = 1; i < 4; i++) {
119-
map.put(i, new String[]{"test set " + i, "test description " + i});
120-
}
121-
UserLoginResponseModel user = new UserLoginResponseModel("Lucas", false, map);
122-
new HomePage(user);
120+
121+
@Override
122+
public void windowOpened(WindowEvent e) {
123+
124+
}
125+
126+
@Override
127+
public void windowClosing(WindowEvent e) {
128+
129+
}
130+
131+
@Override
132+
public void windowClosed(WindowEvent e) {
133+
refresh();
134+
}
135+
136+
@Override
137+
public void windowIconified(WindowEvent e) {
138+
139+
}
140+
141+
@Override
142+
public void windowDeiconified(WindowEvent e) {
143+
144+
}
145+
146+
@Override
147+
public void windowActivated(WindowEvent e) {
148+
149+
}
150+
151+
@Override
152+
public void windowDeactivated(WindowEvent e) {
153+
123154
}
124155
}

0 commit comments

Comments
 (0)