Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.debug.examples.memory/src/org/eclipse/debug/examples/internal/memory/core/SampleThread.java')
-rw-r--r--org.eclipse.debug.examples.memory/src/org/eclipse/debug/examples/internal/memory/core/SampleThread.java273
1 files changed, 273 insertions, 0 deletions
diff --git a/org.eclipse.debug.examples.memory/src/org/eclipse/debug/examples/internal/memory/core/SampleThread.java b/org.eclipse.debug.examples.memory/src/org/eclipse/debug/examples/internal/memory/core/SampleThread.java
new file mode 100644
index 000000000..a198f4f30
--- /dev/null
+++ b/org.eclipse.debug.examples.memory/src/org/eclipse/debug/examples/internal/memory/core/SampleThread.java
@@ -0,0 +1,273 @@
+package org.eclipse.debug.examples.internal.memory.core;
+
+import org.eclipse.debug.core.DebugEvent;
+import org.eclipse.debug.core.DebugException;
+import org.eclipse.debug.core.ILaunch;
+import org.eclipse.debug.core.model.DebugElement;
+import org.eclipse.debug.core.model.IBreakpoint;
+import org.eclipse.debug.core.model.IDebugTarget;
+import org.eclipse.debug.core.model.IStackFrame;
+import org.eclipse.debug.core.model.IThread;
+
+/**
+ * Abstract Sample Thread
+ *
+ */
+public class SampleThread extends DebugElement implements IThread {
+
+ private SampleDebugTarget fTarget;
+
+ /**
+ * Constructs SampleThread
+ *
+ * @param target
+ */
+ public SampleThread(SampleDebugTarget target) {
+ super(target);
+ fTarget = target;
+ try {
+ getStackFrames();
+ } catch (DebugException e) {
+ e.printStackTrace();
+ }
+ fireEvent(new DebugEvent(this, DebugEvent.SUSPEND));
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.debug.core.model.IThread#getStackFrames()
+ */
+ @Override
+ public IStackFrame[] getStackFrames() throws DebugException {
+ return ((SampleDebugTarget) getDebugTarget()).getEngine().getStackframes(this);
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.debug.core.model.IThread#hasStackFrames()
+ */
+ @Override
+ public boolean hasStackFrames() throws DebugException {
+
+ return true;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.debug.core.model.IThread#getPriority()
+ */
+ @Override
+ public int getPriority() throws DebugException {
+
+ return 0;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.debug.core.model.IThread#getTopStackFrame()
+ */
+ @Override
+ public IStackFrame getTopStackFrame() throws DebugException {
+ return ((SampleDebugTarget) getDebugTarget()).getEngine().getStackframes(this)[0];
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.debug.core.model.IThread#getName()
+ */
+ @Override
+ public String getName() throws DebugException {
+ return Messages.SampleThread_0;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.debug.core.model.IThread#getBreakpoints()
+ */
+ @Override
+ public IBreakpoint[] getBreakpoints() {
+
+ return new IBreakpoint[0];
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.debug.core.model.IDebugElement#getModelIdentifier()
+ */
+ @Override
+ public String getModelIdentifier() {
+ return fTarget.getModelIdentifier();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.debug.core.model.IDebugElement#getDebugTarget()
+ */
+ @Override
+ public IDebugTarget getDebugTarget() {
+ return fTarget;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.debug.core.model.IDebugElement#getLaunch()
+ */
+ @Override
+ public ILaunch getLaunch() {
+ return fTarget.getLaunch();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.debug.core.model.ISuspendResume#canResume()
+ */
+ @Override
+ public boolean canResume() {
+ return fTarget.canResume();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.debug.core.model.ISuspendResume#canSuspend()
+ */
+ @Override
+ public boolean canSuspend() {
+ return fTarget.canSuspend();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.debug.core.model.ISuspendResume#isSuspended()
+ */
+ @Override
+ public boolean isSuspended() {
+ return fTarget.isSuspended();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.debug.core.model.ISuspendResume#resume()
+ */
+ @Override
+ public void resume() throws DebugException {
+ fTarget.resume();
+
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.debug.core.model.ISuspendResume#suspend()
+ */
+ @Override
+ public void suspend() throws DebugException {
+ fTarget.suspend();
+
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.debug.core.model.IStep#canStepInto()
+ */
+ @Override
+ public boolean canStepInto() {
+
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.debug.core.model.IStep#canStepOver()
+ */
+ @Override
+ public boolean canStepOver() {
+ if (!fTarget.isTerminated()) {
+ return true;
+ }
+
+ return fTarget.isSuspended();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.debug.core.model.IStep#canStepReturn()
+ */
+ @Override
+ public boolean canStepReturn() {
+
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.debug.core.model.IStep#isStepping()
+ */
+ @Override
+ public boolean isStepping() {
+
+ return false;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.debug.core.model.IStep#stepInto()
+ */
+ @Override
+ public void stepInto() throws DebugException {
+
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.debug.core.model.IStep#stepOver()
+ */
+ @Override
+ public void stepOver() throws DebugException {
+ fTarget.resume();
+ fTarget.suspend();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.debug.core.model.IStep#stepReturn()
+ */
+ @Override
+ public void stepReturn() throws DebugException {
+
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.debug.core.model.ITerminate#canTerminate()
+ */
+ @Override
+ public boolean canTerminate() {
+ return fTarget.canTerminate();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.debug.core.model.ITerminate#isTerminated()
+ */
+ @Override
+ public boolean isTerminated() {
+ return fTarget.isTerminated();
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.debug.core.model.ITerminate#terminate()
+ */
+ @Override
+ public void terminate() throws DebugException {
+ fTarget.terminate();
+
+ }
+
+ @Override
+ public Object getAdapter(Class adapter) {
+ if (adapter == ILaunch.class) {
+ return getLaunch();
+ }
+ return super.getAdapter(adapter);
+ }
+}

Back to the top