Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 248606 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/cdt/debug/internal/core/CRequest.java (+12 lines)
Lines 56-59 Link Here
56
	public void setStatus(IStatus status) {
56
	public void setStatus(IStatus status) {
57
		fStatus= status;
57
		fStatus= status;
58
	}
58
	}
59
60
	/**
61
	 * Checks whether the request completed successfully or not. If the request
62
	 * monitor was canceled it is considered a failure, regardless of the
63
	 * status. If the status has a severity higher than INFO (i.e., WARNING,
64
	 * ERROR or CANCEL), it is considered a failure. Note that as per IRequest
65
	 * documentation, a null status object is equivalent to IStatu#OK.
66
	 */
67
    public boolean isSuccess() {
68
    	IStatus status = getStatus();
69
        return !isCanceled() && (status == null || status.getSeverity() <= IStatus.INFO); 
70
    }
59
}
71
}
(-)src/org/eclipse/cdt/debug/internal/ui/actions/ActionMessages.properties (+2 lines)
Lines 99-104 Link Here
99
AddWatchpointDialog.4=Read
99
AddWatchpointDialog.4=Read
100
AddWatchpointDialog.5=Memory space:
100
AddWatchpointDialog.5=Memory space:
101
AddWatchpointDialog.6=Units:
101
AddWatchpointDialog.6=Units:
102
AddWatchpointOnVariableActionDelegate.No_Element_Size=Failed to get variable/expression size
103
AddWatchpointOnVariableActionDelegate.Error_Dlg_Title=Error
102
ResumeAtLineAdapter.0=Empty editor
104
ResumeAtLineAdapter.0=Empty editor
103
ResumeAtLineAdapter.1=Missing document
105
ResumeAtLineAdapter.1=Missing document
104
ResumeAtLineAdapter.2=Empty editor
106
ResumeAtLineAdapter.2=Empty editor
(-)src/org/eclipse/cdt/debug/internal/ui/actions/AddWatchpointOnVariableActionDelegate.java (-22 / +38 lines)
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
	}
(-)src/org/eclipse/cdt/debug/internal/ui/disassembly/dsf/DisassemblyBackendCdi.java (-3 / +3 lines)
Lines 201-207 Link Here
201
				@Override
201
				@Override
