mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
open proper test file when switching between subtasks
This commit is contained in:
committed by
liana.bakradze
parent
eb7dd75409
commit
7a30e80e95
@@ -33,6 +33,7 @@
|
||||
<studyActionsProvider implementation="com.jetbrains.edu.coursecreator.CCStudyActionsProvider"/>
|
||||
<studyActionListener implementation="com.jetbrains.edu.coursecreator.CCStudyActionListener"/>
|
||||
<optionsProvider instance="com.jetbrains.edu.coursecreator.settings.CCOptions"/>
|
||||
<studySubtaskChangeListener implementation="com.jetbrains.edu.coursecreator.CCSubtaskChangeListener"/>
|
||||
</extensions>
|
||||
|
||||
<project-components>
|
||||
|
||||
+56
@@ -0,0 +1,56 @@
|
||||
package com.jetbrains.edu.coursecreator;
|
||||
|
||||
import com.intellij.openapi.fileEditor.FileEditorManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.util.io.FileUtilRt;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.jetbrains.edu.learning.StudyLanguageManager;
|
||||
import com.jetbrains.edu.learning.StudySubtaskChangeListener;
|
||||
import com.jetbrains.edu.learning.StudyTaskManager;
|
||||
import com.jetbrains.edu.learning.StudyUtils;
|
||||
import com.jetbrains.edu.learning.core.EduNames;
|
||||
import com.jetbrains.edu.learning.courseFormat.Course;
|
||||
import com.jetbrains.edu.learning.courseFormat.Task;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
public class CCSubtaskChangeListener implements StudySubtaskChangeListener {
|
||||
@Override
|
||||
public void subtaskChanged(@NotNull Project project, @NotNull Task task, int oldSubtaskNumber, int newSubtaskNumber) {
|
||||
VirtualFile taskDir = task.getTaskDir(project);
|
||||
if (taskDir == null) {
|
||||
return;
|
||||
}
|
||||
Course course = StudyTaskManager.getInstance(project).getCourse();
|
||||
if (course == null) {
|
||||
return;
|
||||
}
|
||||
StudyLanguageManager manager = StudyUtils.getLanguageManager(course);
|
||||
if (manager == null) {
|
||||
return;
|
||||
}
|
||||
String testFileName = manager.getTestFileName();
|
||||
if (newSubtaskNumber != 0) {
|
||||
String nameWithoutExtension = FileUtil.getNameWithoutExtension(testFileName);
|
||||
String extension = FileUtilRt.getExtension(testFileName);
|
||||
testFileName = nameWithoutExtension + EduNames.SUBTASK_MARKER + newSubtaskNumber + "." + extension;
|
||||
}
|
||||
VirtualFile newTestFile = taskDir.findChild(testFileName);
|
||||
if (newTestFile == null) {
|
||||
return;
|
||||
}
|
||||
FileEditorManager editorManager = FileEditorManager.getInstance(project);
|
||||
List<VirtualFile> testFiles =
|
||||
ContainerUtil.filter(taskDir.getChildren(), file -> CCUtils.isTestsFile(project, file) && editorManager.isFileOpen(file));
|
||||
if (testFiles.isEmpty()) {
|
||||
return;
|
||||
}
|
||||
for (VirtualFile testFile : testFiles) {
|
||||
editorManager.closeFile(testFile);
|
||||
}
|
||||
editorManager.openFile(newTestFile, false);
|
||||
}
|
||||
}
|
||||
@@ -45,7 +45,8 @@
|
||||
<extensionPoint qualifiedName="Edu.studyActionsProvider" interface="com.jetbrains.edu.learning.StudyActionsProvider"/>
|
||||
<extensionPoint qualifiedName="Edu.studyTwitterPluginConfigurator" interface="com.jetbrains.edu.learning.StudyTwitterPluginConfigurator"/>
|
||||
<extensionPoint qualifiedName="Edu.studyActionListener" interface="com.jetbrains.edu.learning.StudyActionListener"/>
|
||||
<extensionPoint qualifiedName="Edu.optionsProvider" beanClass="com.jetbrains.edu.learning.settings.StudyOptionsProviderEP">>
|
||||
<extensionPoint qualifiedName="Edu.studySubtaskChangeListener" interface="com.jetbrains.edu.learning.StudySubtaskChangeListener"/>
|
||||
<extensionPoint qualifiedName="Edu.optionsProvider" beanClass="com.jetbrains.edu.learning.settings.StudyOptionsProviderEP">
|
||||
<with attribute="instance" implements="com.jetbrains.edu.learning.settings.StudyOptionsProvider"/>
|
||||
</extensionPoint>
|
||||
</extensionPoints>
|
||||
|
||||
+12
@@ -0,0 +1,12 @@
|
||||
package com.jetbrains.edu.learning;
|
||||
|
||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.jetbrains.edu.learning.courseFormat.Task;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public interface StudySubtaskChangeListener {
|
||||
ExtensionPointName<StudySubtaskChangeListener> EP_NAME = ExtensionPointName.create("Edu.studySubtaskChangeListener");
|
||||
|
||||
void subtaskChanged(@NotNull Project project, @NotNull Task task, int oldSubtaskNumber, int newSubtaskNumber);
|
||||
}
|
||||
@@ -5,6 +5,7 @@ import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.fileEditor.FileDocumentManager;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
@@ -65,6 +66,10 @@ public class StudySubtaskUtils {
|
||||
transformTestFile(project, toSubtaskIndex, taskDir);
|
||||
task.setActiveSubtaskIndex(toSubtaskIndex);
|
||||
updateUI(project, task, taskDir);
|
||||
|
||||
for (StudySubtaskChangeListener listener : Extensions.getExtensions(StudySubtaskChangeListener.EP_NAME)) {
|
||||
listener.subtaskChanged(project, task, fromSubtaskIndex, toSubtaskIndex);
|
||||
}
|
||||
}
|
||||
|
||||
private static void transformTestFile(@NotNull Project project, int toSubtaskIndex, VirtualFile taskDir) {
|
||||
|
||||
Reference in New Issue
Block a user