EDU-547 Get rid of answer extension for Task Files
authorliana.bakradze <liana.bakradze@jetbrains.com>
Sat, 27 Feb 2016 18:41:39 +0000 (21:41 +0300)
committerliana.bakradze <liana.bakradze@jetbrains.com>
Sat, 27 Feb 2016 18:43:35 +0000 (21:43 +0300)
 Distinguish task and non-task files (visible and invisible for student) in project view

python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCAddAsTaskFile.java
python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/projectView/CCStudentInvisibleFileNode.java [new file with mode: 0644]
python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/projectView/CCTreeStructureProvider.java

index 68eef74e5eb5edef043749a07ed6bce73710b2b8..28a131367d152acd5576d8d7e721b8c7b791093a 100644 (file)
@@ -1,5 +1,6 @@
 package com.jetbrains.edu.coursecreator.actions;
 
+import com.intellij.ide.projectView.ProjectView;
 import com.intellij.openapi.actionSystem.AnAction;
 import com.intellij.openapi.actionSystem.AnActionEvent;
 import com.intellij.openapi.actionSystem.CommonDataKeys;
@@ -25,6 +26,7 @@ public class CCAddAsTaskFile extends AnAction {
       return;
     }
     task.addTaskFile(file.getName(), task.getTaskFiles().size());
+    ProjectView.getInstance(project).refresh();
   }
 
 
diff --git a/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/projectView/CCStudentInvisibleFileNode.java b/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/projectView/CCStudentInvisibleFileNode.java
new file mode 100644 (file)
index 0000000..2882849
--- /dev/null
@@ -0,0 +1,27 @@
+package com.jetbrains.edu.coursecreator.projectView;
+
+import com.intellij.ide.projectView.PresentationData;
+import com.intellij.ide.projectView.ViewSettings;
+import com.intellij.ide.projectView.impl.nodes.PsiFileNode;
+import com.intellij.openapi.project.Project;
+import com.intellij.psi.PsiFile;
+import com.intellij.ui.SimpleTextAttributes;
+
+/**
+ * represents a file which is invisible for student in student mode
+ */
+public class CCStudentInvisibleFileNode extends PsiFileNode{
+  public CCStudentInvisibleFileNode(Project project,
+                                    PsiFile value,
+                                    ViewSettings viewSettings) {
+    super(project, value, viewSettings);
+  }
+
+  @Override
+  protected void updateImpl(PresentationData data) {
+    super.updateImpl(data);
+    String text = data.getPresentableText();
+    data.clearText();
+    data.addText(text, SimpleTextAttributes.GRAY_ATTRIBUTES);
+  }
+}
index b39e29250e907182bd2c1f7c2ced34a461a2645e..3a1c7facaf374685561e7875267863343009c160 100644 (file)
@@ -48,6 +48,11 @@ public class CCTreeStructureProvider implements TreeStructureProvider, DumbAware
           if (virtualFile.getName().contains(EduNames.WINDOWS_POSTFIX)) {
             continue;
           }
+
+          if (virtualFile.getParent().getName().contains(EduNames.TASK) && !CCProjectService.getInstance(project).isTaskFile(virtualFile)) {
+            nodes.add(new CCStudentInvisibleFileNode(project, ((PsiFileNode)node).getValue(), settings));
+            continue;
+          }
         }
         nodes.add(node);
       }