import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.Presentation;
-import com.intellij.openapi.application.Result;
-import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.command.undo.BasicUndoableAction;
-import com.intellij.openapi.command.undo.UndoManager;
import com.intellij.openapi.command.undo.UnexpectedUndoException;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.editor.Editor;
import com.jetbrains.edu.learning.StudyUtils;
import com.jetbrains.edu.learning.core.EduAnswerPlaceholderPainter;
import com.jetbrains.edu.learning.core.EduNames;
+import com.jetbrains.edu.learning.core.EduUtils;
import com.jetbrains.edu.learning.courseFormat.AnswerPlaceholder;
import com.jetbrains.edu.learning.courseFormat.TaskFile;
import org.jetbrains.annotations.NotNull;
taskFile.sortAnswerPlaceholders();
answerPlaceholder.setPossibleAnswer(model.hasSelection() ? model.getSelectedText() : defaultPlaceholderText);
AddAction action = new AddAction(answerPlaceholder, taskFile, editor);
- new WriteCommandAction(project, "Add Answer Placeholder") {
- protected void run(@NotNull final Result result) throws Throwable {
- action.redo();
- UndoManager.getInstance(project).undoableActionPerformed(action);
- }
- }.execute();
+ EduUtils.runUndoableAction(project, "Add Answer Placeholder", action);
}
static class AddAction extends BasicUndoableAction {
}
}
- static class DeleteAction extends AddAction {
-
- public DeleteAction(AnswerPlaceholder placeholder, TaskFile taskFile, Editor editor) {
- super(placeholder, taskFile, editor);
- }
-
- @Override
- public void undo() throws UnexpectedUndoException {
- super.redo();
- }
-
- @Override
- public void redo() throws UnexpectedUndoException {
- super.undo();
- }
- }
-
@Override
protected void performAnswerPlaceholderAction(@NotNull CCState state) {
if (canAddPlaceholder(state)) {
Project project = state.getProject();
TaskFile taskFile = state.getTaskFile();
AnswerPlaceholder answerPlaceholder = state.getAnswerPlaceholder();
- DeleteAction action = new DeleteAction(answerPlaceholder, taskFile, state.getEditor());
- new WriteCommandAction(project, "Delete Answer Placeholder") {
- protected void run(@NotNull final Result result) throws Throwable {
- action.redo();
- UndoManager.getInstance(project).undoableActionPerformed(action);
+ EduUtils.runUndoableAction(project, "Delete Answer Placeholder", new AddAction(answerPlaceholder, taskFile, state.getEditor()) {
+ @Override
+ public void undo() throws UnexpectedUndoException {
+ super.redo();
}
- }.execute();
+ @Override
+ public void redo() throws UnexpectedUndoException {
+ super.undo();
+ }
+ });
}
@Override
import com.intellij.openapi.actionSystem.CommonDataKeys;
import com.intellij.openapi.actionSystem.DataContext;
import com.intellij.openapi.actionSystem.Presentation;
-import com.intellij.openapi.application.Result;
import com.intellij.openapi.command.UndoConfirmationPolicy;
-import com.intellij.openapi.command.WriteCommandAction;
import com.intellij.openapi.command.undo.BasicUndoableAction;
-import com.intellij.openapi.command.undo.UndoManager;
import com.intellij.openapi.command.undo.UnexpectedUndoException;
import com.intellij.openapi.editor.Editor;
import com.intellij.openapi.fileEditor.FileEditor;
import com.jetbrains.edu.coursecreator.CCUtils;
import com.jetbrains.edu.learning.StudyUtils;
import com.jetbrains.edu.learning.core.EduNames;
+import com.jetbrains.edu.learning.core.EduUtils;
import com.jetbrains.edu.learning.courseFormat.AnswerPlaceholder;
import com.jetbrains.edu.learning.courseFormat.TaskFile;
import org.jetbrains.annotations.NotNull;
}
List<AnswerPlaceholder> placeholders = new ArrayList<AnswerPlaceholder>(taskFile.getAnswerPlaceholders());
final ClearPlaceholders action = new ClearPlaceholders(taskFile, placeholders, editor);
- new WriteCommandAction(project, ACTION_NAME) {
- protected void run(@NotNull final Result result) throws Throwable {
- action.redo();
- UndoManager.getInstance(project).undoableActionPerformed(action);
- }
-
- @Override
- protected UndoConfirmationPolicy getUndoConfirmationPolicy() {
- return UndoConfirmationPolicy.REQUEST_CONFIRMATION;
- }
- }.execute();
+ EduUtils.runUndoableAction(project, ACTION_NAME, action, UndoConfirmationPolicy.REQUEST_CONFIRMATION);
}
private static void updateView(@NotNull final Editor editor,
import com.intellij.openapi.actionSystem.AnActionEvent;
import com.intellij.openapi.actionSystem.Presentation;
import com.intellij.openapi.application.ApplicationManager;
+import com.intellij.openapi.application.Result;
import com.intellij.openapi.command.CommandProcessor;
+import com.intellij.openapi.command.UndoConfirmationPolicy;
+import com.intellij.openapi.command.WriteCommandAction;
+import com.intellij.openapi.command.undo.UndoManager;
+import com.intellij.openapi.command.undo.UndoableAction;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.Document;
import com.intellij.openapi.fileEditor.FileDocumentManager;
}
return false;
}
+
+ public static void runUndoableAction(Project project, String name, UndoableAction action) {
+ runUndoableAction(project, name, action, UndoConfirmationPolicy.DO_NOT_REQUEST_CONFIRMATION);
+ }
+
+ public static void runUndoableAction(Project project, String name, UndoableAction action, UndoConfirmationPolicy confirmationPolicy) {
+ new WriteCommandAction(project, name) {
+ protected void run(@NotNull final Result result) throws Throwable {
+ action.redo();
+ UndoManager.getInstance(project).undoableActionPerformed(action);
+ }
+
+ @Override
+ protected UndoConfirmationPolicy getUndoConfirmationPolicy() {
+ return confirmationPolicy;
+ }
+ }.execute();
+ }
}