diff options
Diffstat (limited to 'org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/RetargetBreakpointAction.java')
-rw-r--r-- | org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/RetargetBreakpointAction.java | 54 |
1 files changed, 53 insertions, 1 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/RetargetBreakpointAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/RetargetBreakpointAction.java index ff7c2b530..ec5506511 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/RetargetBreakpointAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/RetargetBreakpointAction.java @@ -7,11 +7,20 @@ * * Contributors: * IBM Corporation - initial API and implementation + * Wind River Systems - added support for IToggleBreakpointsTargetFactory *******************************************************************************/ package org.eclipse.debug.internal.ui.actions.breakpoints; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.debug.internal.ui.actions.IToggleBreakpointsTargetManagerListener; import org.eclipse.debug.internal.ui.actions.RetargetAction; +import org.eclipse.debug.internal.ui.actions.ToggleBreakpointsTargetManager; import org.eclipse.debug.ui.actions.IToggleBreakpointsTarget; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionProvider; +import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.IWorkbenchWindow; /** @@ -19,12 +28,55 @@ import org.eclipse.debug.ui.actions.IToggleBreakpointsTarget; * * @since 3.0 */ -public abstract class RetargetBreakpointAction extends RetargetAction { +public abstract class RetargetBreakpointAction extends RetargetAction implements IToggleBreakpointsTargetManagerListener { + private IAction fAction; + /* (non-Javadoc) * @see org.eclipse.debug.internal.ui.actions.RetargetAction#getAdapterClass() */ protected Class getAdapterClass() { return IToggleBreakpointsTarget.class; } + + protected Object getAdapter(IAdaptable adaptable) { + ToggleBreakpointsTargetManager manager = ToggleBreakpointsTargetManager.getDefault(); + return manager.getToggleBreakpointsTarget(getActivePart(), getTargetSelection()); + } + + public void init(IWorkbenchWindow window) { + super.init(window); + ToggleBreakpointsTargetManager.getDefault().addChangedListener(this); + } + + public void init(IAction action) { + super.init(action); + ToggleBreakpointsTargetManager.getDefault().addChangedListener(this); + } + + public void dispose() { + ToggleBreakpointsTargetManager.getDefault().removeChangedListener(this); + super.dispose(); + } + + public void selectionChanged(IAction action, ISelection selection) { + fAction = action; + super.selectionChanged(action, selection); + } + + public void preferredTargetsChanged() { + if (fAction != null) { + IWorkbenchPart activePart = getActivePart(); + if (activePart != null) { + ISelectionProvider provider = activePart.getSite().getSelectionProvider(); + if (provider != null) { + ISelection selection = provider.getSelection(); + // Force the toggle target to be refreshed. + super.clearPart(activePart); + super.partActivated(activePart); + super.selectionChanged(fAction, selection); + } + } + } + } } |