Lines 18-23
Link Here
|
18 |
import org.eclipse.cdt.dsf.debug.service.IProcesses.IThreadDMContext; |
18 |
import org.eclipse.cdt.dsf.debug.service.IProcesses.IThreadDMContext; |
19 |
import org.eclipse.cdt.dsf.debug.service.IProcesses.IThreadDMData; |
19 |
import org.eclipse.cdt.dsf.debug.service.IProcesses.IThreadDMData; |
20 |
import org.eclipse.cdt.dsf.debug.ui.viewmodel.launch.AbstractThreadVMNode; |
20 |
import org.eclipse.cdt.dsf.debug.ui.viewmodel.launch.AbstractThreadVMNode; |
|
|
21 |
import org.eclipse.cdt.dsf.debug.ui.viewmodel.launch.ExecutionContextLabelText; |
21 |
import org.eclipse.cdt.dsf.debug.ui.viewmodel.launch.ILaunchVMConstants; |
22 |
import org.eclipse.cdt.dsf.debug.ui.viewmodel.launch.ILaunchVMConstants; |
22 |
import org.eclipse.cdt.dsf.internal.ui.DsfUIPlugin; |
23 |
import org.eclipse.cdt.dsf.internal.ui.DsfUIPlugin; |
23 |
import org.eclipse.cdt.dsf.mi.service.IMIExecutionDMContext; |
24 |
import org.eclipse.cdt.dsf.mi.service.IMIExecutionDMContext; |
Lines 27-37
Link Here
|
27 |
import org.eclipse.cdt.dsf.ui.viewmodel.datamodel.AbstractDMVMProvider; |
28 |
import org.eclipse.cdt.dsf.ui.viewmodel.datamodel.AbstractDMVMProvider; |
28 |
import org.eclipse.cdt.dsf.ui.viewmodel.datamodel.IDMVMContext; |
29 |
import org.eclipse.cdt.dsf.ui.viewmodel.datamodel.IDMVMContext; |
29 |
import org.eclipse.cdt.dsf.ui.viewmodel.properties.IPropertiesUpdate; |
30 |
import org.eclipse.cdt.dsf.ui.viewmodel.properties.IPropertiesUpdate; |
|
|
31 |
import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelAttribute; |
32 |
import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelColumnInfo; |
33 |
import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelImage; |
34 |
import org.eclipse.cdt.dsf.ui.viewmodel.properties.LabelText; |
35 |
import org.eclipse.cdt.dsf.ui.viewmodel.properties.PropertiesBasedLabelProvider; |
30 |
import org.eclipse.cdt.dsf.ui.viewmodel.properties.VMDelegatingPropertiesUpdate; |
36 |
import org.eclipse.cdt.dsf.ui.viewmodel.properties.VMDelegatingPropertiesUpdate; |
|
|
37 |
import org.eclipse.core.runtime.IStatus; |
31 |
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementCompareRequest; |
38 |
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementCompareRequest; |
32 |
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementLabelProvider; |
39 |
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementLabelProvider; |
33 |
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider; |
40 |
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoProvider; |
34 |
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoRequest; |
41 |
import org.eclipse.debug.internal.ui.viewers.model.provisional.IElementMementoRequest; |
|
|
42 |
import org.eclipse.debug.ui.DebugUITools; |
43 |
import org.eclipse.debug.ui.IDebugUIConstants; |
35 |
import org.eclipse.ui.IMemento; |
44 |
import org.eclipse.ui.IMemento; |
36 |
|
45 |
|
37 |
|
46 |
|
Lines 49-54
Link Here
|
49 |
} |
58 |
} |
50 |
|
59 |
|
51 |
@Override |
60 |
@Override |
|
|
61 |
protected IElementLabelProvider createLabelProvider() { |
62 |
PropertiesBasedLabelProvider provider = new PropertiesBasedLabelProvider(); |
63 |
|
64 |
provider.setColumnInfo( |
65 |
PropertiesBasedLabelProvider.ID_COLUMN_NO_COLUMNS, |
66 |
new LabelColumnInfo(new LabelAttribute[] { |
67 |
// Text is made of the thread name followed by its state and state change reason. |
68 |
new GdbExecutionContextLabelText( |
69 |
MessagesForGdbLaunchVM.ThreadVMNode_No_columns__text_format, |
70 |
new String[] { |
71 |
ExecutionContextLabelText.PROP_NAME_KNOWN, |
72 |
PROP_NAME, |
73 |
ExecutionContextLabelText.PROP_ID_KNOWN, |
74 |
ILaunchVMConstants.PROP_ID, |
75 |
IGdbLaunchVMConstants.PROP_OS_ID_KNOWN, |
76 |
IGdbLaunchVMConstants.PROP_OS_ID, |
77 |
ILaunchVMConstants.PROP_IS_SUSPENDED, |
78 |
ExecutionContextLabelText.PROP_STATE_CHANGE_REASON_KNOWN, |
79 |
ILaunchVMConstants.PROP_STATE_CHANGE_REASON }), |
80 |
new LabelText(MessagesForGdbLaunchVM.ThreadVMNode_No_columns__Error__label, new String[0]), |
81 |
new LabelImage(DebugUITools.getImageDescriptor(IDebugUIConstants.IMG_OBJS_THREAD_RUNNING)) { |
82 |
{ setPropertyNames(new String[] { ILaunchVMConstants.PROP_IS_SUSPENDED }); } |
83 |
|
84 |
@Override |
85 |
public boolean isEnabled(IStatus status, java.util.Map<String,Object> properties) { |
86 |
return !((Boolean)properties.get(ILaunchVMConstants.PROP_IS_SUSPENDED)).booleanValue(); |
87 |
}; |
88 |
}, |
89 |
new LabelImage(DebugUITools.getImageDescriptor(IDebugUIConstants.IMG_OBJS_THREAD_SUSPENDED)), |
90 |
})); |
91 |
return provider; |
92 |
} |
93 |
|
94 |
@Override |
52 |
protected void updatePropertiesInSessionThread(IPropertiesUpdate[] updates) { |
95 |
protected void updatePropertiesInSessionThread(IPropertiesUpdate[] updates) { |
53 |
IPropertiesUpdate[] parentUpdates = new IPropertiesUpdate[updates.length]; |
96 |
IPropertiesUpdate[] parentUpdates = new IPropertiesUpdate[updates.length]; |
54 |
|
97 |
|
Lines 63-95
Link Here
|
63 |
// standard container properties. |
106 |
// standard container properties. |
64 |
parentUpdates[i] = new VMDelegatingPropertiesUpdate(updates[i], countringRm); |
107 |
parentUpdates[i] = new VMDelegatingPropertiesUpdate(updates[i], countringRm); |
65 |
count++; |
108 |
count++; |
66 |
|
109 |
|
|
|
110 |
IMIExecutionDMContext execDmc = findDmcInPath( |
111 |
update.getViewerInput(), update.getElementPath(), IMIExecutionDMContext.class); |
112 |
if (execDmc != null) { |
113 |
update.setProperty(ILaunchVMConstants.PROP_ID, Integer.toString(execDmc.getThreadId())); |
114 |
} |
115 |
|
67 |
IProcesses processService = getServicesTracker().getService(IProcesses.class); |
116 |
IProcesses processService = getServicesTracker().getService(IProcesses.class); |
68 |
final IThreadDMContext threadDmc = findDmcInPath(update.getViewerInput(), update.getElementPath(), IThreadDMContext.class); |
117 |
final IThreadDMContext threadDmc = findDmcInPath(update.getViewerInput(), update.getElementPath(), IThreadDMContext.class); |
69 |
|
118 |
|
70 |
if (processService == null || threadDmc == null) { |
119 |
if (update.getProperties().contains(PROP_NAME) || |
71 |
update.setStatus(DsfUIPlugin.newErrorStatus(IDsfStatusConstants.INVALID_HANDLE, "Service or handle invalid", null)); //$NON-NLS-1$ |
120 |
update.getProperties().contains(IGdbLaunchVMConstants.PROP_OS_ID)) |
72 |
} else { |
121 |
{ |
73 |
processService.getExecutionData( |
122 |
// |
74 |
threadDmc, |
123 |
if (processService == null || threadDmc == null) { |
75 |
new ViewerDataRequestMonitor<IThreadDMData>(getExecutor(), update) { |
124 |
update.setStatus(DsfUIPlugin.newErrorStatus(IDsfStatusConstants.INVALID_HANDLE, "Service or handle invalid", null)); //$NON-NLS-1$ |
76 |
@Override |
125 |
} else { |
77 |
public void handleCompleted() { |
126 |
processService.getExecutionData( |
78 |
if (isSuccess()) { |
127 |
threadDmc, |
79 |
fillThreadDataProperties(update, getData()); |
128 |
new ViewerDataRequestMonitor<IThreadDMData>(getExecutor(), update) { |
80 |
} else { |
129 |
@Override |
81 |
final IMIExecutionDMContext execDmc = findDmcInPath( |
130 |
public void handleCompleted() { |
82 |
update.getViewerInput(), update.getElementPath(), IMIExecutionDMContext.class); |
131 |
if (isSuccess()) { |
83 |
if (execDmc != null) { |
132 |
fillThreadDataProperties(update, getData()); |
84 |
update.setProperty(ILaunchVMConstants.PROP_ID, Integer.toString(execDmc.getThreadId())); |
133 |
} |
85 |
} else { |
134 |
update.setStatus(getStatus()); |
86 |
update.setStatus(getStatus()); |
135 |
countringRm.done(); |
87 |
} |
|
|
88 |
} |
136 |
} |
89 |
countringRm.done(); |
137 |
}); |
90 |
} |
138 |
count++; |
91 |
}); |
139 |
} |
92 |
count++; |
|
|
93 |
} |
140 |
} |
94 |
|
141 |
|
95 |
countringRm.setDoneCount(count); |
142 |
countringRm.setDoneCount(count); |
Lines 101-113
Link Here
|
101 |
if (data.getName() != null && data.getName().length() > 0) { |
148 |
if (data.getName() != null && data.getName().length() > 0) { |
102 |
update.setProperty(PROP_NAME, data.getName()); |
149 |
update.setProperty(PROP_NAME, data.getName()); |
103 |
} |
150 |
} |
104 |
|
151 |
update.setProperty(IGdbLaunchVMConstants.PROP_OS_ID, data.getId()); |
105 |
IMIExecutionDMContext execDmc = findDmcInPath( |
|
|
106 |
update.getViewerInput(), update.getElementPath(), IMIExecutionDMContext.class); |
107 |
if (execDmc != null) { |
108 |
update.setProperty(ILaunchVMConstants.PROP_ID, Integer.toString(execDmc.getThreadId())); |
109 |
} |
110 |
update.setProperty(ILaunchVMConstants.PROP_ID2, data.getId()); |
111 |
} |
152 |
} |
112 |
|
153 |
|
113 |
private String produceThreadElementName(String viewName, IMIExecutionDMContext execCtx) { |
154 |
private String produceThreadElementName(String viewName, IMIExecutionDMContext execCtx) { |