mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
refactored implementation of EDU-745
This commit is contained in:
+17
-16
@@ -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);
|
||||
|
||||
+1
-12
@@ -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();
|
||||
|
||||
+1
-1
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -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();
|
||||
|
||||
+1
-1
@@ -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();
|
||||
|
||||
+2
-2
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user