diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.properties b/debug/org.eclipse.cdt.debug.ui/plugin.properties
index 351647c4cc0..d788dd9dde7 100644
--- a/debug/org.eclipse.cdt.debug.ui/plugin.properties
+++ b/debug/org.eclipse.cdt.debug.ui/plugin.properties
@@ -42,6 +42,8 @@ ShowDebuggerConsoleAction.tooltip=Show Debugger Console On Target Selection
AddBreakpoint.label=Toggle &Breakpoint
EnableBreakpoint.label=&Toggle Breakpoint Enabled
BreakpointProperties.label=Breakpoint P&roperties...
+BreakpointPropertiesCommand.name=C/C++ Breakpoint Properties
+BreakpointPropertiesCommand.description=View and edit properties for a given C/C++ breakpoint
ManageFunctionBreakpointAction.label=Toggle Breakpoint
ManageFunctionBreakpointAction.tooltip=Toggle Function/Method Breakpoint
ToggleWatchpointAction.label=Toggle Watchpoint
diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.xml b/debug/org.eclipse.cdt.debug.ui/plugin.xml
index 8610a975c5f..2557f83f32e 100644
--- a/debug/org.eclipse.cdt.debug.ui/plugin.xml
+++ b/debug/org.eclipse.cdt.debug.ui/plugin.xml
@@ -485,31 +485,9 @@
id="org.eclipse.cdt.debug.ui.actions.popup.RunToLine">
-
-
-
-
-
+
+
@@ -1886,7 +1872,19 @@
-
+
+
+
+
+
+
+
1 ) {
- action.setEnabled(false);
- return;
- }
- Object element = ss.getFirstElement();
- if ( element instanceof ICBreakpoint ) {
- action.setEnabled(true);
- setBreakpoint( (ICBreakpoint)element );
- }
- }
- }
-
- protected IWorkbenchPart getActivePart() {
- return fPart;
- }
-
- protected ICBreakpoint getBreakpoint() {
- return fContext;
- }
-
- private ISelection getDebugContext() {
- return DebugUITools.getDebugContextManager().getContextService(fPart.getSite().getWorkbenchWindow()).getActiveContext();
- }
-
- protected void setBreakpoint( ICBreakpoint breakpoint ) {
- fContext = breakpoint;
- }
-}
diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/CBreakpointPropertiesHandler.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/CBreakpointPropertiesHandler.java
new file mode 100644
index 00000000000..dac08760189
--- /dev/null
+++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/CBreakpointPropertiesHandler.java
@@ -0,0 +1,92 @@
+/*******************************************************************************
+ * Copyright (c) 2000, 2010 QNX Software Systems and others.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * QNX Software Systems - Initial API and implementation
+ * Wind River Systems - Converted into a command
+ *******************************************************************************/
+package org.eclipse.cdt.debug.internal.ui.actions;
+
+import org.eclipse.cdt.debug.core.model.ICBreakpoint;
+import org.eclipse.cdt.debug.internal.ui.CBreakpointContext;
+import org.eclipse.core.commands.AbstractHandler;
+import org.eclipse.core.commands.ExecutionEvent;
+import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.core.expressions.IEvaluationContext;
+import org.eclipse.debug.core.DebugPlugin;
+import org.eclipse.debug.ui.DebugUITools;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionChangedListener;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.ui.ISources;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.dialogs.PropertyDialogAction;
+import org.eclipse.ui.handlers.HandlerUtil;
+
+/**
+ * Presents a custom properties dialog to configure the attibutes of a C/C++ breakpoint.
+ */
+public class CBreakpointPropertiesHandler extends AbstractHandler {
+
+ /**
+ * Constructor for CBreakpointPropertiesAction.
+ */
+ public CBreakpointPropertiesHandler() {
+ super();
+ }
+
+ public Object execute(ExecutionEvent event) throws ExecutionException {
+ IWorkbenchPart part = HandlerUtil.getActivePartChecked(event);
+ ICBreakpoint bp = getBreakpoint(event.getApplicationContext());
+
+ if (part != null && bp != null) {
+ ISelection debugContext = DebugUITools.getDebugContextManager().
+ getContextService(part.getSite().getWorkbenchWindow()).getActiveContext();
+
+ final CBreakpointContext bpContext = new CBreakpointContext(bp, debugContext);
+
+ PropertyDialogAction propertyAction = new PropertyDialogAction( part.getSite(), new ISelectionProvider() {
+
+ public void addSelectionChangedListener( ISelectionChangedListener listener ) {
+ }
+
+ public ISelection getSelection() {
+ return new StructuredSelection( bpContext );
+ }
+
+ public void removeSelectionChangedListener( ISelectionChangedListener listener ) {
+ }
+
+ public void setSelection( ISelection selection ) {
+ }
+ } );
+ propertyAction.run();
+ }
+ return null;
+ }
+
+ @Override
+ public void setEnabled(Object evaluationContext) {
+ setBaseEnabled( getBreakpoint(evaluationContext) != null );
+ }
+
+ private ICBreakpoint getBreakpoint(Object evaluationContext) {
+ if (evaluationContext instanceof IEvaluationContext) {
+ Object s = ((IEvaluationContext) evaluationContext).getVariable(ISources.ACTIVE_MENU_SELECTION_NAME);
+ if (s instanceof IStructuredSelection) {
+ IStructuredSelection ss = (IStructuredSelection)s;
+ if (!ss.isEmpty()) {
+ return (ICBreakpoint)DebugPlugin.getAdapter(ss.getFirstElement(), ICBreakpoint.class);
+ }
+ }
+ }
+ return null;
+ }
+}