new editing mode for task description panel
[idea/community.git] / python / educational-core / student / src / com / jetbrains / edu / learning / StudyBasePluginConfigurator.java
1 package com.jetbrains.edu.learning;
2
3 import com.intellij.openapi.actionSystem.DefaultActionGroup;
4 import com.intellij.openapi.fileEditor.FileEditorManager;
5 import com.intellij.openapi.fileEditor.FileEditorManagerEvent;
6 import com.intellij.openapi.fileEditor.FileEditorManagerListener;
7 import com.intellij.openapi.project.Project;
8 import com.intellij.openapi.vfs.VirtualFile;
9 import com.jetbrains.edu.learning.actions.*;
10 import com.jetbrains.edu.learning.courseFormat.StudyStatus;
11 import com.jetbrains.edu.learning.courseFormat.Task;
12 import com.jetbrains.edu.learning.courseFormat.TaskFile;
13 import com.jetbrains.edu.learning.twitter.StudyTwitterUtils;
14 import com.jetbrains.edu.learning.ui.StudyToolWindow;
15 import org.jetbrains.annotations.NotNull;
16 import org.jetbrains.annotations.Nullable;
17
18 import javax.swing.*;
19 import java.util.Collections;
20 import java.util.Map;
21
22 public abstract class StudyBasePluginConfigurator implements StudyPluginConfigurator {
23   @NotNull
24   @Override
25   public DefaultActionGroup getActionGroup(Project project) {
26     return getDefaultActionGroup();
27   }
28
29   @NotNull
30   public static DefaultActionGroup getDefaultActionGroup() {
31     final DefaultActionGroup group = new DefaultActionGroup();
32     group.add(new StudyPreviousStudyTaskAction());
33     group.add(new StudyNextStudyTaskAction());
34     group.add(new StudyRefreshTaskFileAction());
35     group.add(new StudyShowHintAction());
36
37     group.add(new StudyRunAction());
38     group.add(new StudyEditInputAction());
39     return group;
40   }
41
42   @NotNull
43   @Override
44   public Map<String, JPanel> getAdditionalPanels(Project project) {
45     return Collections.emptyMap();
46   }
47
48   @NotNull
49   @Override
50   public FileEditorManagerListener getFileEditorManagerListener(@NotNull Project project, @NotNull StudyToolWindow toolWindow) {
51
52     return new FileEditorManagerListener() {
53       @Override
54       public void fileOpened(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
55         Task task = getTask(file);
56         setTaskText(task, file.getParent());
57       }
58
59       @Override
60       public void fileClosed(@NotNull FileEditorManager source, @NotNull VirtualFile file) {
61         toolWindow.setEmptyText(project);
62       }
63
64       @Override
65       public void selectionChanged(@NotNull FileEditorManagerEvent event) {
66         VirtualFile file = event.getNewFile();
67         if (file != null) {
68           Task task = getTask(file);
69           setTaskText(task, file.getParent());
70         }
71       }
72
73       @Nullable
74       private Task getTask(@NotNull VirtualFile file) {
75         TaskFile taskFile = StudyUtils.getTaskFile(project, file);
76         if (taskFile != null) {
77           return taskFile.getTask();
78         }
79         else {
80           return null;
81         }
82       }
83
84       private void setTaskText(@Nullable final Task task, @Nullable final VirtualFile taskDirectory) {
85         String text = StudyUtils.getTaskTextFromTask(task, taskDirectory);
86         if (text == null) {
87           toolWindow.setEmptyText(project);
88           return;
89         }
90         toolWindow.setTaskText(text, taskDirectory, project);
91       }
92     };
93   }
94
95   @Nullable
96   @Override
97   public StudyAfterCheckAction[] getAfterCheckActions() {
98     return null;
99   }
100
101   @NotNull
102   @Override
103   public String getConsumerKey(@NotNull Project project) {
104     return "";
105   }
106
107   @NotNull
108   @Override
109   public String getConsumerSecret(@NotNull Project project) {
110     return "";
111   }
112
113   @Override
114   public void storeTwitterTokens(@NotNull Project project, @NotNull String accessToken, @NotNull String tokenSecret) {
115     // do nothing
116   }
117   
118   @NotNull
119   @Override
120   public String getTwitterTokenSecret(@NotNull Project project) {
121     return "";
122   }
123
124   @NotNull
125   @Override
126   public String getTwitterAccessToken(@NotNull Project project) {
127     return "";
128   }
129
130   @Override
131   public boolean askToTweet(@NotNull Project project, Task solvedTask, StudyStatus statusBeforeCheck) {
132     return false;
133   }
134
135   @Nullable
136   @Override
137   public StudyTwitterUtils.TwitterDialogPanel getTweetDialogPanel(@NotNull Task solvedTask) {
138     return null;
139   }
140 }