From 00029d32af0fe029c2ced70b0bedabdd513d7434 Mon Sep 17 00:00:00 2001 From: Konstantin Aleev Date: Fri, 11 Aug 2017 19:44:32 +0300 Subject: [PATCH] RunDashboard: default run configuration status provider --- .../DashboardRunConfigurationStatus.java | 22 +++++++++++++++++++ .../dashboard/RunDashboardContributor.java | 20 +---------------- .../tree/StatusDashboardGroupingRule.java | 7 +++--- 3 files changed, 26 insertions(+), 23 deletions(-) diff --git a/platform/lang-api/src/com/intellij/execution/dashboard/DashboardRunConfigurationStatus.java b/platform/lang-api/src/com/intellij/execution/dashboard/DashboardRunConfigurationStatus.java index 41b577ae26af..a44303f151a4 100644 --- a/platform/lang-api/src/com/intellij/execution/dashboard/DashboardRunConfigurationStatus.java +++ b/platform/lang-api/src/com/intellij/execution/dashboard/DashboardRunConfigurationStatus.java @@ -16,6 +16,8 @@ package com.intellij.execution.dashboard; import com.intellij.execution.ExecutionBundle; +import com.intellij.execution.process.ProcessHandler; +import com.intellij.execution.ui.RunContentDescriptor; import com.intellij.icons.AllIcons; import javax.swing.*; @@ -46,4 +48,24 @@ public class DashboardRunConfigurationStatus { public Icon getIcon() { return myIcon; } + + public static DashboardRunConfigurationStatus getStatus(DashboardRunConfigurationNode node) { + RunContentDescriptor descriptor = node.getDescriptor(); + if (descriptor == null) { + return STOPPED; + } + ProcessHandler processHandler = descriptor.getProcessHandler(); + if (processHandler == null) { + return STOPPED; + } + Integer exitCode = processHandler.getExitCode(); + if (exitCode == null) { + return STARTED; + } + Boolean terminationRequested = processHandler.getUserData(ProcessHandler.TERMINATION_REQUESTED); + if (exitCode == 0 || (terminationRequested != null && terminationRequested)) { + return STOPPED; + } + return FAILED; + } } diff --git a/platform/lang-api/src/com/intellij/execution/dashboard/RunDashboardContributor.java b/platform/lang-api/src/com/intellij/execution/dashboard/RunDashboardContributor.java index 0675d165ed7e..eb0216066c58 100644 --- a/platform/lang-api/src/com/intellij/execution/dashboard/RunDashboardContributor.java +++ b/platform/lang-api/src/com/intellij/execution/dashboard/RunDashboardContributor.java @@ -17,8 +17,6 @@ package com.intellij.execution.dashboard; import com.intellij.execution.configurations.ConfigurationType; import com.intellij.execution.configurations.RunConfiguration; -import com.intellij.execution.process.ProcessHandler; -import com.intellij.execution.ui.RunContentDescriptor; import com.intellij.ide.projectView.PresentationData; import com.intellij.openapi.extensions.ExtensionPointName; import com.intellij.ui.ColoredTreeCellRenderer; @@ -69,23 +67,7 @@ public abstract class RunDashboardContributor { */ @NotNull public DashboardRunConfigurationStatus getStatus(@NotNull DashboardRunConfigurationNode node) { - RunContentDescriptor descriptor = node.getDescriptor(); - if (descriptor == null) { - return DashboardRunConfigurationStatus.STOPPED; - } - ProcessHandler processHandler = descriptor.getProcessHandler(); - if (processHandler == null) { - return DashboardRunConfigurationStatus.STOPPED; - } - Integer exitCode = processHandler.getExitCode(); - if (exitCode == null) { - return DashboardRunConfigurationStatus.STARTED; - } - Boolean terminationRequested = processHandler.getUserData(ProcessHandler.TERMINATION_REQUESTED); - if (exitCode == 0 || (terminationRequested != null && terminationRequested)) { - return DashboardRunConfigurationStatus.STOPPED; - } - return DashboardRunConfigurationStatus.FAILED; + return DashboardRunConfigurationStatus.getStatus(node); } public boolean isShowInDashboard(@NotNull RunConfiguration runConfiguration) { diff --git a/platform/lang-impl/src/com/intellij/execution/dashboard/tree/StatusDashboardGroupingRule.java b/platform/lang-impl/src/com/intellij/execution/dashboard/tree/StatusDashboardGroupingRule.java index 435695442241..eea7e3845acf 100644 --- a/platform/lang-impl/src/com/intellij/execution/dashboard/tree/StatusDashboardGroupingRule.java +++ b/platform/lang-impl/src/com/intellij/execution/dashboard/tree/StatusDashboardGroupingRule.java @@ -66,10 +66,9 @@ public class StatusDashboardGroupingRule implements DashboardGroupingRule { if (node instanceof DashboardRunConfigurationNode) { DashboardRunConfigurationNode runConfigurationNode = (DashboardRunConfigurationNode)node; RunDashboardContributor contributor = runConfigurationNode.getContributor(); - if (contributor != null) { - DashboardRunConfigurationStatus status = contributor.getStatus(runConfigurationNode); - return new DashboardGroupImpl<>(status, status.getName(), status.getIcon()); - } + DashboardRunConfigurationStatus status = contributor != null ? contributor.getStatus(runConfigurationNode) : + DashboardRunConfigurationStatus.getStatus(runConfigurationNode); + return new DashboardGroupImpl<>(status, status.getName(), status.getIcon()); } return null; }