Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPawel Piech2012-10-19 17:04:58 +0000
committerPawel Piech2012-10-19 17:06:59 +0000
commit95addf002e9cf536bc0b4de64854632d91cf6bfe (patch)
treee93b9ebdad97ebff928de9f062875b1656aec8b1 /plugins
parente3e569b894c779b39111a67147a2547ef4861873 (diff)
downloadorg.eclipse.tcf-95addf002e9cf536bc0b4de64854632d91cf6bfe.tar.gz
org.eclipse.tcf-95addf002e9cf536bc0b4de64854632d91cf6bfe.tar.xz
org.eclipse.tcf-95addf002e9cf536bc0b4de64854632d91cf6bfe.zip
Bug 392473 - [reverse] Enable toggle reverse debugging action.
Diffstat (limited to 'plugins')
-rw-r--r--plugins/org.eclipse.tcf.cdt.ui/src/org/eclipse/tcf/internal/cdt/ui/commands/TCFReverseDebuggingPropertyTester.java32
-rw-r--r--plugins/org.eclipse.tcf.cdt.ui/src/org/eclipse/tcf/internal/cdt/ui/commands/TCFReverseToggleCommand.java45
-rw-r--r--plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFModel.java19
3 files changed, 87 insertions, 9 deletions
diff --git a/plugins/org.eclipse.tcf.cdt.ui/src/org/eclipse/tcf/internal/cdt/ui/commands/TCFReverseDebuggingPropertyTester.java b/plugins/org.eclipse.tcf.cdt.ui/src/org/eclipse/tcf/internal/cdt/ui/commands/TCFReverseDebuggingPropertyTester.java
index 83757e1ed..a8eabb898 100644
--- a/plugins/org.eclipse.tcf.cdt.ui/src/org/eclipse/tcf/internal/cdt/ui/commands/TCFReverseDebuggingPropertyTester.java
+++ b/plugins/org.eclipse.tcf.cdt.ui/src/org/eclipse/tcf/internal/cdt/ui/commands/TCFReverseDebuggingPropertyTester.java
@@ -10,7 +10,12 @@
*******************************************************************************/
package org.eclipse.tcf.internal.cdt.ui.commands;
+import java.util.concurrent.ExecutionException;
+
import org.eclipse.core.expressions.PropertyTester;
+import org.eclipse.tcf.internal.cdt.ui.Activator;
+import org.eclipse.tcf.internal.debug.ui.model.TCFNode;
+import org.eclipse.tcf.util.TCFTask;
/**
@@ -19,9 +24,30 @@ import org.eclipse.core.expressions.PropertyTester;
*/
public class TCFReverseDebuggingPropertyTester extends PropertyTester {
- public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
- // TODO should be queried from target
- return true;
+ private static final String ENABLED = "isReverseDebuggingEnabled"; //$NON-NLS-1$
+
+ public boolean test(Object context, String property, Object[] args, Object expectedValue) {
+ if (!ENABLED.equals(property)) return false;
+
+ if (context instanceof TCFNode) {
+ final TCFNode node = (TCFNode)context;
+ try {
+ return new TCFTask<Boolean>() {
+ public void run() {
+ done(node.getModel().isInstructionSteppingEnabled());
+ };
+ }.get();
+ }
+ catch (InterruptedException e) {
+ Activator.log(e);
+ return false;
+ }
+ catch (ExecutionException e) {
+ Activator.log(e);
+ return false;
+ }
+ }
+ return false;
}
}
diff --git a/plugins/org.eclipse.tcf.cdt.ui/src/org/eclipse/tcf/internal/cdt/ui/commands/TCFReverseToggleCommand.java b/plugins/org.eclipse.tcf.cdt.ui/src/org/eclipse/tcf/internal/cdt/ui/commands/TCFReverseToggleCommand.java
index 51381519b..cd1620bb0 100644
--- a/plugins/org.eclipse.tcf.cdt.ui/src/org/eclipse/tcf/internal/cdt/ui/commands/TCFReverseToggleCommand.java
+++ b/plugins/org.eclipse.tcf.cdt.ui/src/org/eclipse/tcf/internal/cdt/ui/commands/TCFReverseToggleCommand.java
@@ -10,9 +10,15 @@
*******************************************************************************/
package org.eclipse.tcf.internal.cdt.ui.commands;
+import java.util.concurrent.ExecutionException;
+
import org.eclipse.cdt.debug.core.model.IReverseToggleHandler;
import org.eclipse.debug.core.commands.IDebugCommandRequest;
import org.eclipse.debug.core.commands.IEnabledStateRequest;
+import org.eclipse.tcf.internal.cdt.ui.Activator;
+import org.eclipse.tcf.internal.debug.ui.model.TCFNode;
+import org.eclipse.tcf.protocol.Protocol;
+import org.eclipse.tcf.util.TCFTask;
/**
* Toggles enablement for reverse run control support.
@@ -20,12 +26,24 @@ import org.eclipse.debug.core.commands.IEnabledStateRequest;
public class TCFReverseToggleCommand implements IReverseToggleHandler {
public void canExecute(IEnabledStateRequest request) {
- request.setEnabled(false);
+ request.setEnabled(true);
request.done();
}
- public boolean execute(IDebugCommandRequest request) {
- return false;
+ public boolean execute(final IDebugCommandRequest request) {
+ if (request.getElements().length != 0 && request.getElements()[0] instanceof TCFNode) {
+ final TCFNode node = (TCFNode)request.getElements()[0];
+ Protocol.invokeLater(new Runnable() {
+ public void run() {
+ boolean enabled = node.getModel().isInstructionSteppingEnabled();
+ node.getModel().setInstructionSteppingEnabled(!enabled);
+ request.done();
+ };
+ });
+ } else {
+ request.done();
+ }
+ return true;
}
public boolean toggleNeedsUpdating() {
@@ -33,8 +51,25 @@ public class TCFReverseToggleCommand implements IReverseToggleHandler {
}
public boolean isReverseToggled(Object context) {
- // TODO should be queried from target
- return true;
+ if (context instanceof TCFNode) {
+ final TCFNode node = (TCFNode)context;
+ try {
+ return new TCFTask<Boolean>() {
+ public void run() {
+ done(node.getModel().isInstructionSteppingEnabled());
+ };
+ }.get();
+ }
+ catch (InterruptedException e) {
+ Activator.log(e);
+ return false;
+ }
+ catch (ExecutionException e) {
+ Activator.log(e);
+ return false;
+ }
+ }
+ return false;
}
}
diff --git a/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFModel.java b/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFModel.java
index b48cf88f8..7c38ec379 100644
--- a/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFModel.java
+++ b/plugins/org.eclipse.tcf.debug.ui/src/org/eclipse/tcf/internal/debug/ui/model/TCFModel.java
@@ -204,6 +204,8 @@ public class TCFModel implements ITCFModel, IElementContentProvider, IElementLab
private int display_source_generation;
private int suspend_trigger_generation;
private int auto_disconnect_generation;
+
+ private boolean reverse_debug_enabled;
// Debugger preferences:
private long min_view_updates_interval;
@@ -313,7 +315,7 @@ public class TCFModel implements ITCFModel, IElementContentProvider, IElementLab
};
private final IModelSelectionPolicy selection_policy;
-
+
private IChannel channel;
private TCFNodeLaunch launch_node;
private boolean disposed;
@@ -2011,4 +2013,19 @@ public class TCFModel implements ITCFModel, IElementContentProvider, IElementLab
public boolean isInstructionSteppingEnabled() {
return instruction_stepping_enabled;
}
+
+ /**
+ * Set whether reverse debugging should be enabled or not.
+ * @param enabled
+ */
+ public void setReverseDebugEnabled(boolean enabled) {
+ reverse_debug_enabled = enabled;
+ }
+
+ /**
+ * @return whether reverse debugging is enabled.
+ */
+ public boolean isReverseDebugEnabled() {
+ return reverse_debug_enabled;
+ }
}

Back to the top