diff --git a/platform/lang-impl/src/com/intellij/execution/ExecutorRegistryImpl.java b/platform/lang-impl/src/com/intellij/execution/ExecutorRegistryImpl.java index 1bfa1cc9de8a..beefb6cdd8d3 100644 --- a/platform/lang-impl/src/com/intellij/execution/ExecutorRegistryImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/ExecutorRegistryImpl.java @@ -24,6 +24,7 @@ import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.progress.ProgressIndicator; import com.intellij.openapi.project.*; import com.intellij.openapi.util.IconLoader; +import com.intellij.openapi.util.Key; import com.intellij.openapi.util.Trinity; import com.intellij.util.IconUtil; import com.intellij.util.containers.ContainerUtil; @@ -43,6 +44,9 @@ public final class ExecutorRegistryImpl extends ExecutorRegistry implements Disp public static final String RUNNERS_GROUP = "RunnerActions"; public static final String RUN_CONTEXT_GROUP = "RunContextGroupInner"; + // Usage: project.putUserData(EXECUTION_TEMPORARY_DISABLED, Boolean.TRUE) when there is some 'external' reason that prevents execution + public static final Key EXECUTION_TEMPORARY_DISABLED = Key.create("EXECUTION_TEMPORARY_DISABLED"); + private List myExecutors = new ArrayList<>(); private final Map myIdToExecutor = new THashMap<>(); private final Set myContextActionIdSet = new THashSet<>(); @@ -248,8 +252,11 @@ public final class ExecutorRegistryImpl extends ExecutorRegistry implements Disp public void update(@NotNull final AnActionEvent e) { final Presentation presentation = e.getPresentation(); final Project project = e.getProject(); - - if (project == null || !project.isInitialized() || project.isDisposed()) { + if (project != null) { + boolean b = (System.currentTimeMillis() % 10000) > 5000; + project.putUserData(EXECUTION_TEMPORARY_DISABLED, b ? Boolean.TRUE : null); + } + if (project == null || !project.isInitialized() || project.isDisposed() || EXECUTION_TEMPORARY_DISABLED.get(project) == Boolean.TRUE) { presentation.setEnabled(false); return; }