202
				public void done() {
202
				public void done() {
203
					fCallback.setUpdatePending(false);
203
					fCallback.setUpdatePending(false);
204
					if (!isCanceled()) {
204
					if (isSuccess()) {
205
						BigInteger address= getAddress();
205
						BigInteger address= getAddress();
206
						if (targetFrame == 0) {
206
						if (targetFrame == 0) {
207
							fCallback.updatePC(address);
207
							fCallback.updatePC(address);
Lines 269-275 Link Here
269
		final IDisassemblyRetrieval.DisassemblyRequest disassemblyRequest= new DisassemblyRequest() {
269
		final IDisassemblyRetrieval.DisassemblyRequest disassemblyRequest= new DisassemblyRequest() {
270
			@Override
270
			@Override
271
			public void done() {
271
			public void done() {
272
				if (!isCanceled() && getDisassemblyBlock() != null) {
272
				if (isSuccess() && getDisassemblyBlock() != null) {
273
					insertDisassembly(startAddress, getDisassemblyBlock(), mixed, showSymbols, showDisassembly);
273
					insertDisassembly(startAddress, getDisassemblyBlock(), mixed, showSymbols, showDisassembly);
274
				} else {
274
				} else {
275
					final IStatus status= getStatus();
275
					final IStatus status= getStatus();
Lines 381-387 Link Here
381
		final IDisassemblyRetrieval.DisassemblyRequest disassemblyRequest= new DisassemblyRequest() {
381
		final IDisassemblyRetrieval.DisassemblyRequest disassemblyRequest= new DisassemblyRequest() {
382
			@Override
382
			@Override
383
			public void done() {
383
			public void done() {
384
				if (!isCanceled() && getDisassemblyBlock() != null) {
384
				if (isSuccess() && getDisassemblyBlock() != null) {
385
					insertDisassembly(null, getDisassemblyBlock(), mixed, showSymbols, showDisassembly);
385
					insertDisassembly(null, getDisassemblyBlock(), mixed, showSymbols, showDisassembly);
386
				} else {
386
				} else {
387
					final IStatus status= getStatus();
387
					final IStatus status= getStatus();
(-)src/org/eclipse/cdt/dsf/gdb/internal/ui/viewmodel/GdbVariableVMNode.java (+14 lines)
Lines 19-27 Link Here
19
import org.eclipse.cdt.dsf.debug.service.IExpressions.IExpressionDMContext;
19
import org.eclipse.cdt.dsf.debug.service.IExpressions.IExpressionDMContext;
20
import org.eclipse.cdt.dsf.debug.ui.viewmodel.variable.SyncVariableDataAccess;
20
import org.eclipse.cdt.dsf.debug.ui.viewmodel.variable.SyncVariableDataAccess;
21
import org.eclipse.cdt.dsf.debug.ui.viewmodel.variable.VariableVMNode;
21
import org.eclipse.cdt.dsf.debug.ui.viewmodel.variable.VariableVMNode;
22
import org.eclipse.cdt.dsf.gdb.internal.ui.GdbUIPlugin;
22
import org.eclipse.cdt.dsf.service.DsfSession;
23
import org.eclipse.cdt.dsf.service.DsfSession;
23
import org.eclipse.cdt.dsf.ui.viewmodel.datamodel.AbstractDMVMProvider;
24
import org.eclipse.cdt.dsf.ui.viewmodel.datamodel.AbstractDMVMProvider;
24
import org.eclipse.cdt.dsf.ui.viewmodel.datamodel.IDMVMContext;
25
import org.eclipse.cdt.dsf.ui.viewmodel.datamodel.IDMVMContext;
26
import org.eclipse.core.runtime.Status;
25
27
26
/**
28
/**
27
 * Specialization of DSF's VariableVMNode. See
29
 * Specialization of DSF's VariableVMNode. See
Lines 70-75 Link Here
70
                                	if (isSuccess()) {
72
                                	if (isSuccess()) {
71
                                		request.setSize(getData().getSize());
73
                                		request.setSize(getData().getSize());
72
                                	}
74
                                	}
75
                                	request.setStatus(getStatus());
73
                                    request.done();
76
                                    request.done();
74
                                }
77
                                }
75
	                    	};
78
	                    	};
Lines 77-88 Link Here
77
	                        expressionService.getExpressionAddressData(exprDmc, drm);
80
	                        expressionService.getExpressionAddressData(exprDmc, drm);
78
	                    }
81
	                    }
79
	        			else {
82
	        			else {
83
	        				request.setStatus(internalError());
80
	        				request.done();
84
	        				request.done();
81
	        			}
85
	        			}
82
	                }
86
	                }
83
	            });
87
	            });
84
			}
88
			}
85
			else {
89
			else {
90
				request.setStatus(internalError());
86
				request.done();
91
				request.done();
87
			}
92
			}
88
		}
93
		}
Lines 108-113 Link Here
108
	                                	assert getData().getSize() > 0;
113
	                                	assert getData().getSize() > 0;
109
	                                    request.setCanCreate(true);
114
	                                    request.setCanCreate(true);
110
                                	}
115
                                	}
116
                                	request.setStatus(getStatus());                                	
111
	                                request.done();
117
	                                request.done();
112
                                }
118
                                }
113
	                    	};
119
	                    	};
Lines 115-132 Link Here
115
	                        expressionService.getExpressionAddressData(exprDmc, drm);
121
	                        expressionService.getExpressionAddressData(exprDmc, drm);
116
	                    }
122
	                    }
117
	        			else {
123
	        			else {
124
	        				request.setStatus(internalError());
118
	        				request.done();
125
	        				request.done();
119
	        			}
126
	        			}
120
	                }
127
	                }
121
	            });
128
	            });
122
			}
129
			}
123
			else {
130
			else {
131
				request.setStatus(internalError());
124
				request.done();
132
				request.done();
125
			}
133
			}
126
		}
134
		}
127
	};
135
	};
128
	
136
	
129
	/**
137
	/**
138
	 * Utility method to create an IStatus object for an internal error 
139
	 */
140
	private static Status internalError() {
141
		return new Status(Status.ERROR, GdbUIPlugin.getUniqueIdentifier(), Messages.Internal_Error);
142
	}
143
	/**
130
	 * Constructor (passthru)
144
	 * Constructor (passthru)
131
	 */
145
	 */
132
	public GdbVariableVMNode(AbstractDMVMProvider provider, DsfSession session,
146
	public GdbVariableVMNode(AbstractDMVMProvider provider, DsfSession session,
(-)src/org/eclipse/cdt/dsf/gdb/internal/ui/viewmodel/Messages.java (+16 lines)
Added Link Here
1
package org.eclipse.cdt.dsf.gdb.internal.ui.viewmodel;
2
3
import org.eclipse.osgi.util.NLS;
4
5
6
public class Messages extends NLS {
7
	
8
    static {
9
        // initialize resource bundle
10
        NLS.initializeMessages(Messages.class.getName(), Messages.class);
11
    }
12
13
    private Messages() {}
14
15
    public static String Internal_Error;
16
}
(-)src/org/eclipse/cdt/dsf/gdb/internal/ui/viewmodel/messages.properties (+1 lines)
Added Link Here
1
Internal_Error=Internal Error

Return to bug 248606