new editing mode for task description panel
[idea/community.git] / python / educational-core / student / src / com / jetbrains / edu / learning / actions / StudyCheckAction.java
1 package com.jetbrains.edu.learning.actions;
2
3 import com.intellij.openapi.actionSystem.AnActionEvent;
4 import com.intellij.openapi.actionSystem.KeyboardShortcut;
5 import com.intellij.openapi.actionSystem.Presentation;
6 import com.intellij.openapi.keymap.KeymapUtil;
7 import com.intellij.openapi.project.DumbService;
8 import com.intellij.openapi.project.Project;
9 import com.intellij.openapi.ui.MessageType;
10 import com.intellij.openapi.util.Ref;
11 import com.jetbrains.edu.learning.StudyUtils;
12 import com.jetbrains.edu.learning.checker.StudyCheckUtils;
13 import icons.InteractiveLearningIcons;
14 import org.jetbrains.annotations.NotNull;
15
16 import javax.swing.*;
17
18 public abstract class StudyCheckAction extends StudyActionWithShortcut {
19   public static final String SHORTCUT = "ctrl alt pressed ENTER";
20
21   protected Ref<Boolean> myCheckInProgress = new Ref<>(false);
22
23   public StudyCheckAction() {
24     super("Check Task (" + KeymapUtil.getShortcutText(new KeyboardShortcut(KeyStroke.getKeyStroke(SHORTCUT), null)) + ")", "Check current task", InteractiveLearningIcons.Resolve);
25   }
26
27   public abstract void check(@NotNull final Project project);
28
29   @Override
30   public void actionPerformed(@NotNull AnActionEvent e) {
31     Project project = e.getProject();
32     if (project == null) {
33       return;
34     }
35     if (DumbService.isDumb(project)) {
36       StudyCheckUtils.showTestResultPopUp("Checking is not available while indexing is in progress", MessageType.WARNING.getPopupBackground(), project);
37       return;
38     }
39     check(project);
40   }
41
42   @Override
43   public void update(AnActionEvent e) {
44     final Presentation presentation = e.getPresentation();
45     StudyUtils.updateAction(e);
46     if (presentation.isEnabled()) {
47       presentation.setEnabled(!myCheckInProgress.get());
48     }
49   }
50
51   @Override
52   public String[] getShortcuts() {
53     return new String[] {SHORTCUT};
54   }
55 }