refactored implementation of EDU-745

This commit is contained in:
Liana.Bakradze
2016-12-12 18:32:53 +03:00
parent 7487c178ce
commit f264238e64
7 changed files with 35 additions and 39 deletions
@@ -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);
@@ -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) {
@@ -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();
@@ -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;
}
@@ -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();
@@ -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();
@@ -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) {