diff options
Diffstat (limited to 'org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/ProcessProxy.java')
-rw-r--r-- | org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/ProcessProxy.java | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/ProcessProxy.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/ProcessProxy.java new file mode 100644 index 000000000..9742b280d --- /dev/null +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/update/ProcessProxy.java @@ -0,0 +1,62 @@ +package org.eclipse.debug.internal.ui.viewers.update; + +import org.eclipse.debug.core.DebugEvent; +import org.eclipse.debug.core.DebugPlugin; +import org.eclipse.debug.core.IDebugEventSetListener; +import org.eclipse.debug.core.model.IProcess; +import org.eclipse.debug.internal.ui.viewers.AbstractModelProxy; +import org.eclipse.debug.internal.ui.viewers.IModelDelta; +import org.eclipse.debug.internal.ui.viewers.IModelDeltaNode; +import org.eclipse.debug.internal.ui.viewers.IPresentationContext; + +public class ProcessProxy extends AbstractModelProxy implements IDebugEventSetListener { + + private IProcess fProcess; + + public ProcessProxy(IProcess process) { + fProcess = process; + } + + public void init(IPresentationContext context) { + DebugPlugin.getDefault().addDebugEventListener(this); + } + + public void dispose() { + DebugPlugin.getDefault().removeDebugEventListener(this); + } + + protected synchronized boolean containsEvent(DebugEvent event) { + return fProcess.equals(event.getSource()); + } + + public void handleDebugEvents(DebugEvent[] events) { + for (int i = 0; i < events.length; i++) { + DebugEvent event = events[i]; + switch (event.getKind()) { + case DebugEvent.CREATE: + handleCreate(); + break; + default: + handleChange(); + break; + } + } + } + + private void handleChange() { + ModelDelta delta = new ModelDelta(); + IModelDeltaNode node = delta.addNode(DebugPlugin.getDefault().getLaunchManager(), IModelDelta.NOCHANGE); + node = node.addNode(fProcess.getLaunch(), IModelDelta.NOCHANGE); + node.addNode(fProcess, IModelDelta.CHANGED | IModelDelta.STATE); + fireModelChanged(delta); + } + + private void handleCreate() { + ModelDelta delta = new ModelDelta(); + IModelDeltaNode node = delta.addNode(DebugPlugin.getDefault().getLaunchManager(), IModelDelta.NOCHANGE); + node = node.addNode(fProcess.getLaunch(), IModelDelta.NOCHANGE); + node.addNode(fProcess, IModelDelta.ADDED); + fireModelChanged(delta); + } + +} |