Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
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.java54
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);
+ }
+ }
+ }
+ }
}

Back to the top