mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
multiple bundled courses available
This commit is contained in:
@@ -21,6 +21,9 @@ import com.jetbrains.edu.learning.courseFormat.tasks.TaskWithSubtasks;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public interface EduPluginConfigurator {
|
||||
String EP_NAME = "Edu.pluginConfigurator";
|
||||
LanguageExtension<EduPluginConfigurator> INSTANCE = new LanguageExtension<>(EP_NAME);
|
||||
@@ -126,7 +129,7 @@ public interface EduPluginConfigurator {
|
||||
@Nullable String moduleDir) {
|
||||
}
|
||||
|
||||
default String getBundledCoursePath() {
|
||||
return null;
|
||||
default List<String> getBundledCoursePaths() {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
}
|
||||
|
||||
+7
-6
@@ -119,7 +119,7 @@ public class StudyProjectGenerator {
|
||||
myCourses = execCancelable(() -> EduStepicConnector.getCourses(StepicUpdateSettings.getInstance().getUser()));
|
||||
}
|
||||
if (myCourses == null || myCourses.isEmpty() || (myCourses.size() == 1 && myCourses.contains(Course.INVALID_COURSE))) {
|
||||
myCourses = Collections.singletonList(getBundledIntro());
|
||||
myCourses = getBundledCourses();
|
||||
}
|
||||
sortCourses(myCourses);
|
||||
return myCourses;
|
||||
@@ -172,16 +172,17 @@ public class StudyProjectGenerator {
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public Course getBundledIntro() {
|
||||
public List<Course> getBundledCourses() {
|
||||
final ArrayList<Course> courses = new ArrayList<>();
|
||||
final LanguageExtensionPoint<EduPluginConfigurator>[] extensions = Extensions.getExtensions(EduPluginConfigurator.EP_NAME, null);
|
||||
for (LanguageExtensionPoint<EduPluginConfigurator> extension : extensions) {
|
||||
final EduPluginConfigurator configurator = extension.getInstance();
|
||||
final String path = configurator.getBundledCoursePath();
|
||||
if (path != null) {
|
||||
return getCourse(path);
|
||||
final List<String> paths = configurator.getBundledCoursePaths();
|
||||
for (String path : paths) {
|
||||
courses.add(getCourse(path));
|
||||
}
|
||||
}
|
||||
return null;
|
||||
return courses;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
|
||||
+5
-3
@@ -26,6 +26,8 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
public class PyEduPluginConfigurator implements EduPluginConfigurator {
|
||||
public static final String PYTHON_3 = "3.x";
|
||||
@@ -129,15 +131,15 @@ public class PyEduPluginConfigurator implements EduPluginConfigurator {
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getBundledCoursePath() {
|
||||
public List<String> getBundledCoursePaths() {
|
||||
@NonNls String jarPath = PathUtil.getJarPathForClass(PyEduPluginConfigurator.class);
|
||||
if (jarPath.endsWith(".jar")) {
|
||||
final File jarFile = new File(jarPath);
|
||||
|
||||
File pluginBaseDir = jarFile.getParentFile();
|
||||
return new File(new File(pluginBaseDir, "courses"), "Introduction to Python.zip").getPath();
|
||||
return Collections.singletonList(new File(new File(pluginBaseDir, "courses"), "Introduction to Python.zip").getPath());
|
||||
}
|
||||
|
||||
return new File(new File(jarPath, "courses"), "Introduction to Python.zip").getPath();
|
||||
return Collections.singletonList(new File(new File(jarPath, "courses"), "Introduction to Python.zip").getPath());
|
||||
}
|
||||
}
|
||||
|
||||
+4
-2
@@ -29,6 +29,7 @@ import icons.InteractiveLearningPythonIcons;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.File;
|
||||
import java.util.List;
|
||||
|
||||
public class PyStudyIntroductionCourseAction extends AnAction {
|
||||
|
||||
@@ -46,7 +47,8 @@ public class PyStudyIntroductionCourseAction extends AnAction {
|
||||
return;
|
||||
}
|
||||
final EduPluginConfigurator configurator = EduPluginConfigurator.INSTANCE.forLanguage(PythonLanguage.getInstance());
|
||||
if (configurator.getBundledCoursePath() != null) {
|
||||
final List<String> paths = configurator.getBundledCoursePaths();
|
||||
if (paths.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
Presentation presentation = e.getPresentation();
|
||||
@@ -63,7 +65,7 @@ public class PyStudyIntroductionCourseAction extends AnAction {
|
||||
else {
|
||||
final PyStudyDirectoryProjectGenerator generator = new PyStudyDirectoryProjectGenerator(true);
|
||||
final EduPluginConfigurator configurator = EduPluginConfigurator.INSTANCE.forLanguage(PythonLanguage.getInstance());
|
||||
final String bundledCoursePath = configurator.getBundledCoursePath();
|
||||
final String bundledCoursePath = configurator.getBundledCoursePaths().get(0);
|
||||
Course introCourse = generator.getGenerator().getCourse(bundledCoursePath);
|
||||
if (introCourse == null) {
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user