mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
add virtual file listener on course creation
This commit is contained in:
@@ -26,7 +26,7 @@ import java.util.Map;
|
||||
|
||||
public class CCProjectComponent extends AbstractProjectComponent {
|
||||
private static final Logger LOG = Logger.getInstance(CCProjectComponent.class);
|
||||
private final CCVirtualFileListener myTaskFileLifeListener = new CCVirtualFileListener();
|
||||
private CCVirtualFileListener myTaskFileLifeListener;
|
||||
private final Project myProject;
|
||||
|
||||
protected CCProjectComponent(Project project) {
|
||||
@@ -106,11 +106,18 @@ public class CCProjectComponent extends AbstractProjectComponent {
|
||||
public void projectOpened() {
|
||||
migrateIfNeeded();
|
||||
if (CCUtils.isCourseCreator(myProject)) {
|
||||
VirtualFileManager.getInstance().addVirtualFileListener(myTaskFileLifeListener);
|
||||
registerListener();
|
||||
EduUsagesCollector.projectTypeOpened(CCUtils.COURSE_MODE);
|
||||
}
|
||||
}
|
||||
|
||||
public void registerListener() {
|
||||
if (myTaskFileLifeListener == null) {
|
||||
myTaskFileLifeListener = new CCVirtualFileListener(myProject);
|
||||
VirtualFileManager.getInstance().addVirtualFileListener(myTaskFileLifeListener);
|
||||
}
|
||||
}
|
||||
|
||||
public void projectClosed() {
|
||||
VirtualFileManager.getInstance().removeVirtualFileListener(myTaskFileLifeListener);
|
||||
}
|
||||
|
||||
+10
-9
@@ -17,6 +17,11 @@ import com.jetbrains.edu.learning.courseFormat.tasks.Task;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
public class CCVirtualFileListener implements VirtualFileListener {
|
||||
private final Project myProject;
|
||||
|
||||
public CCVirtualFileListener(Project project) {
|
||||
myProject = project;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void fileCreated(@NotNull VirtualFileEvent event) {
|
||||
@@ -27,18 +32,14 @@ public class CCVirtualFileListener implements VirtualFileListener {
|
||||
if (createdFile.getPath().contains(CCUtils.GENERATED_FILES_FOLDER)) {
|
||||
return;
|
||||
}
|
||||
Project project = ProjectUtil.guessProjectForFile(createdFile);
|
||||
if (project == null) {
|
||||
if (myProject.getBasePath() !=null && !FileUtil.isAncestor(myProject.getBasePath(), createdFile.getPath(), true)) {
|
||||
return;
|
||||
}
|
||||
if (project.getBasePath() !=null && !FileUtil.isAncestor(project.getBasePath(), createdFile.getPath(), true)) {
|
||||
return;
|
||||
}
|
||||
Course course = StudyTaskManager.getInstance(project).getCourse();
|
||||
Course course = StudyTaskManager.getInstance(myProject).getCourse();
|
||||
if (course == null) {
|
||||
return;
|
||||
}
|
||||
TaskFile taskFile = StudyUtils.getTaskFile(project, createdFile);
|
||||
TaskFile taskFile = StudyUtils.getTaskFile(myProject, createdFile);
|
||||
if (taskFile != null) {
|
||||
return;
|
||||
}
|
||||
@@ -50,7 +51,7 @@ public class CCVirtualFileListener implements VirtualFileListener {
|
||||
return;
|
||||
}
|
||||
|
||||
if (CCUtils.isTestsFile(project, createdFile)
|
||||
if (CCUtils.isTestsFile(myProject, createdFile)
|
||||
|| StudyUtils.isTaskDescriptionFile(createdFile.getName())
|
||||
|| taskRelativePath.contains(EduNames.WINDOW_POSTFIX)
|
||||
|| taskRelativePath.contains(EduNames.WINDOWS_POSTFIX)
|
||||
@@ -61,7 +62,7 @@ public class CCVirtualFileListener implements VirtualFileListener {
|
||||
if (taskVF == null) {
|
||||
return;
|
||||
}
|
||||
Task task = StudyUtils.getTask(project, taskVF);
|
||||
Task task = StudyUtils.getTask(myProject, taskVF);
|
||||
if (task == null) {
|
||||
return;
|
||||
}
|
||||
|
||||
+2
-1
@@ -58,7 +58,8 @@ public class PyCCProjectGenerator extends PythonProjectGenerator<PyNewProjectSet
|
||||
@Nullable final PyProjectSynchronizer synchronizer) {
|
||||
final Course course = getCourse(project, mySettingsPanel);
|
||||
EduUsagesCollector.projectTypeCreated(CCUtils.COURSE_MODE);
|
||||
|
||||
final CCProjectComponent component = project.getComponent(CCProjectComponent.class);
|
||||
component.registerListener();
|
||||
final PsiDirectory projectDir = PsiManager.getInstance(project).findDirectory(baseDir);
|
||||
if (projectDir == null) return;
|
||||
new WriteCommandAction.Simple(project) {
|
||||
|
||||
Reference in New Issue
Block a user