diff --git a/python/educational/interactive-learning/resources/META-INF/plugin.xml b/python/educational/interactive-learning/resources/META-INF/plugin.xml index 57adbc2196e7..2849c0b01f8b 100644 --- a/python/educational/interactive-learning/resources/META-INF/plugin.xml +++ b/python/educational/interactive-learning/resources/META-INF/plugin.xml @@ -61,6 +61,9 @@ description="Show hint for answer placeholder"/> + diff --git a/python/educational/interactive-learning/src/com/jetbrains/edu/learning/actions/StudyRenameTaskFileAction.java b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/actions/StudyRenameTaskFileAction.java new file mode 100644 index 000000000000..6f1ca90a9a3f --- /dev/null +++ b/python/educational/interactive-learning/src/com/jetbrains/edu/learning/actions/StudyRenameTaskFileAction.java @@ -0,0 +1,26 @@ +package com.jetbrains.edu.learning.actions; + +import com.intellij.openapi.actionSystem.CommonDataKeys; +import com.intellij.openapi.actionSystem.DataContext; +import com.intellij.psi.PsiElement; +import com.intellij.refactoring.actions.RenameElementAction; +import com.jetbrains.edu.learning.StudyUtils; +import org.jetbrains.annotations.NotNull; + +public class StudyRenameTaskFileAction extends RenameElementAction { + @Override + protected boolean isEnabledOnDataContext(DataContext dataContext) { + PsiElement element = CommonDataKeys.PSI_ELEMENT.getData(dataContext); + return super.isEnabledOnDataContext(dataContext) && !isTaskFile(element); + } + + private static boolean isTaskFile(PsiElement element) { + return element != null && StudyUtils.getTaskFile(element.getProject(), + element.getContainingFile().getVirtualFile()) != null; + } + + @Override + public boolean isEnabledOnElements(@NotNull PsiElement[] elements){ + return !super.isEnabledOnElements(elements) && !isTaskFile(elements[0]); + } +}