Skip to content

Commit d332327

Browse files
committed
Show organization or course list, or settings depending on server address
1 parent 7b98f88 commit d332327

File tree

7 files changed

+82
-46
lines changed

7 files changed

+82
-46
lines changed

tmc-plugin/src/fi/helsinki/cs/tmc/actions/SaveSettingsAction.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,8 +45,9 @@ public void actionPerformed(ActionEvent e) {
4545
PreferencesUI prefUi = (PreferencesUI) e.getSource();
4646

4747
TmcCoreSettingsImpl settings = (TmcCoreSettingsImpl) TmcSettingsHolder.get();
48-
49-
TmcServerAddressNormalizer.normalize();
48+
TmcServerAddressNormalizer normalizer = new TmcServerAddressNormalizer();
49+
normalizer.normalize();
50+
normalizer.selectOrganizationAndCourse();
5051
settings.setProjectRootDir(prefUi.getProjectDir());
5152
settings.setCheckingForUpdatesInTheBackground(prefUi.getCheckForUpdatesInTheBackground());
5253
settings.setCheckingForUnopenedAtStartup(prefUi.getCheckForUnopenedExercisesAtStartup());

tmc-plugin/src/fi/helsinki/cs/tmc/coreimpl/TmcCoreSettingsImpl.java

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -82,11 +82,6 @@ public String clientVersion() {
8282

8383
}
8484

85-
@Override
86-
public String getFormattedUserData() {
87-
return "";
88-
}
89-
9085
@Override
9186
public Path getTmcProjectDirectory() {
9287
return Paths.get(getProjectRootDir());
@@ -104,13 +99,12 @@ public SystemDefaultRoutePlanner proxy() {
10499
}
105100

106101
@Override
107-
public void setCourse(Course course) {
108-
CourseDb.getInstance().setCurrentCourseName(course.getName());
109-
}
110-
111-
@Override
112-
public void setConfigRoot(Path path) {
113-
// NOP - can't change.
102+
public void setCourse(Optional<Course> course) {
103+
String selected = null;
104+
if (course.isPresent()) {
105+
selected = course.get().getName();
106+
}
107+
CourseDb.getInstance().setCurrentCourseName(selected);
114108
}
115109

116110
@Override

tmc-plugin/src/fi/helsinki/cs/tmc/ui/CourseListWindow.java

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
import java.awt.Color;
1010
import java.awt.Component;
1111
import java.awt.Dimension;
12+
import java.awt.Font;
1213
import java.awt.event.ActionEvent;
1314
import java.awt.event.ActionListener;
1415
import java.awt.event.MouseAdapter;
@@ -33,12 +34,16 @@
3334
public class CourseListWindow extends JPanel {
3435

3536
private static JFrame frame;
37+
private final JLabel title;
3638
private final JList<CourseCard> courses;
3739
private PreferencesPanel prefPanel;
3840
private static JButton button;
3941

4042
public CourseListWindow(List<Course> courses, PreferencesPanel prefPanel) {
41-
this.prefPanel = prefPanel;
43+
this.prefPanel = prefPanel;
44+
this.title = new JLabel("Select a course:");
45+
Font titleFont = this.title.getFont();
46+
this.title.setFont(new Font(titleFont.getName(), Font.BOLD, 20));
4247
CourseCard[] courseCards = new CourseCard[courses.size()];
4348
for (int i = 0; i < courses.size(); i++) {
4449
courseCards[i] = new CourseCard(courses.get(i));
@@ -67,13 +72,21 @@ public void mouseClicked(MouseEvent event) {
6772
}
6873
}
6974
});
75+
76+
add(title);
7077
add(pane);
7178
add(button);
7279
}
7380

74-
public static void display(PreferencesPanel prefPanel) throws Exception {
81+
public static void display() throws Exception {
82+
PreferencesPanel prefPanel;
83+
if (PreferencesUIFactory.getInstance().getCurrentUI() == null) {
84+
prefPanel = (PreferencesPanel) PreferencesUIFactory.getInstance().createCurrentPreferencesUI();
85+
} else {
86+
prefPanel = (PreferencesPanel) PreferencesUIFactory.getInstance().getCurrentUI();
87+
}
7588
if (frame == null) {
76-
frame = new JFrame("Select a course");
89+
frame = new JFrame("Courses");
7790
}
7891
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
7992
List<Course> courses = prefPanel.getAvailableCourses();

tmc-plugin/src/fi/helsinki/cs/tmc/ui/LoginDialog.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package fi.helsinki.cs.tmc.ui;
22

33
import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
4+
import fi.helsinki.cs.tmc.core.utilities.TmcServerAddressNormalizer;
45
import fi.helsinki.cs.tmc.coreimpl.TmcCoreSettingsImpl;
56

67
import com.google.common.base.Optional;

tmc-plugin/src/fi/helsinki/cs/tmc/ui/OrganizationListWindow.java

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import java.awt.Color;
1111
import java.awt.Component;
1212
import java.awt.Dimension;
13+
import java.awt.Font;
1314
import java.awt.event.ActionEvent;
1415
import java.awt.event.ActionListener;
1516
import java.awt.event.MouseAdapter;
@@ -34,10 +35,14 @@
3435
public class OrganizationListWindow extends JPanel {
3536

3637
private static JFrame frame;
38+
private final JLabel title;
3739
private final JList<OrganizationCard> organizations;
3840
private static JButton button;
3941

4042
public OrganizationListWindow(List<Organization> organizations) {
43+
this.title = new JLabel("Select an organization:");
44+
Font titleFont = this.title.getFont();
45+
this.title.setFont(new Font(titleFont.getName(), Font.BOLD, 20));
4146
OrganizationCard[] organizationCards = new OrganizationCard[organizations.size()];
4247
for (int i = 0; i < organizations.size(); i++) {
4348
organizationCards[i] = new OrganizationCard(organizations.get(i));
@@ -67,14 +72,15 @@ public void mouseClicked(MouseEvent event) {
6772
}
6873
}
6974
});
70-
75+
76+
add(title);
7177
add(pane);
7278
add(button);
7379
}
7480

7581
public static void display() throws Exception {
7682
if (frame == null) {
77-
frame = new JFrame("Select an organization");
83+
frame = new JFrame("Organizations");
7884
}
7985
frame.setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
8086
List<Organization> organizations = TmcCore.get().getOrganizations(ProgressObserver.NULL_OBSERVER).call();
@@ -146,7 +152,7 @@ public void actionPerformed(ActionEvent e) {
146152
panel = (PreferencesPanel) PreferencesUIFactory.getInstance().getCurrentUI();
147153
}
148154
panel.setOrganization(organization);
149-
CourseListWindow.display(panel);
155+
CourseListWindow.display();
150156
} catch (Exception ex) {
151157
Exceptions.printStackTrace(ex);
152158
}

tmc-plugin/src/fi/helsinki/cs/tmc/ui/PreferencesPanel.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ public void setProjectDir(String projectDir) {
9898
}
9999

100100
public void setSelectedCourse(Course course) {
101-
TmcSettingsHolder.get().setCourse(course);
101+
TmcSettingsHolder.get().setCourse(Optional.of(course));
102102
this.selectedCourseLabel.setText(course.getName());
103103
}
104104

@@ -481,7 +481,7 @@ private void folderChooserBtnActionPerformed(java.awt.event.ActionEvent evt) {//
481481

482482
private void changeCourseButtonActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_changeCourseButtonActionPerformed
483483
try {
484-
CourseListWindow.display(this);
484+
CourseListWindow.display();
485485
} catch (Exception ex) {
486486
}
487487
updateSettingsForRefresh();

tmc-plugin/src/fi/helsinki/cs/tmc/utilities/LoginManager.java

Lines changed: 45 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,17 @@
11
package fi.helsinki.cs.tmc.utilities;
22

33
import com.google.common.base.Optional;
4+
import fi.helsinki.cs.tmc.actions.ShowSettingsAction;
45

56
import fi.helsinki.cs.tmc.core.TmcCore;
7+
import fi.helsinki.cs.tmc.core.configuration.TmcSettings;
68
import fi.helsinki.cs.tmc.core.domain.OauthCredentials;
79
import fi.helsinki.cs.tmc.core.domain.Organization;
810
import fi.helsinki.cs.tmc.core.domain.ProgressObserver;
911
import fi.helsinki.cs.tmc.core.events.TmcEventBus;
1012
import fi.helsinki.cs.tmc.core.exceptions.AuthenticationFailedException;
1113
import fi.helsinki.cs.tmc.core.holders.TmcSettingsHolder;
14+
import fi.helsinki.cs.tmc.core.utilities.TmcServerAddressNormalizer;
1215
import fi.helsinki.cs.tmc.coreimpl.TmcCoreSettingsImpl;
1316
import fi.helsinki.cs.tmc.events.LoginStateChangedEvent;
1417
import fi.helsinki.cs.tmc.model.CourseDb;
@@ -55,29 +58,36 @@ public void run() {
5558
SwingUtilities.invokeLater(new Runnable() {
5659
@Override
5760
public void run() {
58-
LoginDialog.display(new ActionListener() {
59-
@Override
60-
public void actionPerformed(ActionEvent e) {
61-
try {
62-
TmcCore.get().authenticate(ProgressObserver.NULL_OBSERVER, TmcSettingsHolder.get().getPassword().get()).call();
63-
} catch (Exception ex) {
64-
if (ex instanceof IOException) {
65-
connectionException = (IOException)ex;
66-
if (ex instanceof UnknownHostException) {
67-
ConvenientDialogDisplayer.getDefault().displayError("Couldn't connect to the server. Please check your internet connection.");
68-
} else if (ex instanceof FileNotFoundException) {
69-
ConvenientDialogDisplayer.getDefault().displayError("Server address is incorrect.");
70-
}
71-
}
72-
if (ex instanceof AuthenticationFailedException) {
73-
authenticationException = (AuthenticationFailedException) ex;
74-
ConvenientDialogDisplayer.getDefault().displayError("Username or password is incorrect.", ex);
61+
if (loggedIn()) {
62+
showOrganizationsOrCourses();
63+
} else {
64+
LoginDialog.display(new ActionListener() {
65+
@Override
66+
public void actionPerformed(ActionEvent e) {
67+
try {
68+
TmcServerAddressNormalizer normalizer = new TmcServerAddressNormalizer();
69+
normalizer.normalize();
70+
TmcCore.get().authenticate(ProgressObserver.NULL_OBSERVER, TmcSettingsHolder.get().getPassword().get()).call();
71+
normalizer.selectOrganizationAndCourse();
72+
} catch (Exception ex) {
73+
if (ex instanceof IOException) {
74+
connectionException = (IOException) ex;
75+
if (ex instanceof UnknownHostException) {
76+
ConvenientDialogDisplayer.getDefault().displayError("Couldn't connect to the server. Please check your internet connection.");
77+
} else if (ex instanceof FileNotFoundException) {
78+
ConvenientDialogDisplayer.getDefault().displayError("Server address is incorrect.");
79+
}
80+
}
81+
if (ex instanceof AuthenticationFailedException) {
82+
authenticationException = (AuthenticationFailedException) ex;
83+
ConvenientDialogDisplayer.getDefault().displayError("Username or password is incorrect.", ex);
84+
}
7585
}
86+
setReady(true);
87+
bus.post(new LoginStateChangedEvent());
7688
}
77-
setReady(true);
78-
bus.post(new LoginStateChangedEvent());
79-
}
80-
}, closeHandler);
89+
}, closeHandler);
90+
}
8191
}
8292
});
8393
while (!ready) {
@@ -90,20 +100,31 @@ public void actionPerformed(ActionEvent e) {
90100
if (connectionException != null) {
91101
throw connectionException;
92102
}
93-
showOrganizations();
103+
if (loggedIn()) {
104+
showOrganizationsOrCourses();
105+
}
94106
}
95107

96108
public void setReady(boolean value) {
97109
this.ready = value;
98110
}
99111

100-
private void showOrganizations() {
101-
if (!TmcSettingsHolder.get().getOrganization().isPresent() && loggedIn()) {
112+
private void showOrganizationsOrCourses() {
113+
TmcSettings settings = TmcSettingsHolder.get();
114+
if (!settings.getOrganization().isPresent()) {
102115
try {
103116
OrganizationListWindow.display();
104117
} catch (Exception ex) {
105118
log.log(Level.WARNING, "Unable to show organizations", ex);
106119
}
120+
} else if (!settings.getCurrentCourse().isPresent()) {
121+
try {
122+
CourseListWindow.display();
123+
} catch (Exception ex) {
124+
log.log(Level.WARNING, "Unable to show courses", ex);
125+
}
126+
} else {
127+
new ShowSettingsAction().run();
107128
}
108129
}
109130

0 commit comments

Comments
 (0)