From 231cd4b8e23155110034633ef51ee65ea86d8c74 Mon Sep 17 00:00:00 2001 From: Valentina Kiryushkina Date: Mon, 19 Jun 2017 13:52:16 +0300 Subject: [PATCH] EDU-975 Do all course-dependant actions after project initialized as now we set course during project generation --- .../edu/learning/StudyProjectComponent.java | 64 +++++++++---------- 1 file changed, 29 insertions(+), 35 deletions(-) diff --git a/python/educational-core/src/com/jetbrains/edu/learning/StudyProjectComponent.java b/python/educational-core/src/com/jetbrains/edu/learning/StudyProjectComponent.java index 776b8236da08..c87e0deafd7b 100644 --- a/python/educational-core/src/com/jetbrains/edu/learning/StudyProjectComponent.java +++ b/python/educational-core/src/com/jetbrains/edu/learning/StudyProjectComponent.java @@ -20,7 +20,6 @@ import com.intellij.openapi.keymap.ex.KeymapManagerEx; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.progress.ProgressManager; -import com.intellij.openapi.project.DumbAwareRunnable; import com.intellij.openapi.project.Project; import com.intellij.openapi.startup.StartupManager; import com.intellij.openapi.util.Pair; @@ -77,31 +76,36 @@ public class StudyProjectComponent implements ProjectComponent { @Override public void projectOpened() { - Course course = StudyTaskManager.getInstance(myProject).getCourse(); // Check if user has javafx lib in his JDK. Now bundled JDK doesn't have this lib inside. if (StudyUtils.hasJavaFx()) { Platform.setImplicitExit(false); } - if (course != null && !course.isAdaptive() && !course.isUpToDate()) { - updateAvailable(course); - } - - if (course != null) { - addStepicWidget(); - } - - StudyUtils.registerStudyToolWindow(course, myProject); - StartupManager.getInstance(myProject).runWhenProjectIsInitialized(() -> ApplicationManager.getApplication().invokeLater( - (DumbAwareRunnable)() -> ApplicationManager.getApplication().runWriteAction((DumbAwareRunnable)() -> { - if (course != null) { - UISettings instance = UISettings.getInstance(); - instance.setHideToolStripes(false); - instance.fireUISettingsChanged(); - registerShortcuts(); - EduUsagesCollector.projectTypeOpened(course.isAdaptive() ? EduNames.ADAPTIVE : EduNames.STUDY); + StartupManager.getInstance(myProject).runWhenProjectIsInitialized( + () -> { + Course course = StudyTaskManager.getInstance(myProject).getCourse(); + if (course == null) { + LOG.warn("Opened project is with null course"); + return; } - }))); + + if (!course.isAdaptive() && !course.isUpToDate()) { + updateAvailable(course); + } + + StudyUtils.registerStudyToolWindow(course, myProject); + addStepicWidget(); + selectStep(course); + + ApplicationManager.getApplication().invokeLater(() -> ApplicationManager.getApplication().runWriteAction(() -> { + UISettings instance = UISettings.getInstance(); + instance.setHideToolStripes(false); + instance.fireUISettingsChanged(); + registerShortcuts(); + EduUsagesCollector.projectTypeOpened(course.isAdaptive() ? EduNames.ADAPTIVE : EduNames.STUDY); + })); + } + ); myBusConnection = ApplicationManager.getApplication().getMessageBus().connect(); myBusConnection.subscribe(EditorColorsManager.TOPIC, new EditorColorsListener() { @@ -113,8 +117,6 @@ public class StudyProjectComponent implements ProjectComponent { } } }); - - selectStep(); } private void addStepicWidget() { @@ -128,19 +130,11 @@ public class StudyProjectComponent implements ProjectComponent { } } - private void selectStep() { - StartupManager.getInstance(myProject).runWhenProjectIsInitialized(() -> { - int stepId = PropertiesComponent.getInstance().getInt(STEP_ID, 0); - - if (stepId != 0) { - StudyTaskManager taskManager = StudyTaskManager.getInstance(myProject); - Course course = taskManager.getCourse(); - if (course != null) { - - navigateToStep(myProject, course, stepId); - } - } - }); + private void selectStep(@NotNull Course course) { + int stepId = PropertiesComponent.getInstance().getInt(STEP_ID, 0); + if (stepId != 0) { + navigateToStep(myProject, course, stepId); + } } private void updateAvailable(Course course) {