handle src dir inside task dir
[idea/community.git] / python / educational-core / course-creator / src / com / jetbrains / edu / coursecreator / handlers / CCTaskRenameHandler.java
1 package com.jetbrains.edu.coursecreator.handlers;
2
3 import com.intellij.ide.TitledHandler;
4 import com.intellij.openapi.project.Project;
5 import com.intellij.openapi.vfs.VirtualFile;
6 import com.intellij.psi.PsiDirectory;
7 import com.jetbrains.edu.learning.core.EduNames;
8 import com.jetbrains.edu.learning.courseFormat.Course;
9 import com.jetbrains.edu.learning.courseFormat.Lesson;
10 import com.jetbrains.edu.learning.courseFormat.Task;
11 import org.jetbrains.annotations.NotNull;
12
13 public class CCTaskRenameHandler extends CCRenameHandler implements TitledHandler {
14   @Override
15   protected boolean isAvailable(VirtualFile dir) {
16     if (dir.getName().contains(EduNames.TASK)) {
17       return true;
18     }
19     VirtualFile parent = dir.getParent();
20     if (parent != null && parent.getName().contains(EduNames.TASK)) {
21       return true;
22     }
23     return false;
24   }
25
26   @Override
27   protected void rename(@NotNull Project project, @NotNull Course course, @NotNull PsiDirectory directory) {
28     if (directory.getName().equals(EduNames.SRC)) {
29       directory = directory.getParent();
30       if (directory == null) {
31         return;
32       }
33     }
34     PsiDirectory lessonDir = directory.getParent();
35     if (lessonDir == null || !lessonDir.getName().contains(EduNames.LESSON)) {
36       return;
37     }
38     Lesson lesson = course.getLesson(lessonDir.getName());
39     if (lesson == null) {
40       return;
41     }
42     String directoryName = directory.getName();
43     Task task = lesson.getTask(directoryName);
44     if (task != null) {
45       processRename(task, EduNames.TASK, project);
46     }
47   }
48
49   @Override
50   public String getActionTitle() {
51     return "Rename task";
52   }
53 }