mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
support for tasks and lessons as separate modules
This commit is contained in:
@@ -235,10 +235,17 @@ public class StudyUtils {
|
||||
if (course == null) {
|
||||
return null;
|
||||
}
|
||||
final VirtualFile taskDir = file.getParent();
|
||||
VirtualFile taskDir = file.getParent();
|
||||
if (taskDir == null) {
|
||||
return null;
|
||||
}
|
||||
//need this because of multi-module generation
|
||||
if ("src".equals(taskDir.getName())) {
|
||||
taskDir = taskDir.getParent();
|
||||
if (taskDir == null) {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
final String taskDirName = taskDir.getName();
|
||||
if (taskDirName.contains(EduNames.TASK)) {
|
||||
final VirtualFile lessonDir = taskDir.getParent();
|
||||
@@ -392,6 +399,12 @@ public class StudyUtils {
|
||||
}
|
||||
if (taskDirectory != null) {
|
||||
VirtualFile taskTextFile = taskDirectory.findChild(EduNames.TASK_HTML);
|
||||
if (taskTextFile == null) {
|
||||
VirtualFile srcDir = taskDirectory.findChild("src");
|
||||
if (srcDir != null) {
|
||||
taskTextFile = srcDir.findChild(EduNames.TASK_HTML);
|
||||
}
|
||||
}
|
||||
if (taskTextFile != null) {
|
||||
try {
|
||||
return FileUtil.loadTextAndClose(taskTextFile.getInputStream());
|
||||
|
||||
+2
-1
@@ -92,7 +92,8 @@ abstract public class StudyTaskNavigationAction extends DumbAwareAction {
|
||||
for (Map.Entry<String, TaskFile> entry : nextTaskFiles.entrySet()) {
|
||||
String name = entry.getKey();
|
||||
TaskFile taskFile = entry.getValue();
|
||||
VirtualFile vf = taskDir.findChild(name);
|
||||
VirtualFile srcDir = taskDir.findChild("src");
|
||||
VirtualFile vf = srcDir == null ? taskDir.findChild(name) : srcDir.findChild(name);
|
||||
if (vf != null) {
|
||||
FileEditorManager.getInstance(project).openFile(vf, true);
|
||||
if (!taskFile.getAnswerPlaceholders().isEmpty()) {
|
||||
|
||||
+3
-3
@@ -46,10 +46,10 @@ import java.util.Map;
|
||||
public class StudyProjectGenerator {
|
||||
private static final Logger LOG = Logger.getInstance(StudyProjectGenerator.class.getName());
|
||||
private final List<SettingsListener> myListeners = ContainerUtil.newArrayList();
|
||||
private static final File ourCoursesDir = new File(PathManager.getConfigPath(), "courses");
|
||||
protected static final File ourCoursesDir = new File(PathManager.getConfigPath(), "courses");
|
||||
private static final String CACHE_NAME = "courseNames.txt";
|
||||
private List<CourseInfo> myCourses = new ArrayList<>();
|
||||
private CourseInfo mySelectedCourseInfo;
|
||||
protected CourseInfo mySelectedCourseInfo;
|
||||
private static final String COURSE_NAME_ATTRIBUTE = "name";
|
||||
private static final String COURSE_DESCRIPTION = "description";
|
||||
public static final String AUTHOR_ATTRIBUTE = "authors";
|
||||
@@ -82,7 +82,7 @@ public class StudyProjectGenerator {
|
||||
})));
|
||||
}
|
||||
|
||||
private Course getCourse() {
|
||||
protected Course getCourse() {
|
||||
Reader reader = null;
|
||||
try {
|
||||
final File courseFile = new File(new File(ourCoursesDir, mySelectedCourseInfo.getName()), EduNames.COURSE_META_FILE);
|
||||
|
||||
+11
-13
@@ -41,7 +41,7 @@ public class StudyDirectoryNode extends PsiDirectoryNode {
|
||||
String valueName = myValue.getName();
|
||||
StudyTaskManager studyTaskManager = StudyTaskManager.getInstance(myProject);
|
||||
Course course = studyTaskManager.getCourse();
|
||||
if (course == null || valueName == null) {
|
||||
if (course == null) {
|
||||
return;
|
||||
}
|
||||
if (valueName.equals(myProject.getName())) {
|
||||
@@ -50,19 +50,17 @@ public class StudyDirectoryNode extends PsiDirectoryNode {
|
||||
data.addText(course.getName(), new SimpleTextAttributes(SimpleTextAttributes.STYLE_PLAIN, JBColor.BLACK));
|
||||
}
|
||||
else if (valueName.contains(EduNames.TASK)) {
|
||||
TaskFile file = null;
|
||||
for (PsiElement child : myValue.getChildren()) {
|
||||
VirtualFile virtualFile = child instanceof PsiDirectory ? ((PsiDirectory)child).getVirtualFile() :
|
||||
child.getContainingFile().getVirtualFile();
|
||||
file = StudyUtils.getTaskFile(myProject, virtualFile);
|
||||
if (file != null) {
|
||||
break;
|
||||
VirtualFile taskVirtualFile = myValue.getVirtualFile();
|
||||
VirtualFile lessonVirtualFile = taskVirtualFile.getParent();
|
||||
if (lessonVirtualFile != null) {
|
||||
Lesson lesson = course.getLesson(lessonVirtualFile.getName());
|
||||
if (lesson != null) {
|
||||
Task task = lesson.getTask(taskVirtualFile.getName());
|
||||
if (task != null) {
|
||||
setStudyAttributes(task, data, task.getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
if (file != null) {
|
||||
Task task = file.getTask();
|
||||
setStudyAttributes(task, data, task.getName());
|
||||
}
|
||||
}
|
||||
else if (valueName.contains(EduNames.LESSON)) {
|
||||
int lessonIndex = Integer.parseInt(valueName.substring(EduNames.LESSON.length())) - 1;
|
||||
@@ -73,7 +71,7 @@ public class StudyDirectoryNode extends PsiDirectoryNode {
|
||||
else if (valueName.contains(EduNames.SANDBOX_DIR)) {
|
||||
if (myValue.getParent() != null) {
|
||||
final String parentName = myValue.getParent().getName();
|
||||
if (parentName!= null && !parentName.contains(EduNames.SANDBOX_DIR)) {
|
||||
if (!parentName.contains(EduNames.SANDBOX_DIR)) {
|
||||
data.setPresentableText(EduNames.SANDBOX_DIR);
|
||||
data.setIcon(InteractiveLearningIcons.Sandbox);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user