mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-10-01 09:03:31 +07:00
do not use old service
This commit is contained in:
+24
-6
@@ -16,24 +16,30 @@
|
||||
package com.jetbrains.edu.coursecreator;
|
||||
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.psi.PsiDirectory;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.refactoring.listeners.RefactoringElementAdapter;
|
||||
import com.intellij.refactoring.listeners.RefactoringElementListener;
|
||||
import com.intellij.refactoring.listeners.RefactoringElementListenerProvider;
|
||||
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.Lesson;
|
||||
import com.jetbrains.edu.learning.courseFormat.Task;
|
||||
import com.jetbrains.edu.learning.courseFormat.TaskFile;
|
||||
import com.jetbrains.edu.coursecreator.actions.CCRunTestsAction;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.Map;
|
||||
|
||||
public class CCRefactoringElementListenerProvider implements RefactoringElementListenerProvider {
|
||||
private static final Logger LOG = Logger.getInstance(CCRefactoringElementListenerProvider.class);
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public RefactoringElementListener getListener(PsiElement element) {
|
||||
@@ -62,8 +68,7 @@ public class CCRefactoringElementListenerProvider implements RefactoringElementL
|
||||
|
||||
private static void tryToRenameTaskFile(PsiFile file, String oldName) {
|
||||
final PsiDirectory taskDir = file.getContainingDirectory();
|
||||
final CCProjectService service = CCProjectService.getInstance(file.getProject());
|
||||
Course course = service.getCourse();
|
||||
Course course = StudyTaskManager.getInstance(file.getProject()).getCourse();
|
||||
if (course == null) {
|
||||
return;
|
||||
}
|
||||
@@ -82,16 +87,29 @@ public class CCRefactoringElementListenerProvider implements RefactoringElementL
|
||||
if (task == null) {
|
||||
return;
|
||||
}
|
||||
Map<String, TaskFile> taskFiles = task.getTaskFiles();
|
||||
TaskFile taskFile = task.getTaskFile(oldName);
|
||||
if (taskFile == null) {
|
||||
return;
|
||||
}
|
||||
ApplicationManager.getApplication().runWriteAction(new Runnable() {
|
||||
@Override
|
||||
public void run() {
|
||||
CCRunTestsAction.clearTestEnvironment(taskDir.getVirtualFile(), taskDir.getProject());
|
||||
VirtualFile patternFile = StudyUtils.getPatternFile(taskFile, oldName);
|
||||
if (patternFile != null) {
|
||||
try {
|
||||
patternFile.delete(CCRefactoringElementListenerProvider.class);
|
||||
}
|
||||
catch (IOException e) {
|
||||
LOG.info(e);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
Map<String, TaskFile> taskFiles = task.getTaskFiles();
|
||||
TaskFile taskFile = task.getTaskFile(oldName);
|
||||
|
||||
taskFiles.remove(oldName);
|
||||
taskFiles.put(file.getName(), taskFile);
|
||||
CCUtils.createResourceFile(file.getVirtualFile(), course, taskDir.getVirtualFile());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
+24
@@ -14,6 +14,7 @@ import com.intellij.openapi.roots.ContentEntry;
|
||||
import com.intellij.openapi.roots.ModifiableRootModel;
|
||||
import com.intellij.openapi.roots.ModuleRootManager;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.VirtualFileEvent;
|
||||
import com.intellij.psi.PsiDirectory;
|
||||
@@ -25,6 +26,7 @@ import com.jetbrains.edu.learning.courseFormat.StudyItem;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
@@ -190,4 +192,26 @@ public class CCUtils {
|
||||
}
|
||||
return manager.isTestFile(file);
|
||||
}
|
||||
|
||||
public static void createResourceFile(VirtualFile createdFile, Course course, VirtualFile taskVF) {
|
||||
VirtualFile lessonVF = taskVF.getParent();
|
||||
if (lessonVF == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
String taskResourcesPath = FileUtil.join(course.getCourseDirectory(), lessonVF.getName(), taskVF.getName());
|
||||
File taskResourceFile = new File(taskResourcesPath);
|
||||
if (!taskResourceFile.exists()) {
|
||||
if (!taskResourceFile.mkdirs()) {
|
||||
LOG.info("Failed to create resources for task " + taskResourcesPath);
|
||||
}
|
||||
}
|
||||
try {
|
||||
File toFile = new File(taskResourceFile, createdFile.getName());
|
||||
FileUtil.copy(new File(createdFile.getPath()), toFile);
|
||||
}
|
||||
catch (IOException e) {
|
||||
LOG.info("Failed to copy created task file to resources " + createdFile.getPath());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
+1
-27
@@ -3,7 +3,6 @@ package com.jetbrains.edu.coursecreator;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.project.ProjectUtil;
|
||||
import com.intellij.openapi.util.io.FileUtil;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.vfs.VirtualFileAdapter;
|
||||
import com.intellij.openapi.vfs.VirtualFileEvent;
|
||||
@@ -14,9 +13,6 @@ import com.jetbrains.edu.learning.core.EduNames;
|
||||
import com.jetbrains.edu.learning.courseFormat.*;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.io.File;
|
||||
import java.io.IOException;
|
||||
|
||||
public class CCVirtualFileListener extends VirtualFileAdapter {
|
||||
|
||||
private static final Logger LOG = Logger.getInstance(CCVirtualFileListener.class);
|
||||
@@ -55,33 +51,11 @@ public class CCVirtualFileListener extends VirtualFileAdapter {
|
||||
return;
|
||||
}
|
||||
|
||||
createResourceFile(createdFile, course, taskVF);
|
||||
CCUtils.createResourceFile(createdFile, course, taskVF);
|
||||
|
||||
task.addTaskFile(name, 1);
|
||||
}
|
||||
|
||||
private static void createResourceFile(VirtualFile createdFile, Course course, VirtualFile taskVF) {
|
||||
VirtualFile lessonVF = taskVF.getParent();
|
||||
if (lessonVF == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
String taskResourcesPath = FileUtil.join(course.getCourseDirectory(), lessonVF.getName(), taskVF.getName());
|
||||
File taskResourceFile = new File(taskResourcesPath);
|
||||
if (!taskResourceFile.exists()) {
|
||||
if (!taskResourceFile.mkdirs()) {
|
||||
LOG.info("Failed to create resources for task " + taskResourcesPath);
|
||||
}
|
||||
}
|
||||
try {
|
||||
File toFile = new File(taskResourceFile, createdFile.getName());
|
||||
FileUtil.copy(new File(createdFile.getPath()), toFile);
|
||||
}
|
||||
catch (IOException e) {
|
||||
LOG.info("Failed to copy created task file to resources " + createdFile.getPath());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fileDeleted(@NotNull VirtualFileEvent event) {
|
||||
VirtualFile removedFile = event.getFile();
|
||||
|
||||
@@ -354,20 +354,29 @@ public class StudyUtils {
|
||||
|
||||
@Nullable
|
||||
public static Document getPatternDocument(@NotNull final TaskFile taskFile, String name) {
|
||||
VirtualFile patternFile = getPatternFile(taskFile, name);
|
||||
if (patternFile == null) {
|
||||
return null;
|
||||
}
|
||||
return FileDocumentManager.getInstance().getDocument(patternFile);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public static VirtualFile getPatternFile(@NotNull TaskFile taskFile, String name) {
|
||||
Task task = taskFile.getTask();
|
||||
String lessonDir = EduNames.LESSON + String.valueOf(task.getLesson().getIndex());
|
||||
String taskDir = EduNames.TASK + String.valueOf(task.getIndex());
|
||||
Course course = task.getLesson().getCourse();
|
||||
File resourceFile = new File(course.getCourseDirectory());
|
||||
if (!resourceFile.exists()) {
|
||||
return null;
|
||||
return null;
|
||||
}
|
||||
String patternPath = FileUtil.join(resourceFile.getPath(), lessonDir, taskDir, name);
|
||||
VirtualFile patternFile = VfsUtil.findFileByIoFile(new File(patternPath), true);
|
||||
if (patternFile == null) {
|
||||
return null;
|
||||
}
|
||||
return FileDocumentManager.getInstance().getDocument(patternFile);
|
||||
return patternFile;
|
||||
}
|
||||
|
||||
public static boolean isRenameableOrMoveable(@NotNull final Project project, @NotNull final Course course, @NotNull final PsiElement element) {
|
||||
|
||||
+3
-1
@@ -1,5 +1,6 @@
|
||||
package com.jetbrains.edu.coursecreator;
|
||||
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.jetbrains.python.edu.PyEduUtils;
|
||||
import com.jetbrains.python.psi.PyQualifiedExpression;
|
||||
import com.jetbrains.python.psi.resolve.PyReferenceResolveProvider;
|
||||
@@ -13,7 +14,8 @@ public class PyCCReferenceResolveProvider implements PyReferenceResolveProvider
|
||||
@NotNull
|
||||
@Override
|
||||
public List<RatedResolveResult> resolveName(@NotNull final PyQualifiedExpression element) {
|
||||
if (CCProjectService.getInstance(element.getProject()).getCourse() == null) {
|
||||
Project project = element.getProject();
|
||||
if (!CCUtils.isCourseCreator(project)) {
|
||||
return Collections.emptyList();
|
||||
}
|
||||
return PyEduUtils.getResolveResultFromContainingDirectory(element);
|
||||
|
||||
Reference in New Issue
Block a user