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

View file

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