mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-04-29 19:45:01 +02:00
Bug 451392 - [visualizer] improve selection synchronization from MV view
to debug view back to cloned MV view(s) Change-Id: I16abf3022a2b4fa0478624c1a9a6b4589cbdc311 Reviewed-on: https://git.eclipse.org/r/36434 Tested-by: Hudson CI Reviewed-by: William Swanson <WilliamRSwanson@gmail.com> Reviewed-by: Marc Dumais <marc.dumais@ericsson.com> Tested-by: Marc Dumais <marc.dumais@ericsson.com>
This commit is contained in:
parent
13b0270d5c
commit
2d511d95a6
2 changed files with 38 additions and 1 deletions
|
@ -19,6 +19,7 @@
|
||||||
* Xavier Raynaud (kalray) - Bug 431935
|
* Xavier Raynaud (kalray) - Bug 431935
|
||||||
* Marc Dumais (Ericsson) - Bug 441713
|
* Marc Dumais (Ericsson) - Bug 441713
|
||||||
* Marc Dumais (Ericsson) - Bug 442312
|
* Marc Dumais (Ericsson) - Bug 442312
|
||||||
|
* Marc Dumais (Ericsson) - Bug 451392
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.cdt.dsf.gdb.multicorevisualizer.internal.ui.view;
|
package org.eclipse.cdt.dsf.gdb.multicorevisualizer.internal.ui.view;
|
||||||
|
@ -86,6 +87,7 @@ import org.eclipse.jface.action.IToolBarManager;
|
||||||
import org.eclipse.jface.action.MenuManager;
|
import org.eclipse.jface.action.MenuManager;
|
||||||
import org.eclipse.jface.action.Separator;
|
import org.eclipse.jface.action.Separator;
|
||||||
import org.eclipse.jface.viewers.ISelection;
|
import org.eclipse.jface.viewers.ISelection;
|
||||||
|
import org.eclipse.jface.viewers.ISelectionChangedListener;
|
||||||
import org.eclipse.jface.viewers.SelectionChangedEvent;
|
import org.eclipse.jface.viewers.SelectionChangedEvent;
|
||||||
import org.eclipse.swt.graphics.Point;
|
import org.eclipse.swt.graphics.Point;
|
||||||
import org.eclipse.swt.widgets.Composite;
|
import org.eclipse.swt.widgets.Composite;
|
||||||
|
@ -128,6 +130,10 @@ public class MulticoreVisualizer extends GraphicCanvasVisualizer
|
||||||
/** Model changed listener, attached to Debug View. */
|
/** Model changed listener, attached to Debug View. */
|
||||||
protected IModelChangedListener m_modelChangedListener = null;
|
protected IModelChangedListener m_modelChangedListener = null;
|
||||||
|
|
||||||
|
/** Debug view selection changed listener, attached to Debug View. */
|
||||||
|
protected ISelectionChangedListener m_debugViewSelectionChangedListener = null;
|
||||||
|
|
||||||
|
|
||||||
// These two arrays are used to cache the CPU and core
|
// These two arrays are used to cache the CPU and core
|
||||||
// contexts, each time the model is recreated. This way
|
// contexts, each time the model is recreated. This way
|
||||||
// we can avoid asking the backend for the CPU/core
|
// we can avoid asking the backend for the CPU/core
|
||||||
|
@ -751,7 +757,19 @@ public class MulticoreVisualizer extends GraphicCanvasVisualizer
|
||||||
}});
|
}});
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
m_debugViewSelectionChangedListener =
|
||||||
|
new ISelectionChangedListener() {
|
||||||
|
@Override
|
||||||
|
public void selectionChanged(SelectionChangedEvent event) {
|
||||||
|
// Execute a refresh after any pending UI updates.
|
||||||
|
GUIUtils.exec( new Runnable() { @Override public void run() {
|
||||||
|
// Update canvas selection to match to dbg view selection
|
||||||
|
updateCanvasSelectionFromDebugView();
|
||||||
|
}});
|
||||||
|
}
|
||||||
|
};
|
||||||
m_debugViewer.addModelChangedListener(m_modelChangedListener);
|
m_debugViewer.addModelChangedListener(m_modelChangedListener);
|
||||||
|
m_debugViewer.addSelectionChangedListener(m_debugViewSelectionChangedListener);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -759,11 +777,13 @@ public class MulticoreVisualizer extends GraphicCanvasVisualizer
|
||||||
/** Removes debug viewer listener. */
|
/** Removes debug viewer listener. */
|
||||||
protected void removeDebugViewerListener()
|
protected void removeDebugViewerListener()
|
||||||
{
|
{
|
||||||
if (m_modelChangedListener != null) {
|
if (m_modelChangedListener != null && m_debugViewSelectionChangedListener != null) {
|
||||||
if (m_debugViewer != null) {
|
if (m_debugViewer != null) {
|
||||||
m_debugViewer.removeModelChangedListener(m_modelChangedListener);
|
m_debugViewer.removeModelChangedListener(m_modelChangedListener);
|
||||||
|
m_debugViewer.removeSelectionChangedListener(m_debugViewSelectionChangedListener);
|
||||||
m_debugViewer = null;
|
m_debugViewer = null;
|
||||||
m_modelChangedListener = null;
|
m_modelChangedListener = null;
|
||||||
|
m_debugViewSelectionChangedListener = null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1052,6 +1072,13 @@ public class MulticoreVisualizer extends GraphicCanvasVisualizer
|
||||||
updateCanvasSelectionInternal(SelectionUtils.getWorkbenchSelection());
|
updateCanvasSelectionInternal(SelectionUtils.getWorkbenchSelection());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Updates canvas selection from current debug view selection.
|
||||||
|
* Note: this method assumes it is called on the UI thread. */
|
||||||
|
protected void updateCanvasSelectionFromDebugView()
|
||||||
|
{
|
||||||
|
updateCanvasSelectionInternal(DebugViewUtils.getDebugViewSelection());
|
||||||
|
}
|
||||||
|
|
||||||
/** Updates canvas selection from current workbench selection.
|
/** Updates canvas selection from current workbench selection.
|
||||||
* Note: this method assumes it is called on the UI thread. */
|
* Note: this method assumes it is called on the UI thread. */
|
||||||
protected void updateCanvasSelectionInternal(ISelection selection)
|
protected void updateCanvasSelectionInternal(ISelection selection)
|
||||||
|
|
|
@ -7,6 +7,7 @@
|
||||||
*
|
*
|
||||||
* Contributors:
|
* Contributors:
|
||||||
* William R. Swanson (Tilera Corporation)
|
* William R. Swanson (Tilera Corporation)
|
||||||
|
* Marc Dumais (Ericsson) - Bug 451392
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.cdt.dsf.gdb.multicorevisualizer.internal.utils;
|
package org.eclipse.cdt.dsf.gdb.multicorevisualizer.internal.utils;
|
||||||
|
@ -76,4 +77,13 @@ public class DebugViewUtils
|
||||||
if (viewer == null || selection == null) return false;
|
if (viewer == null || selection == null) return false;
|
||||||
return viewer.trySelection(selection, true, true);
|
return viewer.trySelection(selection, true, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the debug view selection.
|
||||||
|
*/
|
||||||
|
public static ISelection getDebugViewSelection() {
|
||||||
|
TreeModelViewer viewer = DebugViewUtils.getDebugViewer();
|
||||||
|
if (viewer == null) return null;
|
||||||
|
return viewer.getSelection();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue