package org.erlide.debug.ui.tracing; import java.util.List; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.debug.core.ILaunch; import org.eclipse.debug.core.ILaunchConfiguration; import org.eclipse.debug.core.ILaunchManager; import org.eclipse.debug.core.model.IDebugTarget; import org.eclipse.debug.core.model.LaunchConfigurationDelegate; import org.erlide.core.ErlangCore; public class DebugTraceLaunchConfigurationDelegate extends LaunchConfigurationDelegate { private ILaunch parentLaunch; private IDebugTarget node; private List<DebugTraceEvent> events; public void setInfo(final ILaunch parentLaunch, final IDebugTarget node, final List<DebugTraceEvent> events) { this.parentLaunch = parentLaunch; this.node = node; this.events = events; } @Override public void launch(final ILaunchConfiguration configuration, final String mode, final ILaunch launch, final IProgressMonitor monitor) throws CoreException { if (!mode.equals(ILaunchManager.DEBUG_MODE)) { throw new CoreException(new Status(IStatus.ERROR, ErlangCore.PLUGIN_ID, "debug mode not set")); } final DebugTraceTarget target = new DebugTraceTarget(launch, parentLaunch, node, events); launch.addDebugTarget(target); } }