RunDashboard: default run configuration status provider

This commit is contained in:
Konstantin Aleev
2017-09-04 12:26:33 +03:00
parent 5e00dd0898
commit 00029d32af
3 changed files with 26 additions and 23 deletions
@@ -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;
}
}
@@ -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) {
@@ -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;
}