package org.eclipse.dltk.debug.core.eval; import org.eclipse.debug.core.DebugEvent; import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.IDebugEventSetListener; import org.eclipse.debug.core.model.IDebugElement; public class InspectEvaluatedScriptExpression extends EvaluatedScriptExpression implements IDebugEventSetListener { public InspectEvaluatedScriptExpression(IScriptEvaluationResult result) { super(result); DebugPlugin.getDefault().addDebugEventListener(this); } @Override public void handleDebugEvents(DebugEvent[] events) { for (int i = 0; i < events.length; i++) { DebugEvent event = events[i]; switch (event.getKind()) { case DebugEvent.TERMINATE: if (event.getSource().equals(getDebugTarget())) { DebugPlugin.getDefault().getExpressionManager() .removeExpression(this); } break; case DebugEvent.SUSPEND: if (event.getDetail() != DebugEvent.EVALUATION_IMPLICIT) { if (event.getSource() instanceof IDebugElement) { IDebugElement source = (IDebugElement) event .getSource(); if (source.getDebugTarget().equals(getDebugTarget())) { DebugPlugin.getDefault().fireDebugEventSet( new DebugEvent[] { new DebugEvent(this, DebugEvent.CHANGE, DebugEvent.CONTENT) }); } } } break; } } } @Override public void dispose() { super.dispose(); DebugPlugin.getDefault().removeDebugEventListener(this); } }