mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
For #EDU-565 Recreate StudyCheckAction Make StudyToolbarAction extend DumbAwareAction
This commit is contained in:
+55
@@ -0,0 +1,55 @@
|
||||
package com.jetbrains.edu.learning.actions;
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.KeyboardShortcut;
|
||||
import com.intellij.openapi.actionSystem.Presentation;
|
||||
import com.intellij.openapi.keymap.KeymapUtil;
|
||||
import com.intellij.openapi.project.DumbService;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.MessageType;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
import com.jetbrains.edu.learning.StudyUtils;
|
||||
import com.jetbrains.edu.learning.checker.StudyCheckUtils;
|
||||
import icons.InteractiveLearningIcons;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
public abstract class StudyCheckAction extends StudyToolbarAction {
|
||||
public static final String SHORTCUT = "ctrl alt pressed ENTER";
|
||||
|
||||
protected Ref<Boolean> myCheckInProgress = new Ref<>(false);
|
||||
|
||||
public StudyCheckAction() {
|
||||
super("Check Task (" + KeymapUtil.getShortcutText(new KeyboardShortcut(KeyStroke.getKeyStroke(SHORTCUT), null)) + ")", "Check current task", InteractiveLearningIcons.Resolve);
|
||||
}
|
||||
|
||||
public abstract void check(@NotNull final Project project);
|
||||
|
||||
@Override
|
||||
public void actionPerformed(@NotNull AnActionEvent e) {
|
||||
Project project = e.getProject();
|
||||
if (project == null) {
|
||||
return;
|
||||
}
|
||||
if (DumbService.isDumb(project)) {
|
||||
StudyCheckUtils.showTestResultPopUp("Checking is not available while indexing is in progress", MessageType.WARNING.getPopupBackground(), project);
|
||||
return;
|
||||
}
|
||||
check(project);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(AnActionEvent e) {
|
||||
final Presentation presentation = e.getPresentation();
|
||||
StudyUtils.updateAction(e);
|
||||
if (presentation.isEnabled()) {
|
||||
presentation.setEnabled(!myCheckInProgress.get());
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getShortcuts() {
|
||||
return new String[] {SHORTCUT};
|
||||
}
|
||||
}
|
||||
+3
@@ -6,6 +6,7 @@ import com.intellij.openapi.keymap.KeymapUtil;
|
||||
import com.jetbrains.edu.learning.courseFormat.Task;
|
||||
import com.jetbrains.edu.learning.navigation.StudyNavigator;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
@@ -28,11 +29,13 @@ public class StudyNextStudyTaskAction extends StudyTaskNavigationAction {
|
||||
return StudyNavigator.nextTask(sourceTask);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getActionId() {
|
||||
return ACTION_ID;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public String[] getShortcuts() {
|
||||
return new String[]{SHORTCUT};
|
||||
|
||||
+3
@@ -4,6 +4,7 @@ import com.intellij.icons.AllIcons;
|
||||
import com.jetbrains.edu.learning.courseFormat.AnswerPlaceholder;
|
||||
import com.jetbrains.edu.learning.StudyUtils;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
@@ -30,11 +31,13 @@ public class StudyNextWindowAction extends StudyWindowNavigationAction {
|
||||
return null;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getActionId() {
|
||||
return ACTION_ID;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public String[] getShortcuts() {
|
||||
return new String[]{SHORTCUT, SHORTCUT2};
|
||||
|
||||
+2
@@ -32,11 +32,13 @@ public class StudyPrevWindowAction extends StudyWindowNavigationAction {
|
||||
return null;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getActionId() {
|
||||
return ACTION_ID;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public String[] getShortcuts() {
|
||||
return new String[]{SHORTCUT};
|
||||
|
||||
+3
@@ -7,6 +7,7 @@ import com.jetbrains.edu.learning.courseFormat.Task;
|
||||
import com.jetbrains.edu.learning.navigation.StudyNavigator;
|
||||
import icons.InteractiveLearningIcons;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
@@ -28,11 +29,13 @@ public class StudyPreviousStudyTaskAction extends StudyTaskNavigationAction {
|
||||
return StudyNavigator.previousTask(sourceTask);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getActionId() {
|
||||
return ACTION_ID;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public String[] getShortcuts() {
|
||||
return new String[]{SHORTCUT};
|
||||
|
||||
+4
-2
@@ -10,7 +10,6 @@ import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.editor.Document;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.keymap.KeymapUtil;
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.MessageType;
|
||||
import com.intellij.openapi.ui.Messages;
|
||||
@@ -30,10 +29,11 @@ import com.jetbrains.edu.learning.StudyUtils;
|
||||
import com.jetbrains.edu.learning.editor.StudyEditor;
|
||||
import com.jetbrains.edu.learning.navigation.StudyNavigator;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
public class StudyRefreshTaskFileAction extends StudyToolbarAction implements DumbAware {
|
||||
public class StudyRefreshTaskFileAction extends StudyToolbarAction {
|
||||
public static final String ACTION_ID = "RefreshTaskAction";
|
||||
public static final String SHORTCUT = "ctrl shift pressed X";
|
||||
private static final Logger LOG = Logger.getInstance(StudyRefreshTaskFileAction.class.getName());
|
||||
@@ -164,11 +164,13 @@ public class StudyRefreshTaskFileAction extends StudyToolbarAction implements Du
|
||||
}
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getActionId() {
|
||||
return ACTION_ID;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public String[] getShortcuts() {
|
||||
return new String[]{SHORTCUT};
|
||||
|
||||
+4
-2
@@ -7,7 +7,6 @@ import com.intellij.openapi.actionSystem.KeyboardShortcut;
|
||||
import com.intellij.openapi.editor.Editor;
|
||||
import com.intellij.openapi.editor.LogicalPosition;
|
||||
import com.intellij.openapi.keymap.KeymapUtil;
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.popup.JBPopup;
|
||||
import com.intellij.openapi.ui.popup.JBPopupFactory;
|
||||
@@ -22,10 +21,11 @@ import com.jetbrains.edu.learning.StudyTaskManager;
|
||||
import com.jetbrains.edu.learning.StudyUtils;
|
||||
import icons.InteractiveLearningIcons;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
public class StudyShowHintAction extends StudyToolbarAction implements DumbAware {
|
||||
public class StudyShowHintAction extends StudyToolbarAction {
|
||||
public static final String ACTION_ID = "ShowHintAction";
|
||||
public static final String SHORTCUT = "ctrl pressed 7";
|
||||
private static final String ourWarningMessage = "Put the caret in the answer placeholder to get hint";
|
||||
@@ -90,11 +90,13 @@ public class StudyShowHintAction extends StudyToolbarAction implements DumbAware
|
||||
StudyUtils.updateAction(e);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getActionId() {
|
||||
return ACTION_ID;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public String[] getShortcuts() {
|
||||
return new String[]{SHORTCUT};
|
||||
|
||||
+1
-2
@@ -3,7 +3,6 @@ package com.jetbrains.edu.learning.actions;
|
||||
import com.intellij.ide.projectView.ProjectView;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.fileEditor.FileEditorManager;
|
||||
import com.intellij.openapi.project.DumbAware;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.MessageType;
|
||||
import com.intellij.openapi.ui.popup.Balloon;
|
||||
@@ -28,7 +27,7 @@ import javax.swing.tree.TreePath;
|
||||
import java.util.Map;
|
||||
|
||||
|
||||
abstract public class StudyTaskNavigationAction extends StudyToolbarAction implements DumbAware {
|
||||
abstract public class StudyTaskNavigationAction extends StudyToolbarAction {
|
||||
public StudyTaskNavigationAction(@Nullable String text, @Nullable String description, @Nullable Icon icon) {
|
||||
super(text, description, icon);
|
||||
}
|
||||
|
||||
+5
-2
@@ -1,16 +1,19 @@
|
||||
package com.jetbrains.edu.learning.actions;
|
||||
|
||||
import com.intellij.openapi.actionSystem.AnAction;
|
||||
import com.intellij.openapi.project.DumbAwareAction;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
|
||||
public abstract class StudyToolbarAction extends AnAction {
|
||||
public abstract class StudyToolbarAction extends DumbAwareAction {
|
||||
public StudyToolbarAction(@Nullable String text, @Nullable String description, @Nullable Icon icon) {
|
||||
super(text, description, icon);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public abstract String getActionId();
|
||||
|
||||
@Nullable
|
||||
public abstract String[] getShortcuts();
|
||||
}
|
||||
|
||||
+6
-50
@@ -2,22 +2,16 @@ package com.jetbrains.edu.learning;
|
||||
|
||||
import com.intellij.execution.ExecutionException;
|
||||
import com.intellij.openapi.actionSystem.ActionManager;
|
||||
import com.intellij.openapi.actionSystem.AnActionEvent;
|
||||
import com.intellij.openapi.actionSystem.KeyboardShortcut;
|
||||
import com.intellij.openapi.actionSystem.Presentation;
|
||||
import com.intellij.openapi.application.ApplicationManager;
|
||||
import com.intellij.openapi.command.CommandProcessor;
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.keymap.KeymapUtil;
|
||||
import com.intellij.openapi.progress.ProgressManager;
|
||||
import com.intellij.openapi.project.DumbService;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.ui.MessageType;
|
||||
import com.intellij.openapi.util.Ref;
|
||||
import com.intellij.openapi.vfs.VirtualFile;
|
||||
import com.intellij.openapi.wm.IdeFocusManager;
|
||||
import com.jetbrains.edu.learning.actions.StudyCheckAction;
|
||||
import com.jetbrains.edu.learning.actions.StudyRunAction;
|
||||
import com.jetbrains.edu.learning.actions.StudyToolbarAction;
|
||||
import com.jetbrains.edu.learning.checker.StudyCheckTask;
|
||||
import com.jetbrains.edu.learning.checker.StudyCheckUtils;
|
||||
import com.jetbrains.edu.learning.checker.StudyTestRunner;
|
||||
@@ -26,39 +20,16 @@ import com.jetbrains.edu.learning.courseFormat.StudyStatus;
|
||||
import com.jetbrains.edu.learning.courseFormat.Task;
|
||||
import com.jetbrains.edu.learning.courseFormat.TaskFile;
|
||||
import com.jetbrains.edu.learning.editor.StudyEditor;
|
||||
import icons.InteractiveLearningIcons;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import java.util.Map;
|
||||
|
||||
public class PyStudyCheckAction extends StudyToolbarAction {
|
||||
public class PyStudyCheckAction extends StudyCheckAction {
|
||||
private static final Logger LOG = Logger.getInstance(PyStudyCheckAction.class);
|
||||
|
||||
public static final String ACTION_ID = "PyCheckAction";
|
||||
public static final String SHORTCUT = "ctrl alt pressed ENTER";
|
||||
|
||||
protected Ref<Boolean> myCheckInProgress = new Ref<>(false);
|
||||
|
||||
public PyStudyCheckAction() {
|
||||
super("Check Task (" + KeymapUtil.getShortcutText(new KeyboardShortcut(KeyStroke.getKeyStroke(SHORTCUT), null)) + ")", "Check current task", InteractiveLearningIcons.Resolve);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void actionPerformed(@NotNull AnActionEvent e) {
|
||||
Project project = e.getProject();
|
||||
if (project == null) {
|
||||
return;
|
||||
}
|
||||
if (DumbService.isDumb(project)) {
|
||||
StudyCheckUtils.showTestResultPopUp("Checking is not available while indexing is in progress", MessageType.WARNING.getPopupBackground(), project);
|
||||
return;
|
||||
}
|
||||
check(project);
|
||||
}
|
||||
|
||||
protected void check(@NotNull Project project) {
|
||||
|
||||
public void check(@NotNull Project project) {
|
||||
ApplicationManager.getApplication().runWriteAction(() -> {
|
||||
CommandProcessor.getInstance().runUndoTransparentAction(() -> {
|
||||
final StudyEditor selectedEditor = StudyUtils.getSelectedStudyEditor(project);
|
||||
@@ -161,25 +132,10 @@ public class PyStudyCheckAction extends StudyToolbarAction {
|
||||
}
|
||||
return taskVirtualFile;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
@NotNull
|
||||
@Override
|
||||
public String getActionId() {
|
||||
return ACTION_ID;
|
||||
}
|
||||
|
||||
@Override
|
||||
public String[] getShortcuts() {
|
||||
return new String[]{SHORTCUT};
|
||||
}
|
||||
|
||||
@Override
|
||||
public void update(AnActionEvent e) {
|
||||
final Presentation presentation = e.getPresentation();
|
||||
StudyUtils.updateAction(e);
|
||||
if (presentation.isEnabled()) {
|
||||
presentation.setEnabled(!myCheckInProgress.get());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user