diff options
Diffstat (limited to 'debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/breakpoints/AddEventBreakpointActionDelegate.java')
-rw-r--r-- | debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/breakpoints/AddEventBreakpointActionDelegate.java | 48 |
1 files changed, 33 insertions, 15 deletions
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/breakpoints/AddEventBreakpointActionDelegate.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/breakpoints/AddEventBreakpointActionDelegate.java index b959f77ebfe..36081a2b954 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/breakpoints/AddEventBreakpointActionDelegate.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/breakpoints/AddEventBreakpointActionDelegate.java @@ -14,25 +14,30 @@ package org.eclipse.cdt.debug.internal.ui.actions.breakpoints; import org.eclipse.cdt.debug.core.CDIDebugModel; import org.eclipse.cdt.debug.internal.ui.actions.ActionMessages; -import org.eclipse.cdt.debug.internal.ui.dialogs.AddEventBreakpointDialog; import org.eclipse.cdt.debug.ui.CDebugUIPlugin; -import org.eclipse.cdt.debug.ui.UIMessages; +import org.eclipse.cdt.debug.ui.breakpoints.IToggleBreakpointsTargetCExtension; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; +import org.eclipse.debug.ui.DebugUITools; +import org.eclipse.debug.ui.actions.IToggleBreakpointsTarget; import org.eclipse.jface.action.IAction; -import org.eclipse.jface.dialogs.MessageDialog; -import org.eclipse.jface.window.Window; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.ui.IObjectActionDelegate; import org.eclipse.ui.IViewActionDelegate; import org.eclipse.ui.IViewPart; +import org.eclipse.ui.IWorkbenchPart; import org.eclipse.ui.actions.ActionDelegate; /** * A delegate for the "Add Event Breakpoint" action. */ -public class AddEventBreakpointActionDelegate extends ActionDelegate implements IViewActionDelegate { +public class AddEventBreakpointActionDelegate extends ActionDelegate implements IViewActionDelegate, IObjectActionDelegate { private IViewPart fView; + private IWorkbenchPart fPart; + private ISelection fSelection; + private ToggleBreakpointAdapter fDefaultToggleTarget = new ToggleBreakpointAdapter(); /* (non-Javadoc) * @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart) @@ -43,27 +48,35 @@ public class AddEventBreakpointActionDelegate extends ActionDelegate implements } private void setView(IViewPart view) { - fView = view; + fPart = fView = view; } protected IViewPart getView() { return fView; } + @Override + public void selectionChanged(IAction action, ISelection selection) { + fSelection = selection; + } + /* (non-Javadoc) * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction) */ @Override public void run(IAction action) { - AddEventBreakpointDialog dlg = new AddEventBreakpointDialog(CDebugUIPlugin.getActiveWorkbenchShell()); - if (dlg.isActive() == false) { - String message = ActionMessages.getString("AddEventBreakpointActionDelegate.2"); //$NON-NLS-1$ - MessageDialog.openError( getView().getSite().getShell(), UIMessages.getString( "CDebugUIPlugin.0" ), message); //$NON-NLS-1$ - } else { - if (dlg.open() == Window.OK) { - addEventBreakpoint(dlg.getEventTypeId(), dlg.getEventArgument()); - } - } + IToggleBreakpointsTarget toggleTarget = DebugUITools.getToggleBreakpointsTargetManager().getToggleBreakpointsTarget(fPart, fSelection); + IToggleBreakpointsTargetCExtension cToggleTarget = null; + if (toggleTarget instanceof IToggleBreakpointsTargetCExtension) { + cToggleTarget = (IToggleBreakpointsTargetCExtension)toggleTarget; + } else { + cToggleTarget = fDefaultToggleTarget; + } + try { + cToggleTarget.createEventBreakpointsInteractive(fPart, fSelection); + } catch (CoreException e) { + CDebugUIPlugin.errorDialog( ActionMessages.getString("AddEventBreakpointActionDelegate.2"), e ); //$NON-NLS-1$ + } } protected void addEventBreakpoint(String id, String arg) { @@ -80,4 +93,9 @@ public class AddEventBreakpointActionDelegate extends ActionDelegate implements return ResourcesPlugin.getWorkspace().getRoot(); } + @Override + public void setActivePart(IAction action, IWorkbenchPart targetPart) { + fPart = targetPart; + } + } |