|
Lines 19-24
Link Here
|
| 19 |
import org.eclipse.core.runtime.Status; |
19 |
import org.eclipse.core.runtime.Status; |
| 20 |
import org.eclipse.debug.core.DebugPlugin; |
20 |
import org.eclipse.debug.core.DebugPlugin; |
| 21 |
import org.eclipse.jface.action.IAction; |
21 |
import org.eclipse.jface.action.IAction; |
|
|
22 |
import org.eclipse.jface.dialogs.ErrorDialog; |
| 22 |
import org.eclipse.jface.viewers.ISelection; |
23 |
import org.eclipse.jface.viewers.ISelection; |
| 23 |
import org.eclipse.jface.viewers.StructuredSelection; |
24 |
import org.eclipse.jface.viewers.StructuredSelection; |
| 24 |
import org.eclipse.jface.viewers.TreeSelection; |
25 |
import org.eclipse.jface.viewers.TreeSelection; |
|
Lines 33-43
Link Here
|
| 33 |
*/ |
34 |
*/ |
| 34 |
public class AddWatchpointOnVariableActionDelegate extends AddWatchpointActionDelegate implements IObjectActionDelegate { |
35 |
public class AddWatchpointOnVariableActionDelegate extends AddWatchpointActionDelegate implements IObjectActionDelegate { |
| 35 |
|
36 |
|
| 36 |
/** |
37 |
/** The target variable/expression */ |
| 37 |
* The target variable/expression |
|
|
| 38 |
*/ |
| 39 |
private ICWatchpointTarget fVar; |
38 |
private ICWatchpointTarget fVar; |
| 40 |
|
39 |
|
|
|
40 |
/** The view where fVar was selected */ |
| 41 |
private IWorkbenchPart fActivePart; |
| 42 |
|
| 41 |
/** |
43 |
/** |
| 42 |
* Constructor |
44 |
* Constructor |
| 43 |
*/ |
45 |
*/ |
|
Lines 49-55
Link Here
|
| 49 |
* @see org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.action.IAction, org.eclipse.ui.IWorkbenchPart) |
51 |
* @see org.eclipse.ui.IObjectActionDelegate#setActivePart(org.eclipse.jface.action.IAction, org.eclipse.ui.IWorkbenchPart) |
| 50 |
*/ |
52 |
*/ |
| 51 |
public void setActivePart(IAction action, IWorkbenchPart targetPart) { |
53 |
public void setActivePart(IAction action, IWorkbenchPart targetPart) { |
| 52 |
// Don't care. Our logic is agnostic to the view we're invoked from. |
54 |
fActivePart = targetPart; |
| 53 |
} |
55 |
} |
| 54 |
|
56 |
|
| 55 |
private static class GetSizeRequest extends CRequest implements ICWatchpointTarget.GetSizeRequest { |
57 |
private static class GetSizeRequest extends CRequest implements ICWatchpointTarget.GetSizeRequest { |
|
Lines 81-106
Link Here
|
| 81 |
// synchronously) |
83 |
// synchronously) |
| 82 |
final ICWatchpointTarget.GetSizeRequest request = new GetSizeRequest() { |
84 |
final ICWatchpointTarget.GetSizeRequest request = new GetSizeRequest() { |
| 83 |
public void done() { |
85 |
public void done() { |
| 84 |
// Now that we have the size, put up a dialog to create the watchpoint |
86 |
if (isSuccess()) { |
| 85 |
final int size = getSize(); |
87 |
// Now that we have the size, put up a dialog to create the watchpoint |
| 86 |
assert size > 0 : "unexpected variale/expression size"; //$NON-NLS-1$ |
88 |
final int size = getSize(); |
| 87 |
WorkbenchJob job = new WorkbenchJob("open watchpoint dialog") { //$NON-NLS-1$ |
89 |
assert size > 0 : "unexpected variale/expression size"; //$NON-NLS-1$ |
| 88 |
@Override |
90 |
WorkbenchJob job = new WorkbenchJob("open watchpoint dialog") { //$NON-NLS-1$ |
| 89 |
public IStatus runInUIThread(IProgressMonitor monitor) { |
91 |
@Override |
| 90 |
AddWatchpointDialog dlg = new AddWatchpointDialog(CDebugUIPlugin.getActiveWorkbenchShell(), |
92 |
public IStatus runInUIThread(IProgressMonitor monitor) { |
| 91 |
getMemorySpaceManagement()); |
93 |
AddWatchpointDialog dlg = new AddWatchpointDialog(CDebugUIPlugin.getActiveWorkbenchShell(), |
| 92 |
dlg.setExpression(expr); |
94 |
getMemorySpaceManagement()); |
| 93 |
dlg.initializeRange(false, Integer.toString(size)); |
95 |
dlg.setExpression(expr); |
| 94 |
if (dlg.open() == Window.OK) { |
96 |
dlg.initializeRange(false, Integer.toString(size)); |
| 95 |
addWatchpoint(dlg.getWriteAccess(), dlg.getReadAccess(), dlg.getExpression(), dlg.getMemorySpace(), dlg.getRange()); |
97 |
if (dlg.open() == Window.OK) { |
|
|
98 |
addWatchpoint(dlg.getWriteAccess(), dlg.getReadAccess(), dlg.getExpression(), dlg.getMemorySpace(), dlg.getRange()); |
| 99 |
} |
| 100 |
return Status.OK_STATUS; |
| 96 |
} |
101 |
} |
| 97 |
return Status.OK_STATUS; |
102 |
}; |
| 98 |
} |
103 |
job.setSystem(true); |
| 99 |
}; |
104 |
job.schedule(); |
| 100 |
job.setSystem(true); |
105 |
} |
| 101 |
job.schedule(); |
106 |
else { |
|
|
107 |
WorkbenchJob job = new WorkbenchJob("watchpoint error") { //$NON-NLS-1$ |
| 108 |
@Override |
| 109 |
public IStatus runInUIThread(IProgressMonitor monitor) { |
| 110 |
if (fActivePart != null) { |
| 111 |
ErrorDialog.openError( fActivePart.getSite().getWorkbenchWindow().getShell(), ActionMessages.getString( "AddWatchpointOnVariableActionDelegate.Error_Dlg_Title" ), ActionMessages.getString( "AddWatchpointOnVariableActionDelegate.No_Element_Size" ), getStatus() ); //$NON-NLS-1$ //$NON-NLS-2$ |
| 112 |
} |
| 113 |
return Status.OK_STATUS; |
| 114 |
} |
| 115 |
}; |
| 116 |
job.setSystem(true); |
| 117 |
job.schedule(); |
| 118 |
} |
| 102 |
} |
119 |
} |
| 103 |
|
|
|
| 104 |
}; |
120 |
}; |
| 105 |
fVar.getSize(request); |
121 |
fVar.getSize(request); |
| 106 |
} |
122 |
} |