Bug 44986 - Support for Breakpoint groups
diff --git a/org.eclipse.debug.ui/plugin.xml b/org.eclipse.debug.ui/plugin.xml index 4019403..a83f64c 100644 --- a/org.eclipse.debug.ui/plugin.xml +++ b/org.eclipse.debug.ui/plugin.xml
@@ -667,7 +667,7 @@ <action id="org.eclipse.debug.ui.breakpointsView.toolbar.setDefaultBreakpointGroup" menubarPath="defaultBreakpointGroup" - class="org.eclipse.debug.internal.ui.actions.SetDefaultBreakpointGroupAction" + class="org.eclipse.debug.internal.ui.actions.breakpointGroups.SetDefaultBreakpointGroupAction" icon="icons/full/obj16/breakpoint_group.gif" helpContextId="set_default_breakpoint_group_action_context" label="Set Default Group..." @@ -676,7 +676,7 @@ <action id="org.eclipse.debug.ui.breakpointsView.toolbar.clearDefaultBreakpointGroup" menubarPath="defaultBreakpointGroup" - class="org.eclipse.debug.internal.ui.actions.ClearDefaultBreakpointGroupAction" + class="org.eclipse.debug.internal.ui.actions.breakpointGroups.ClearDefaultBreakpointGroupAction" helpContextId="clear_default_breakpoint_group_action_context" label="Clear Default Group" tooltip="Clear Default Breakpoint Group"> @@ -1015,7 +1015,7 @@ label="%SelectAll.label" helpContextId="select_all_breakpoints_action_context" class="org.eclipse.debug.internal.ui.actions.SelectAllBreakpointsAction" - menubarPath="breakpointNoSelectionGroup" + menubarPath="breakpointSelectGroup" id="org.eclipse.debug.ui.actions.SelectAllBreakpointsAction"> </action> <action @@ -1023,7 +1023,7 @@ icon="icons/full/elcl16/rem_all_co.gif" helpContextId="remove_all_breakpoints_action_context" class="org.eclipse.debug.internal.ui.actions.RemoveAllBreakpointsAction" - menubarPath="breakpointNoSelectionGroup" + menubarPath="breakpointRemoveGroup" id="org.eclipse.debug.ui.actions.RemoveAllBreakpoints"> </action> </viewerContribution> @@ -1037,11 +1037,25 @@ </objectClass> </visibility> <action + label="Select By Type" + helpContextId="select_breakpoints_by_type_action_context" + class="org.eclipse.debug.internal.ui.actions.breakpointGroups.SelectBreakpointsByTypeAction" + menubarPath="breakpointSelectGroup" + id="org.eclipse.debug.ui.actions.SelectBreakpointsByType"> + </action> + <action + label="Select By File" + helpContextId="select_breakpoints_by_file_action_context" + class="org.eclipse.debug.internal.ui.actions.breakpointGroups.SelectBreakpointsByResourceAction" + menubarPath="breakpointSelectGroup" + id="org.eclipse.debug.ui.actions.SelectBreakpointsByFile"> + </action> + <action label="%RemoveAction.label" icon="icons/full/elcl16/rem_co.gif" helpContextId="remove_breakpoint_action_context" class="org.eclipse.debug.internal.ui.actions.RemoveBreakpointAction" - menubarPath="breakpointNoSelectionGroup" + menubarPath="breakpointRemoveGroup" id="org.eclipse.debug.ui.actions.RemoveBreakpoint"> </action> <action @@ -1066,11 +1080,20 @@ label="Add To Group" icon="icons/full/obj16/breakpoint_group.gif" helpContextId="add_breakpoint_to_group_action_context" - class="org.eclipse.debug.internal.ui.actions.AddBreakpointToGroupAction" + class="org.eclipse.debug.internal.ui.actions.breakpointGroups.AddBreakpointToGroupAction" menubarPath="breakpointGroup" enablesFor="1+" id="org.eclipse.debug.ui.actions.AddBreakpointToGroup"> </action> + <action + label="Remove From Group" + icon="icons/full/elcl16/dissolve_group.gif" + helpContextId="remove_breakpoint_from_group_action_context" + class="org.eclipse.debug.internal.ui.actions.breakpointGroups.RemoveBreakpointFromGroupAction" + menubarPath="breakpointGroup" + enablesFor="1+" + id="org.eclipse.debug.ui.actions.RemoveBreakpointFromGroup"> + </action> </viewerContribution> <!-- Breakpoint group actions --> <viewerContribution @@ -1084,7 +1107,7 @@ <action label="Rename Group" helpContextId="rename_breakpoint_group_action_context" - class="org.eclipse.debug.internal.ui.actions.RenameBreakpointGroupAction" + class="org.eclipse.debug.internal.ui.actions.breakpointGroups.RenameBreakpointGroupAction" menubarPath="breakpointGroupGroup" enablesFor="1+" id="org.eclipse.debug.ui.actions.RenameBreakpointGroup"> @@ -1093,7 +1116,7 @@ label="Dissolve Group" icon="icons/full/elcl16/dissolve_group.gif" helpContextId="dissolve_breakpoint_group_action_context" - class="org.eclipse.debug.internal.ui.actions.DissolveBreakpointGroupAction" + class="org.eclipse.debug.internal.ui.actions.breakpointGroups.DissolveBreakpointGroupAction" menubarPath="breakpointGroupGroup" enablesFor="1+" id="org.eclipse.debug.ui.actions.DissolveBreakpointGroup">
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/AbstractBreakpointGroupAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/AbstractBreakpointGroupAction.java similarity index 96% rename from org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/AbstractBreakpointGroupAction.java rename to org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/AbstractBreakpointGroupAction.java index 50c2bd0..b19b4b5 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/AbstractBreakpointGroupAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/AbstractBreakpointGroupAction.java
@@ -8,7 +8,7 @@ * Contributors: * IBM Corporation - initial implementation *******************************************************************************/ -package org.eclipse.debug.internal.ui.actions; +package org.eclipse.debug.internal.ui.actions.breakpointGroups; import java.util.Iterator;
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/AbstractBreakpointsViewAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/AbstractBreakpointsViewAction.java similarity index 72% rename from org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/AbstractBreakpointsViewAction.java rename to org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/AbstractBreakpointsViewAction.java index 2dc18e4..00e908f 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/AbstractBreakpointsViewAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/AbstractBreakpointsViewAction.java
@@ -8,9 +8,11 @@ * Contributors: * IBM Corporation - initial implementation *******************************************************************************/ -package org.eclipse.debug.internal.ui.actions; +package org.eclipse.debug.internal.ui.actions.breakpointGroups; import org.eclipse.debug.internal.ui.views.breakpoints.BreakpointsView; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; import org.eclipse.ui.IViewActionDelegate; import org.eclipse.ui.IViewPart; @@ -27,5 +29,11 @@ public void init(IViewPart view) { fView= (BreakpointsView) view; } + + /* (non-Javadoc) + * @see org.eclipse.ui.IActionDelegate#selectionChanged(org.eclipse.jface.action.IAction, org.eclipse.jface.viewers.ISelection) + */ + public void selectionChanged(IAction action, ISelection selection) { + } }
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/AbstractSelectBreakpointsAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/AbstractSelectBreakpointsAction.java new file mode 100644 index 0000000..e96bab6 --- /dev/null +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/AbstractSelectBreakpointsAction.java
@@ -0,0 +1,83 @@ +/******************************************************************************* + * Copyright (c) 2004 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial implementation + *******************************************************************************/ +package org.eclipse.debug.internal.ui.actions.breakpointGroups; + +import java.util.ArrayList; +import java.util.HashSet; +import java.util.Iterator; +import java.util.List; +import java.util.Set; + +import org.eclipse.debug.core.DebugPlugin; +import org.eclipse.debug.core.model.IBreakpoint; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.jface.viewers.StructuredSelection; + +/** + * + */ +public abstract class AbstractSelectBreakpointsAction extends AbstractBreakpointsViewAction { + + private IBreakpoint[] fBreakpoints= new IBreakpoint[0]; + + /* (non-Javadoc) + * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction) + */ + public void run(IAction action) { + if (fBreakpoints.length < 1) { + return; + } + List elementsToSelect= chooseSimilarBreakpoints(); + if (elementsToSelect.size() > 0) { + IStructuredSelection selection= new StructuredSelection(elementsToSelect); + fView.getViewer().setSelection(selection, true); + } + } + + public abstract boolean breakpointsMatch(IBreakpoint breakpointOne, IBreakpoint breakpointTwo); + + /* (non-Javadoc) + * @see org.eclipse.debug.internal.ui.actions.breakpointGroups.AbstractSelectBreakpointsAction#getElementsToSelect(java.lang.Object[]) + */ + public List chooseSimilarBreakpoints() { + Set breakpointsToSelect= new HashSet(); + IBreakpoint[] breakpoints = DebugPlugin.getDefault().getBreakpointManager().getBreakpoints(); + for (int i = 0; i < fBreakpoints.length; i++) { + IBreakpoint selected = fBreakpoints[i]; + for (int j = 0; j < breakpoints.length; j++) { + IBreakpoint breakpoint = breakpoints[j]; + if (breakpointsMatch(selected, breakpoint)) { + breakpointsToSelect.add(breakpoint); + } + } + } + return new ArrayList(breakpointsToSelect); + } + + public void selectionChanged(IAction action, ISelection selection) { + List selectedBreakpoints= new ArrayList(); + Iterator iter = ((IStructuredSelection) selection).iterator(); + while (iter.hasNext()) { + Object element = iter.next(); + if (element instanceof IBreakpoint) { + selectedBreakpoints.add(element); + } else { + selectedBreakpoints.clear(); + break; + } + } + fBreakpoints= (IBreakpoint[]) selectedBreakpoints.toArray(new IBreakpoint[0]); + action.setEnabled(fBreakpoints.length > 0); + } + +}
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/AddBreakpointToGroupAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/AddBreakpointToGroupAction.java similarity index 98% rename from org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/AddBreakpointToGroupAction.java rename to org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/AddBreakpointToGroupAction.java index 158b622..c4d5a42 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/AddBreakpointToGroupAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/AddBreakpointToGroupAction.java
@@ -8,7 +8,7 @@ * Contributors: * IBM Corporation - initial implementation *******************************************************************************/ -package org.eclipse.debug.internal.ui.actions; +package org.eclipse.debug.internal.ui.actions.breakpointGroups; import java.util.Iterator;
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/ClearDefaultBreakpointGroupAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/ClearDefaultBreakpointGroupAction.java similarity index 94% rename from org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/ClearDefaultBreakpointGroupAction.java rename to org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/ClearDefaultBreakpointGroupAction.java index 047e92c..bfad32a 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/ClearDefaultBreakpointGroupAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/ClearDefaultBreakpointGroupAction.java
@@ -8,7 +8,7 @@ * Contributors: * IBM Corporation - initial implementation *******************************************************************************/ -package org.eclipse.debug.internal.ui.actions; +package org.eclipse.debug.internal.ui.actions.breakpointGroups; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection;
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/DissolveBreakpointGroupAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/DissolveBreakpointGroupAction.java similarity index 95% rename from org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/DissolveBreakpointGroupAction.java rename to org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/DissolveBreakpointGroupAction.java index 6e0fd37..1ebc9fa 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/DissolveBreakpointGroupAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/DissolveBreakpointGroupAction.java
@@ -8,7 +8,7 @@ * Contributors: * IBM Corporation - initial implementation *******************************************************************************/ -package org.eclipse.debug.internal.ui.actions; +package org.eclipse.debug.internal.ui.actions.breakpointGroups; import org.eclipse.core.runtime.CoreException; import org.eclipse.debug.core.model.IBreakpoint;
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/RemoveBreakpointFromGroupAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/RemoveBreakpointFromGroupAction.java new file mode 100644 index 0000000..5b97b16 --- /dev/null +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/RemoveBreakpointFromGroupAction.java
@@ -0,0 +1,57 @@ +/******************************************************************************* + * Copyright (c) 2004 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial implementation + *******************************************************************************/ +package org.eclipse.debug.internal.ui.actions.breakpointGroups; + +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + +import org.eclipse.core.runtime.CoreException; +import org.eclipse.debug.core.model.IBreakpoint; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.IStructuredSelection; + +/** + * + */ +public class RemoveBreakpointFromGroupAction extends AbstractBreakpointsViewAction { + + private IBreakpoint[] fBreakpoints= new IBreakpoint[0]; + + /* (non-Javadoc) + * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction) + */ + public void run(IAction action) { + for (int i = 0; i < fBreakpoints.length; i++) { + try { + fBreakpoints[i].setGroup(null); + } catch (CoreException e) { + } + } + } + + public void selectionChanged(IAction action, ISelection selection) { + List selectedBreakpoints= new ArrayList(); + Iterator iter = ((IStructuredSelection) selection).iterator(); + while (iter.hasNext()) { + Object element = iter.next(); + if (element instanceof IBreakpoint) { + selectedBreakpoints.add(element); + } else { + selectedBreakpoints.clear(); + break; + } + } + fBreakpoints= (IBreakpoint[]) selectedBreakpoints.toArray(new IBreakpoint[0]); + action.setEnabled(fBreakpoints.length > 0); + } +}
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/RenameBreakpointGroupAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/RenameBreakpointGroupAction.java similarity index 95% rename from org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/RenameBreakpointGroupAction.java rename to org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/RenameBreakpointGroupAction.java index 581f8f0..e5e9a99 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/RenameBreakpointGroupAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/RenameBreakpointGroupAction.java
@@ -8,7 +8,7 @@ * Contributors: * IBM Corporation - initial implementation *******************************************************************************/ -package org.eclipse.debug.internal.ui.actions; +package org.eclipse.debug.internal.ui.actions.breakpointGroups; import org.eclipse.core.runtime.CoreException; import org.eclipse.debug.core.model.IBreakpoint;
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/SelectBreakpointsByResourceAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/SelectBreakpointsByResourceAction.java new file mode 100644 index 0000000..32c3384 --- /dev/null +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/SelectBreakpointsByResourceAction.java
@@ -0,0 +1,33 @@ +/******************************************************************************* + * Copyright (c) 2004 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial implementation + *******************************************************************************/ +package org.eclipse.debug.internal.ui.actions.breakpointGroups; + +import org.eclipse.core.resources.IMarker; +import org.eclipse.debug.core.model.IBreakpoint; + +/** + * + */ +public class SelectBreakpointsByResourceAction extends AbstractSelectBreakpointsAction { + + /* (non-Javadoc) + * @see org.eclipse.debug.internal.ui.actions.breakpointGroups.AbstractSelectBreakpointsAction#breakpointsMatch(org.eclipse.debug.core.model.IBreakpoint, org.eclipse.debug.core.model.IBreakpoint) + */ + public boolean breakpointsMatch(IBreakpoint breakpointOne, IBreakpoint breakpointTwo) { + IMarker markerOne = breakpointOne.getMarker(); + IMarker markerTwo = breakpointTwo.getMarker(); + if (markerOne != null && markerTwo != null) { + return markerOne.getResource().equals(markerTwo.getResource()); + } + return false; + } + +}
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/SelectBreakpointsByTypeAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/SelectBreakpointsByTypeAction.java new file mode 100644 index 0000000..d76c2da --- /dev/null +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/SelectBreakpointsByTypeAction.java
@@ -0,0 +1,39 @@ +/******************************************************************************* + * Copyright (c) 2004 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Common Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/cpl-v10.html + * + * Contributors: + * IBM Corporation - initial implementation + *******************************************************************************/ +package org.eclipse.debug.internal.ui.actions.breakpointGroups; + +import org.eclipse.core.resources.IMarker; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.debug.core.model.IBreakpoint; + +/** + * + */ +public class SelectBreakpointsByTypeAction extends AbstractSelectBreakpointsAction { + + /* (non-Javadoc) + * @see org.eclipse.debug.internal.ui.actions.breakpointGroups.AbstractSelectBreakpointsAction#breakpointsMatch(org.eclipse.debug.core.model.IBreakpoint, org.eclipse.debug.core.model.IBreakpoint) + */ + public boolean breakpointsMatch(IBreakpoint breakpointOne, IBreakpoint breakpointTwo) { + IMarker markerOne = breakpointOne.getMarker(); + IMarker markerTwo = breakpointTwo.getMarker(); + if (markerOne != null && markerTwo != null) { + try { + return markerOne.getType().equals(markerTwo.getType()); + } catch (CoreException e1) { + } + } + return false; + } + + + +}
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/SetDefaultBreakpointGroupAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/SetDefaultBreakpointGroupAction.java similarity index 98% rename from org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/SetDefaultBreakpointGroupAction.java rename to org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/SetDefaultBreakpointGroupAction.java index 9797f6a..ebf6fde 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/SetDefaultBreakpointGroupAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpointGroups/SetDefaultBreakpointGroupAction.java
@@ -8,7 +8,7 @@ * Contributors: * IBM Corporation - initial implementation *******************************************************************************/ -package org.eclipse.debug.internal.ui.actions; +package org.eclipse.debug.internal.ui.actions.breakpointGroups; import java.util.ArrayList; import java.util.List;