mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-24 17:35:35 +02:00
Bug 373376: Multicore Visualizer should detect Debug View model changes
and update accordingly - dsf-gdb/org.eclipse.cdt.dsf.gdb.multicorevisualizer.ui/ - src/org/eclipse/cdt/dsf/gdb/multicorevisualizer/internal/ui/view/ - MulticoreVisualizer.java - attach a model changed listener to Debug View's tree view
This commit is contained in:
parent
2cfe871ac8
commit
406cabd6e7
1 changed files with 41 additions and 0 deletions
|
@ -53,6 +53,10 @@ import org.eclipse.debug.internal.ui.commands.actions.StepOverCommandAction;
|
|||
import org.eclipse.debug.internal.ui.commands.actions.StepReturnCommandAction;
|
||||
import org.eclipse.debug.internal.ui.commands.actions.SuspendCommandAction;
|
||||
import org.eclipse.debug.internal.ui.commands.actions.TerminateCommandAction;
|
||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelChangedListener;
|
||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelDelta;
|
||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxy;
|
||||
import org.eclipse.debug.internal.ui.viewers.model.provisional.TreeModelViewer;
|
||||
import org.eclipse.debug.internal.ui.views.launch.LaunchView;
|
||||
import org.eclipse.debug.ui.DebugUITools;
|
||||
import org.eclipse.jface.action.IMenuManager;
|
||||
|
@ -95,6 +99,9 @@ public class MulticoreVisualizer extends GraphicCanvasVisualizer
|
|||
/** Event listener class for DSF events */
|
||||
protected MulticoreVisualizerEventListener fEventListener;
|
||||
|
||||
/** Cached reference to Debug View viewer. */
|
||||
protected TreeModelViewer m_debugViewer = null;
|
||||
|
||||
|
||||
// --- UI members ---
|
||||
|
||||
|
@ -460,9 +467,40 @@ public class MulticoreVisualizer extends GraphicCanvasVisualizer
|
|||
result = 0;
|
||||
}
|
||||
|
||||
// While we're here, see if we need to attach debug view listener
|
||||
updateDebugViewListener();
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
/**
|
||||
* Adds listener to debug view's viewer, so we can detect
|
||||
* Debug View updates (which it doesn't bother to properly
|
||||
* communicate to the rest of the world, sigh).
|
||||
*/
|
||||
public void updateDebugViewListener()
|
||||
{
|
||||
// NOTE: debug viewer might not exist yet, so we
|
||||
// attach the listener at the first opportunity to do so.
|
||||
if (m_debugViewer == null) {
|
||||
m_debugViewer = DebugViewUtils.getDebugViewer();
|
||||
if (m_debugViewer != null) {
|
||||
m_debugViewer.addModelChangedListener(
|
||||
new IModelChangedListener() {
|
||||
@Override
|
||||
public void modelChanged(IModelDelta delta, IModelProxy proxy)
|
||||
{
|
||||
// Execute a refresh after any pending UI updates.
|
||||
GUIUtils.exec( new Runnable() { @Override public void run() {
|
||||
MulticoreVisualizer.this.refresh();
|
||||
}});
|
||||
}
|
||||
}
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Invoked by VisualizerViewer when workbench selection changes.
|
||||
*/
|
||||
|
@ -470,6 +508,9 @@ public class MulticoreVisualizer extends GraphicCanvasVisualizer
|
|||
public void workbenchSelectionChanged(ISelection selection)
|
||||
{
|
||||
refresh();
|
||||
|
||||
// Also check whether we need to attach debug view listener.
|
||||
updateDebugViewListener();
|
||||
}
|
||||
|
||||
/** Refreshes visualizer content from model. */
|
||||
|
|
Loading…
Add table
Reference in a new issue