From f264238e64d91d6a6bbd69d627df857e301758dd Mon Sep 17 00:00:00 2001 From: "Liana.Bakradze" Date: Mon, 12 Dec 2016 18:19:38 +0300 Subject: [PATCH] refactored implementation of EDU-745 --- .../actions/CCEditTaskTextAction.java | 33 ++++++++++--------- .../learning/StudyBasePluginConfigurator.java | 13 +------- .../jetbrains/edu/learning/StudyUtils.java | 18 ++++++---- .../actions/StudyRefreshTaskFileAction.java | 2 +- .../edu/learning/checker/StudyCheckTask.java | 2 +- .../editor/StudyEditorFactoryListener.java | 2 +- .../edu/learning/ui/StudyToolWindow.java | 4 +-- 7 files changed, 35 insertions(+), 39 deletions(-) diff --git a/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCEditTaskTextAction.java b/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCEditTaskTextAction.java index 7af54b146cf2..151afcd0d472 100644 --- a/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCEditTaskTextAction.java +++ b/python/educational-core/course-creator/src/com/jetbrains/edu/coursecreator/actions/CCEditTaskTextAction.java @@ -11,18 +11,18 @@ import com.intellij.openapi.project.DumbAware; import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.jetbrains.edu.coursecreator.CCUtils; -import com.jetbrains.edu.learning.StudyState; import com.jetbrains.edu.learning.StudyTaskManager; import com.jetbrains.edu.learning.StudyUtils; -import com.jetbrains.edu.learning.editor.StudyEditor; +import com.jetbrains.edu.learning.courseFormat.Task; import com.jetbrains.edu.learning.ui.StudyToolWindow; import org.jetbrains.annotations.NotNull; public class CCEditTaskTextAction extends ToggleAction implements DumbAware { private static final Logger LOG = Logger.getInstance(CCEditTaskTextAction.class); + private static final String EDITING_MODE = "Editing Mode"; public CCEditTaskTextAction() { - super("Editing Mode", "Editing Mode", AllIcons.Modules.Edit); + super(EDITING_MODE, EDITING_MODE, AllIcons.Modules.Edit); } @Override @@ -45,26 +45,27 @@ public class CCEditTaskTextAction extends ToggleAction implements DumbAware { return; } - VirtualFile taskDir = null; final VirtualFile virtualFile = CommonDataKeys.VIRTUAL_FILE.getData(e.getDataContext()); - if (virtualFile != null) { - taskDir = StudyUtils.getTaskDir(virtualFile); + + if (virtualFile == null) { + StudyTaskManager.getInstance(project).setTurnEditingMode(true); + return; } + Task task = StudyUtils.getTaskForFile(project, virtualFile); + if (task == null) { + StudyTaskManager.getInstance(project).setTurnEditingMode(true); + return; + } + VirtualFile taskDir = task.getTaskDir(project); if (taskDir == null) { - final StudyEditor selectedEditor = StudyUtils.getSelectedStudyEditor(project); - if (selectedEditor == null) { - StudyTaskManager.getInstance(project).setTurnEditingMode(true); - return; - } - final StudyState studyState = new StudyState(selectedEditor); - taskDir = studyState.getTaskDir(); + StudyTaskManager.getInstance(project).setTurnEditingMode(true); + return; } - VirtualFile taskTextFile = StudyUtils.findTaskDescriptionVirtualFile(project, taskDir); - if (taskTextFile == null) { LOG.info("Failed to find task.html"); + StudyTaskManager.getInstance(project).setTurnEditingMode(true); return; } Document document = FileDocumentManager.getInstance().getDocument(taskTextFile); @@ -72,7 +73,7 @@ public class CCEditTaskTextAction extends ToggleAction implements DumbAware { if (document != null) { FileDocumentManager.getInstance().saveDocument(document); } - window.leaveEditingMode(project, taskDir); + window.leaveEditingMode(project); return; } window.enterEditingMode(taskTextFile, project); diff --git a/python/educational-core/student/src/com/jetbrains/edu/learning/StudyBasePluginConfigurator.java b/python/educational-core/student/src/com/jetbrains/edu/learning/StudyBasePluginConfigurator.java index 6a5abacf2545..db888c193167 100644 --- a/python/educational-core/student/src/com/jetbrains/edu/learning/StudyBasePluginConfigurator.java +++ b/python/educational-core/student/src/com/jetbrains/edu/learning/StudyBasePluginConfigurator.java @@ -8,7 +8,6 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.jetbrains.edu.learning.actions.*; import com.jetbrains.edu.learning.courseFormat.Task; -import com.jetbrains.edu.learning.courseFormat.TaskFile; import com.jetbrains.edu.learning.ui.StudyToolWindow; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -76,17 +75,7 @@ public abstract class StudyBasePluginConfigurator implements StudyPluginConfigur @Nullable private Task getTask(@NotNull VirtualFile file) { - VirtualFile taskDir = StudyUtils.getTaskDir(file); - if (taskDir != null) { - return StudyUtils.getTask(project, taskDir); - } - TaskFile taskFile = StudyUtils.getTaskFile(project, file); - if (taskFile != null) { - return taskFile.getTask(); - } - else { - return null; - } + return StudyUtils.getTaskForFile(project, file); } private void setTaskText(@Nullable final Task task, @Nullable final VirtualFile taskDirectory) { diff --git a/python/educational-core/student/src/com/jetbrains/edu/learning/StudyUtils.java b/python/educational-core/student/src/com/jetbrains/edu/learning/StudyUtils.java index adee75fab471..4481dcae71e0 100644 --- a/python/educational-core/student/src/com/jetbrains/edu/learning/StudyUtils.java +++ b/python/educational-core/student/src/com/jetbrains/edu/learning/StudyUtils.java @@ -173,10 +173,10 @@ public class StudyUtils { } } - public static void updateToolWindows(@NotNull final Project project, @Nullable final Task task) { - final StudyToolWindow studyToolWindow = getStudyToolWindow(project); + public static void updateToolWindows(@NotNull final Project project) { + final StudyToolWindow studyToolWindow = getStudyToolWindow(project); if (studyToolWindow != null) { - String taskText = getTaskTextFromTask(task.getTaskDir(project), task); + String taskText = getTaskText(project); if (taskText != null) { studyToolWindow.setTaskText(taskText, null, project); } @@ -561,16 +561,22 @@ public class StudyUtils { @Nullable public static String getTaskText(@NotNull final Project project) { - TaskFile taskFile = getSelectedTaskFile(project); - if (taskFile == null) { + Editor editor = FileEditorManager.getInstance(project).getSelectedTextEditor(); + if (editor == null) { return StudyToolWindow.EMPTY_TASK_TEXT; } - final Task task = taskFile.getTask(); + Document document = editor.getDocument(); + VirtualFile virtualFile = FileDocumentManager.getInstance().getFile(document); + if (virtualFile == null) { + return StudyToolWindow.EMPTY_TASK_TEXT; + } + final Task task = getTaskForFile(project, virtualFile); if (task != null) { return getTaskTextFromTask(task.getTaskDir(project), task); } return null; } + @Nullable public static TaskFile getSelectedTaskFile(@NotNull Project project) { VirtualFile[] files = FileEditorManager.getInstance(project).getSelectedFiles(); diff --git a/python/educational-core/student/src/com/jetbrains/edu/learning/actions/StudyRefreshTaskFileAction.java b/python/educational-core/student/src/com/jetbrains/edu/learning/actions/StudyRefreshTaskFileAction.java index 2747baaab870..42cf44f7efc1 100644 --- a/python/educational-core/student/src/com/jetbrains/edu/learning/actions/StudyRefreshTaskFileAction.java +++ b/python/educational-core/student/src/com/jetbrains/edu/learning/actions/StudyRefreshTaskFileAction.java @@ -93,7 +93,7 @@ public class StudyRefreshTaskFileAction extends StudyActionWithShortcut { taskFile.getTask().setStatus(StudyStatus.Unchecked); resetAnswerPlaceholders(taskFile, project); ProjectView.getInstance(project).refresh(); - StudyUtils.updateToolWindows(project, taskFile.getTask()); + StudyUtils.updateToolWindows(project); return true; } diff --git a/python/educational-core/student/src/com/jetbrains/edu/learning/checker/StudyCheckTask.java b/python/educational-core/student/src/com/jetbrains/edu/learning/checker/StudyCheckTask.java index 8076e0c3e1d9..15cef49780fd 100644 --- a/python/educational-core/student/src/com/jetbrains/edu/learning/checker/StudyCheckTask.java +++ b/python/educational-core/student/src/com/jetbrains/edu/learning/checker/StudyCheckTask.java @@ -59,7 +59,7 @@ public class StudyCheckTask extends com.intellij.openapi.progress.Task.Backgroun @Override public void onSuccess() { - StudyUtils.updateToolWindows(myProject, myTask); + StudyUtils.updateToolWindows(myProject); StudyCheckUtils.drawAllPlaceholders(myProject, myTask, myTaskDir); ProjectView.getInstance(myProject).refresh(); clearState(); diff --git a/python/educational-core/student/src/com/jetbrains/edu/learning/editor/StudyEditorFactoryListener.java b/python/educational-core/student/src/com/jetbrains/edu/learning/editor/StudyEditorFactoryListener.java index 06ffbe6c8524..288bc157b012 100644 --- a/python/educational-core/student/src/com/jetbrains/edu/learning/editor/StudyEditorFactoryListener.java +++ b/python/educational-core/student/src/com/jetbrains/edu/learning/editor/StudyEditorFactoryListener.java @@ -68,7 +68,7 @@ public class StudyEditorFactoryListener implements EditorFactoryListener { WolfTheProblemSolver.getInstance(project).clearProblems(openedFile); final ToolWindow studyToolWindow = ToolWindowManager.getInstance(project).getToolWindow(StudyToolWindowFactory.STUDY_TOOL_WINDOW); if (studyToolWindow != null) { - StudyUtils.updateToolWindows(project, taskFile.getTask()); + StudyUtils.updateToolWindows(project); studyToolWindow.show(null); } Course course = StudyTaskManager.getInstance(project).getCourse(); diff --git a/python/educational-core/student/src/com/jetbrains/edu/learning/ui/StudyToolWindow.java b/python/educational-core/student/src/com/jetbrains/edu/learning/ui/StudyToolWindow.java index 01a142d83e5a..f384605b59ce 100644 --- a/python/educational-core/student/src/com/jetbrains/edu/learning/ui/StudyToolWindow.java +++ b/python/educational-core/student/src/com/jetbrains/edu/learning/ui/StudyToolWindow.java @@ -266,11 +266,11 @@ public abstract class StudyToolWindow extends SimpleToolWindowPanel implements D } - public void leaveEditingMode(Project project, VirtualFile taskDir) { + public void leaveEditingMode(Project project) { WebBrowserManager.getInstance().setShowBrowserHover(true); mySplitPane.setFirstComponent(myContentPanel); StudyTaskManager.getInstance(project).setToolWindowMode(StudyToolWindowMode.TEXT); - StudyUtils.updateToolWindows(project, StudyUtils.getTask(project, taskDir)); + StudyUtils.updateToolWindows(project); } private JPanel createCourseProgress(@NotNull final Project project) {