diff options
3 files changed, 24 insertions, 3 deletions
diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/plugin.xml b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/plugin.xml index f9fddd657..437f7d1b0 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/plugin.xml +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/plugin.xml @@ -31,7 +31,7 @@ class="org.eclipse.tcf.te.tcf.processes.core.model.properties.PropertyTester" id="org.eclipse.tcf.te.tcf.processes.core.model.properties" namespace="org.eclipse.tcf.te.tcf.processes.core" - properties="isAttached,canAttach,hasProcessContext" + properties="isAttached,canAttach,hasProcessContext,canTerminate" type="org.eclipse.tcf.te.tcf.processes.core.model.interfaces.IProcessContextNode"> </propertyTester> </extension> diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/model/properties/PropertyTester.java b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/model/properties/PropertyTester.java index 1419b2367..cebb0b3a3 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/model/properties/PropertyTester.java +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.core/src/org/eclipse/tcf/te/tcf/processes/core/model/properties/PropertyTester.java @@ -76,6 +76,22 @@ public class PropertyTester extends org.eclipse.core.expressions.PropertyTester return ((Boolean) expectedValue).booleanValue() == canAttach.get(); } + + if ("canTerminate".equals(property) && expectedValue instanceof Boolean) { //$NON-NLS-1$ + final AtomicBoolean canTerminate = new AtomicBoolean(); + Runnable runnable = new Runnable() { + @Override + public void run() { + if (node.getProcessContext() != null) { + canTerminate.set(node.getProcessContext().canTerminate()); + } + } + }; + if (Protocol.isDispatchThread()) runnable.run(); + else Protocol.invokeAndWait(runnable); + + return ((Boolean) expectedValue).booleanValue() == canTerminate.get(); + } } return false; } diff --git a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/plugin.xml b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/plugin.xml index e7212d7e3..b619957a0 100644 --- a/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/plugin.xml +++ b/target_explorer/plugins/org.eclipse.tcf.te.tcf.processes.ui/plugin.xml @@ -460,13 +460,14 @@ <adapt type="org.eclipse.tcf.te.tcf.processes.core.model.interfaces.IProcessContextNode"> <and> <test property="org.eclipse.tcf.te.tcf.processes.core.hasProcessContext" value="true"/> - <test property="org.eclipse.tcf.te.tcf.processes.ui.model.isAttached" value="true"/> + <test property="org.eclipse.tcf.te.tcf.processes.core.isAttached" value="true"/> </and> </adapt> </iterate> </with> </enabledWhen> </handler> + <handler class="org.eclipse.tcf.te.tcf.processes.ui.handler.TerminateHandler" commandId="org.eclipse.tcf.te.launch.command.terminate"> @@ -481,8 +482,12 @@ <enabledWhen> <with variable="selection"> <count value="+"/> - <iterate ifEmpty="false" operator="and"> + <iterate operator="and" ifEmpty="false"> <adapt type="org.eclipse.tcf.te.tcf.processes.core.model.interfaces.IProcessContextNode"> + <and> + <test property="org.eclipse.tcf.te.tcf.processes.core.hasProcessContext" value="true"/> + <test property="org.eclipse.tcf.te.tcf.processes.core.canTerminate" value="true"/> + </and> </adapt> </iterate> </with> |