From d5cecc5783e426c1c6be16ba01a415103efe9fee Mon Sep 17 00:00:00 2001 From: Valentina Kiryushkina Date: Wed, 10 May 2017 12:38:12 +0300 Subject: [PATCH] Wait for a user to be set correctly on project creation panel --- .../edu/learning/ui/StudyNewProjectPanel.java | 2 +- .../PyStudyDirectoryProjectGenerator.java | 31 +++++++++++++++---- 2 files changed, 26 insertions(+), 7 deletions(-) diff --git a/python/educational-core/src/com/jetbrains/edu/learning/ui/StudyNewProjectPanel.java b/python/educational-core/src/com/jetbrains/edu/learning/ui/StudyNewProjectPanel.java index 395cbac973c6..312631f83aa8 100644 --- a/python/educational-core/src/com/jetbrains/edu/learning/ui/StudyNewProjectPanel.java +++ b/python/educational-core/src/com/jetbrains/edu/learning/ui/StudyNewProjectPanel.java @@ -250,7 +250,7 @@ public class StudyNewProjectPanel extends JPanel implements PanelWithAnchor { } } - private void setOK() { + public void setOK() { myGenerator.fireStateChanged(ValidationResult.OK); if (myValidationManager != null) { myValidationManager.validate(); diff --git a/python/educational-python/Edu-Python/src/com/jetbrains/edu/learning/PyStudyDirectoryProjectGenerator.java b/python/educational-python/Edu-Python/src/com/jetbrains/edu/learning/PyStudyDirectoryProjectGenerator.java index 9aabed442922..23279ad0fc70 100644 --- a/python/educational-python/Edu-Python/src/com/jetbrains/edu/learning/PyStudyDirectoryProjectGenerator.java +++ b/python/educational-python/Edu-Python/src/com/jetbrains/edu/learning/PyStudyDirectoryProjectGenerator.java @@ -57,6 +57,7 @@ import java.awt.event.MouseAdapter; import java.awt.event.MouseEvent; import java.util.Collection; import java.util.List; +import java.util.concurrent.TimeUnit; public class PyStudyDirectoryProjectGenerator extends PythonProjectGenerator implements EduCourseProjectGenerator { @@ -203,14 +204,32 @@ public class PyStudyDirectoryProjectGenerator extends PythonProjectGenerator mySettingsPanel.showLoginDialog()); - StepicUser user = StudySettings.getInstance().getUser(); - if (user != null) { - ProgressManager.getInstance().runProcessWithProgressSynchronously( - () -> myGenerator.setEnrolledCoursesIds(EduAdaptiveStepicConnector.getEnrolledCoursesIds(user)), "Getting Enrolled Courses", - true, DefaultProjectFactory.getInstance().getDefaultProject()); - } + ProgressManager.getInstance() + .runProcessWithProgressSynchronously(() -> { + ProgressManager.getInstance().getProgressIndicator().setIndeterminate(true); + StepicUser user = StudyUtils.execCancelable(() -> { + StepicUser newUser = studySettings.getUser(); + while (newUser == null || newUser.equals(oldUser)) { + TimeUnit.MILLISECONDS.sleep(500); + newUser = studySettings.getUser(); + } + myGenerator.setEnrolledCoursesIds(EduAdaptiveStepicConnector.getEnrolledCoursesIds(newUser)); + + + return newUser; + }); + + if (user != null) { + mySettingsPanel.setOK(); + } + }, "Authorizing", + true, + DefaultProjectFactory.getInstance().getDefaultProject()); } }