diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ActionsList.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ActionsList.java index d7345aae7ef..1f0ba3ea425 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ActionsList.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ActionsList.java @@ -107,6 +107,22 @@ public class ActionsList extends Composite { updateButtons(); } + /** + * Remove an action from the list + * + * @since 7.0 + */ + public void removeAction(IBreakpointAction action) { + TableItem[] currentItems = table.getItems(); + for (int i = 0; i < currentItems.length; i++) { + if (((IBreakpointAction) currentItems[i].getData()).equals(action)) { + table.remove(i); + break; + } + } + updateButtons(); + } + public String getActionNames() { StringBuffer result = new StringBuffer(); TableItem[] currentItems = table.getItems(); diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ActionsPropertyPage.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ActionsPropertyPage.java index 821bb1abe2a..5127d392874 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ActionsPropertyPage.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/ActionsPropertyPage.java @@ -85,6 +85,12 @@ public class ActionsPropertyPage extends PropertyPage { } }); + globalActionsList.getDeleteButton().addSelectionListener(new SelectionAdapter() { + public void widgetSelected(SelectionEvent e) { + HandleDeleteButton(); + } + }); + return container; } @@ -96,6 +102,22 @@ public class ActionsPropertyPage extends PropertyPage { } } + /** + * Clean up attached actions that were just deleted from the GlobalActionList + * + * @since 7.0 + */ + protected void HandleDeleteButton() { + + // First remove any attached action that was just deleted + IBreakpointAction[] selectedActions = globalActionsList.getSelectedActions(); + for (int i = 0; i < selectedActions.length; i++) { + actionsList.removeAction(selectedActions[i]); + } + // Now cleanup the global action list + globalActionsList.HandleDeleteButton(); + } + protected void performDefaults() { try { breakpointMarker.setAttribute(BreakpointActionManager.BREAKPOINT_ACTION_ATTRIBUTE, ""); //$NON-NLS-1$ diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/GlobalActionsList.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/GlobalActionsList.java index c80c66ac116..54498de9ccb 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/GlobalActionsList.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/ui/breakpointactions/GlobalActionsList.java @@ -117,11 +117,6 @@ public class GlobalActionsList extends Composite { editButton.setEnabled(hasActions); deleteButton = new Button(this, SWT.NONE); - deleteButton.addSelectionListener(new SelectionAdapter() { - public void widgetSelected(SelectionEvent e) { - HandleDeleteButton(); - } - }); deleteButton.setLayoutData(new GridData(GridData.HORIZONTAL_ALIGN_END)); deleteButton.setText(Messages.getString("GlobalActionsList.6")); //$NON-NLS-1$ deleteButton.setEnabled(hasActions); @@ -132,6 +127,13 @@ public class GlobalActionsList extends Composite { return attachButton; } + /** + * @since 7.0 + */ + public Button getDeleteButton() { + return deleteButton; + } + public IBreakpointAction[] getSelectedActions() { TableItem[] selectedItems = table.getSelection(); IBreakpointAction[] actionList = new IBreakpointAction[selectedItems.length];