1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 14:42:11 +02:00

Bug 360588 - [breakpoints] Allow user to edit all its properties prior to creating the breakpoint

Added a default toggle target to add watchpoint action.
This commit is contained in:
Pawel Piech 2012-03-01 22:11:25 -08:00
parent d76485935e
commit bfdf65cacd
2 changed files with 34 additions and 44 deletions

View file

@ -39,7 +39,7 @@ public class AddWatchpointActionDelegate extends ActionDelegate implements IView
private IViewPart fView; private IViewPart fView;
private ISelection fSelection; private ISelection fSelection;
private ToggleBreakpointAdapter fDefaultToggleTarget = new ToggleBreakpointAdapter();
/* (non-Javadoc) /* (non-Javadoc)
* @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart) * @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart)
@ -68,14 +68,19 @@ public class AddWatchpointActionDelegate extends ActionDelegate implements IView
@Override @Override
public void run( IAction action ) { public void run( IAction action ) {
IToggleBreakpointsTarget toggleTarget = DebugUITools.getToggleBreakpointsTargetManager().getToggleBreakpointsTarget(fView, fSelection); IToggleBreakpointsTarget toggleTarget = DebugUITools.getToggleBreakpointsTargetManager().getToggleBreakpointsTarget(fView, fSelection);
IToggleBreakpointsTargetCExtension cToggleTarget = null;
if (toggleTarget instanceof IToggleBreakpointsTargetCExtension) { if (toggleTarget instanceof IToggleBreakpointsTargetCExtension) {
try { cToggleTarget = (IToggleBreakpointsTargetCExtension)toggleTarget;
((IToggleBreakpointsTargetCExtension)toggleTarget).createWatchpoingsInteractive(fView, fSelection); } else {
} catch (CoreException e) { cToggleTarget = fDefaultToggleTarget;
// TODO Auto-generated catch block
e.printStackTrace();
}
} }
try {
cToggleTarget.createWatchpoingsInteractive(fView, fSelection);
} catch (CoreException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
// AddWatchpointDialog dlg = new AddWatchpointDialog( CDebugUIPlugin.getActiveWorkbenchShell(), getMemorySpaceManagement() ); // AddWatchpointDialog dlg = new AddWatchpointDialog( CDebugUIPlugin.getActiveWorkbenchShell(), getMemorySpaceManagement() );
// if ( dlg.open() == Window.OK ) { // if ( dlg.open() == Window.OK ) {

View file

@ -12,6 +12,7 @@
*******************************************************************************/ *******************************************************************************/
package org.eclipse.cdt.debug.internal.ui.breakpoints; package org.eclipse.cdt.debug.internal.ui.breakpoints;
import org.eclipse.cdt.debug.core.CDIDebugModel;
import org.eclipse.cdt.debug.core.model.ICAddressBreakpoint; import org.eclipse.cdt.debug.core.model.ICAddressBreakpoint;
import org.eclipse.cdt.debug.core.model.ICBreakpoint; import org.eclipse.cdt.debug.core.model.ICBreakpoint;
import org.eclipse.cdt.debug.core.model.ICEventBreakpoint; import org.eclipse.cdt.debug.core.model.ICEventBreakpoint;
@ -23,10 +24,8 @@ import org.eclipse.cdt.debug.ui.breakpoints.CBreakpointUIContributionFactory;
import org.eclipse.cdt.debug.ui.breakpoints.ICBreakpointContext; import org.eclipse.cdt.debug.ui.breakpoints.ICBreakpointContext;
import org.eclipse.cdt.debug.ui.breakpoints.ICBreakpointsUIContribution; import org.eclipse.cdt.debug.ui.breakpoints.ICBreakpointsUIContribution;
import org.eclipse.cdt.debug.ui.preferences.ReadOnlyFieldEditor; import org.eclipse.cdt.debug.ui.preferences.ReadOnlyFieldEditor;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IMarker; import org.eclipse.core.resources.IMarker;
import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.debug.core.model.ILineBreakpoint; import org.eclipse.debug.core.model.ILineBreakpoint;
@ -272,23 +271,18 @@ public class CBreakpointPropertyPage extends FieldEditorPreferencePage implement
} }
else if ( breakpoint instanceof ICWatchpoint ) { else if ( breakpoint instanceof ICWatchpoint ) {
ICWatchpoint watchpoint = (ICWatchpoint)breakpoint; ICWatchpoint watchpoint = (ICWatchpoint)breakpoint;
String expression = ""; //$NON-NLS-1$ String expression = getPreferenceStore().getString(ICWatchpoint.EXPRESSION);
try {
expression = watchpoint.getExpression(); IMarker marker = breakpoint.getMarker();
} if (marker != null) {
catch( CoreException ce ) { IProject project = marker.getResource().getProject();
CDebugUIPlugin.log( ce ); if ( project != null ) {
} addField( createLabelEditor( getFieldEditorParent(), BreakpointsMessages.getString( "CBreakpointPropertyPage.10" ), project.getName() ) ); //$NON-NLS-1$
IProject project = breakpoint.getMarker().getResource().getProject(); }
if ( project != null ) { }
addField( createLabelEditor( getFieldEditorParent(), BreakpointsMessages.getString( "CBreakpointPropertyPage.10" ), project.getName() ) ); //$NON-NLS-1$ String filename = getPreferenceStore().getString(ICBreakpoint.SOURCE_HANDLE);
} if (!"".equals(filename)) { //$NON-NLS-1$
IResource resource = breakpoint.getMarker().getResource(); addField( createLabelEditor( getFieldEditorParent(), BreakpointsMessages.getString( "CBreakpointPropertyPage.20" ), filename ) ); //$NON-NLS-1$
if ( resource instanceof IFile ) {
String filename = resource.getLocation().toOSString();
if ( filename != null ) {
addField( createLabelEditor( getFieldEditorParent(), BreakpointsMessages.getString( "CBreakpointPropertyPage.20" ), filename ) ); //$NON-NLS-1$
}
} }
addField( createLabelEditor( getFieldEditorParent(), BreakpointsMessages.getString( "CBreakpointPropertyPage.14" ), expression ) ); //$NON-NLS-1$ addField( createLabelEditor( getFieldEditorParent(), BreakpointsMessages.getString( "CBreakpointPropertyPage.14" ), expression ) ); //$NON-NLS-1$
} }
@ -315,29 +309,20 @@ public class CBreakpointPropertyPage extends FieldEditorPreferencePage implement
if (breakpoint instanceof ICEventBreakpoint) if (breakpoint instanceof ICEventBreakpoint)
return BreakpointsMessages.getString("CBreakpointPropertyPage.21"); //$NON-NLS-1$ return BreakpointsMessages.getString("CBreakpointPropertyPage.21"); //$NON-NLS-1$
if (breakpoint instanceof ICWatchpoint) { if (breakpoint instanceof ICWatchpoint) {
ICWatchpoint watchpoint = (ICWatchpoint) breakpoint;
String type = ""; //$NON-NLS-1$ String type = ""; //$NON-NLS-1$
try { boolean isReadType = getPreferenceStore().getBoolean(ICWatchpoint.READ);
if (watchpoint.isReadType() && !watchpoint.isWriteType()) boolean isWriteType = getPreferenceStore().getBoolean(ICWatchpoint.WRITE);
type = BreakpointsMessages.getString("CBreakpointPropertyPage.11"); //$NON-NLS-1$ if (isReadType && !isWriteType)
else if (!watchpoint.isReadType() && watchpoint.isWriteType()) type = BreakpointsMessages.getString("CBreakpointPropertyPage.11"); //$NON-NLS-1$
type = BreakpointsMessages.getString("CBreakpointPropertyPage.12"); //$NON-NLS-1$ else if (!isReadType && isWriteType)
else type = BreakpointsMessages.getString("CBreakpointPropertyPage.12"); //$NON-NLS-1$
type = BreakpointsMessages.getString("CBreakpointPropertyPage.13"); //$NON-NLS-1$ else
type = BreakpointsMessages.getString("CBreakpointPropertyPage.13"); //$NON-NLS-1$
} catch (CoreException ce) {
CDebugUIPlugin.log(ce);
}
return type; return type;
} }
// default main label is the label of marker type for the breakpoint // default main label is the label of marker type for the breakpoint
String type = ""; //$NON-NLS-1$ return CDIDebugModel.calculateMarkerType(breakpoint);
try {
type = breakpoint.getMarker().getType(); // TODO: how to get label?
} catch (CoreException ce) {
CDebugUIPlugin.log(ce);
}
return type;
} }
protected void createLineNumberEditor( Composite parent ) { protected void createLineNumberEditor( Composite parent ) {
String title = BreakpointsMessages.getString( "CBreakpointPropertyPage.9" ); //$NON-NLS-1$ String title = BreakpointsMessages.getString( "CBreakpointPropertyPage.9" ); //$NON-NLS-1$