388776: abort build using context menu in Builds View
Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=388776
Change-Id: Id1c11c81e6fba20f2924850c4305d5042c18b3c9
Signed-off-by: Jomar Santos <jomaroliversantos@gmail.com>
diff --git a/org.eclipse.mylyn.builds.ui/plugin.xml b/org.eclipse.mylyn.builds.ui/plugin.xml
index 041ee39..8320152 100644
--- a/org.eclipse.mylyn.builds.ui/plugin.xml
+++ b/org.eclipse.mylyn.builds.ui/plugin.xml
@@ -138,6 +138,12 @@
</command>
<command
categoryId="org.eclipse.mylyn.builds.ui.category.Commands"
+ defaultHandler="org.eclipse.mylyn.internal.builds.ui.commands.AbortBuildHandler"
+ id="org.eclipse.mylyn.builds.ui.command.AbortBuild"
+ name="Abort Build">
+ </command>
+ <command
+ categoryId="org.eclipse.mylyn.builds.ui.category.Commands"
defaultHandler="org.eclipse.mylyn.internal.builds.ui.commands.ShowBuildOutputHandler"
id="org.eclipse.mylyn.builds.ui.command.ShowBuildOutput"
name="Show Build Output">
@@ -199,6 +205,11 @@
icon="icons/etool16/run_exc.gif">
</image>
<image
+ commandId="org.eclipse.mylyn.builds.ui.command.AbortBuild"
+ disabledIcon="platform:/plugin/org.eclipse.ui/icons/full/dlcl16/stop.png"
+ icon="platform:/plugin/org.eclipse.ui/icons/full/elcl16/stop.png">
+ </image>
+ <image
commandId="org.eclipse.mylyn.builds.ui.command.NewTaskFromBuild"
icon="icons/etool16/task-new.gif">
</image>
@@ -532,6 +543,26 @@
</visibleWhen>
</command>
<command
+ commandId="org.eclipse.mylyn.builds.ui.command.AbortBuild"
+ label="Abort Build"
+ style="push">
+ <visibleWhen
+ checkEnabled="false">
+ <iterate
+ ifEmpty="false"
+ operator="and">
+ <instanceof
+ value="org.eclipse.mylyn.builds.core.IBuildPlan">
+ </instanceof>
+ <adapt type="org.eclipse.mylyn.builds.core.IBuildPlan">
+ <test
+ property="org.eclipse.mylyn.builds.ui.test.plan.isLastBuildRunning">
+ </test>
+ </adapt>
+ </iterate>
+ </visibleWhen>
+ </command>
+ <command
commandId="org.eclipse.ui.navigate.showIn"
label="History"
style="push">
@@ -805,7 +836,7 @@
class="org.eclipse.mylyn.internal.builds.ui.BuildPlanPropertyTester"
id="org.eclipse.mylyn.builds.ui.propertyTester.BuildPlan"
namespace="org.eclipse.mylyn.builds.ui.test.plan"
- properties="hasBuild"
+ properties="hasBuild,isLastBuildRunning"
type="org.eclipse.mylyn.builds.core.IBuildPlan">
</propertyTester>
<propertyTester
diff --git a/org.eclipse.mylyn.builds.ui/src/org/eclipse/mylyn/internal/builds/ui/BuildPlanPropertyTester.java b/org.eclipse.mylyn.builds.ui/src/org/eclipse/mylyn/internal/builds/ui/BuildPlanPropertyTester.java
index 2e1d0cf..d341c90 100644
--- a/org.eclipse.mylyn.builds.ui/src/org/eclipse/mylyn/internal/builds/ui/BuildPlanPropertyTester.java
+++ b/org.eclipse.mylyn.builds.ui/src/org/eclipse/mylyn/internal/builds/ui/BuildPlanPropertyTester.java
@@ -12,6 +12,7 @@
package org.eclipse.mylyn.internal.builds.ui;
import org.eclipse.core.expressions.PropertyTester;
+import org.eclipse.mylyn.builds.core.BuildState;
import org.eclipse.mylyn.builds.core.IBuildPlan;
import org.eclipse.mylyn.commons.core.CoreUtil;
@@ -30,6 +31,9 @@
if ("hasBuild".equals(property)) {
return CoreUtil.propertyEquals(plan.getLastBuild() != null, expectedValue);
}
+ if ("isLastBuildRunning".equals(property)) {
+ return CoreUtil.propertyEquals(plan.getLastBuild().getState() == BuildState.RUNNING, expectedValue);
+ }
}
return false;
}
diff --git a/org.eclipse.mylyn.builds.ui/src/org/eclipse/mylyn/internal/builds/ui/commands/AbortBuildHandler.java b/org.eclipse.mylyn.builds.ui/src/org/eclipse/mylyn/internal/builds/ui/commands/AbortBuildHandler.java
new file mode 100644
index 0000000..8333b1f
--- /dev/null
+++ b/org.eclipse.mylyn.builds.ui/src/org/eclipse/mylyn/internal/builds/ui/commands/AbortBuildHandler.java
@@ -0,0 +1,36 @@
+/*******************************************************************************
+ * Copyright (c) 2016 Tasktop Technologies and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Tasktop Technologies - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.mylyn.internal.builds.ui.commands;
+
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.mylyn.builds.core.IBuildPlan;
+import org.eclipse.mylyn.internal.builds.ui.actions.AbortBuildAction;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+public class AbortBuildHandler extends AbstractHandler {
+
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ ISelection selection = HandlerUtil.getCurrentSelection(event);
+ if (selection instanceof IStructuredSelection) {
+ Object item = ((IStructuredSelection) selection).getFirstElement();
+ if (item instanceof IBuildPlan) {
+ IBuildPlan plan = (IBuildPlan) item;
+ AbortBuildAction.abortBuild(plan.getLastBuild());
+ }
+ }
+ return null;
+ }
+}