package org.erlide.debug.ui.actions; import org.eclipse.debug.core.ILaunch; import org.eclipse.debug.core.model.IProcess; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; import org.erlide.backend.debug.model.ErlangDebugElement; public class ErlangTracingAction implements IWorkbenchWindowActionDelegate { private ILaunch fLaunch; private ErlangTracingDialog fDialog; @Override public void dispose() { } @Override public void init(final IWorkbenchWindow window) { fDialog = new ErlangTracingDialog(window.getShell()); } @Override public void run(final IAction action) { if (fLaunch != null) { fDialog.initializeFrom(fLaunch); fDialog.open(); } } @Override public void selectionChanged(final IAction action, final ISelection selection) { fLaunch = null; if (selection instanceof IStructuredSelection) { final IStructuredSelection ss = (IStructuredSelection) selection; for (final Object o : ss.toArray()) { if (o instanceof ErlangDebugElement) { final ErlangDebugElement d = (ErlangDebugElement) o; fLaunch = d.getLaunch(); } else if (o instanceof ILaunch) { fLaunch = (ILaunch) o; } else if (o instanceof IProcess) { final IProcess p = (IProcess) o; fLaunch = p.getLaunch(); } } } } }