diff options
author | Pawel Piech | 2012-02-23 06:23:34 +0000 |
---|---|---|
committer | Pawel Piech | 2012-02-23 06:26:19 +0000 |
commit | 6a916ea3e5ab181f86213dc0f860613862a6cdd5 (patch) | |
tree | ea2ee4c1d69b0ac678d86f2e37ed50e3e952aaad /dsf | |
parent | 75e0f1868f666a5beaf7ebc02f0f2f5c1d14b0b4 (diff) | |
download | org.eclipse.cdt-6a916ea3e5ab181f86213dc0f860613862a6cdd5.tar.gz org.eclipse.cdt-6a916ea3e5ab181f86213dc0f860613862a6cdd5.tar.xz org.eclipse.cdt-6a916ea3e5ab181f86213dc0f860613862a6cdd5.zip |
Bug 370560 - Run to line not show up in breadcrumb mode
Diffstat (limited to 'dsf')
-rw-r--r-- | dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/EvaluationContextManager.java | 176 |
1 files changed, 30 insertions, 146 deletions
diff --git a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/EvaluationContextManager.java b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/EvaluationContextManager.java index e95804e8780..b8163ea525b 100644 --- a/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/EvaluationContextManager.java +++ b/dsf/org.eclipse.cdt.dsf.ui/src/org/eclipse/cdt/dsf/debug/internal/ui/EvaluationContextManager.java @@ -12,22 +12,16 @@ *******************************************************************************/ package org.eclipse.cdt.dsf.debug.internal.ui; -import java.util.HashMap; -import java.util.Map; - import org.eclipse.cdt.dsf.ui.viewmodel.datamodel.IDMVMContext; -import org.eclipse.debug.ui.IDebugUIConstants; +import org.eclipse.debug.ui.DebugUITools; +import org.eclipse.debug.ui.contexts.DebugContextEvent; +import org.eclipse.debug.ui.contexts.IDebugContextListener; +import org.eclipse.debug.ui.contexts.IDebugContextService; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.swt.widgets.Display; -import org.eclipse.ui.IPageListener; -import org.eclipse.ui.IPartListener2; -import org.eclipse.ui.ISelectionListener; import org.eclipse.ui.IWindowListener; import org.eclipse.ui.IWorkbench; -import org.eclipse.ui.IWorkbenchPage; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.IWorkbenchPartReference; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.PlatformUI; @@ -39,7 +33,7 @@ import org.eclipse.ui.PlatformUI; * "Move To Line" and "Add Watch Expression" actions * visible in editors only if there is a running debug session. */ -public class EvaluationContextManager implements IWindowListener, IPageListener, ISelectionListener, IPartListener2 { +public class EvaluationContextManager implements IWindowListener, IDebugContextListener { // Avoid referencing the cdt.debug.ui plugin for this constnat so that the // cdt.debug.ui is not automatically activated @@ -51,8 +45,6 @@ public class EvaluationContextManager implements IWindowListener, IPageListener, protected static EvaluationContextManager fgManager; - private Map<IWorkbenchPage,IDMVMContext> fContextsByPage = null; - protected EvaluationContextManager() { } @@ -83,7 +75,9 @@ public class EvaluationContextManager implements IWindowListener, IPageListener, */ @Override public void windowActivated( IWorkbenchWindow window ) { - windowOpened( window ); + IDebugContextService service = DebugUITools.getDebugContextManager().getContextService(window); + service.addDebugContextListener(this); + selectionChanged( service.getActiveContext() ); } /* (non-Javadoc) @@ -91,6 +85,7 @@ public class EvaluationContextManager implements IWindowListener, IPageListener, */ @Override public void windowDeactivated( IWorkbenchWindow window ) { + DebugUITools.getDebugContextManager().getContextService(window).removeDebugContextListener(this); } /* (non-Javadoc) @@ -98,7 +93,6 @@ public class EvaluationContextManager implements IWindowListener, IPageListener, */ @Override public void windowClosed( IWorkbenchWindow window ) { - window.removePageListener( this ); } /* (non-Javadoc) @@ -106,149 +100,39 @@ public class EvaluationContextManager implements IWindowListener, IPageListener, */ @Override public void windowOpened( IWorkbenchWindow window ) { - IWorkbenchPage[] pages = window.getPages(); - for( int i = 0; i < pages.length; i++ ) { - window.addPageListener( this ); - pageOpened( pages[i] ); - } - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IPageListener#pageActivated(org.eclipse.ui.IWorkbenchPage) - */ - @Override - public void pageActivated( IWorkbenchPage page ) { - pageOpened( page ); } - /* (non-Javadoc) - * @see org.eclipse.ui.IPageListener#pageClosed(org.eclipse.ui.IWorkbenchPage) - */ @Override - public void pageClosed( IWorkbenchPage page ) { - page.removeSelectionListener( IDebugUIConstants.ID_DEBUG_VIEW, this ); - page.removePartListener( this ); + public void debugContextChanged(DebugContextEvent event) { + selectionChanged(event.getContext()); } - - /* (non-Javadoc) - * @see org.eclipse.ui.IPageListener#pageOpened(org.eclipse.ui.IWorkbenchPage) - */ - @Override - public void pageOpened( IWorkbenchPage page ) { - page.addSelectionListener( IDebugUIConstants.ID_DEBUG_VIEW, this ); - page.addPartListener( this ); - IWorkbenchPartReference ref = page.getActivePartReference(); - if ( ref != null ) { - partActivated( ref ); - } - } - - /* (non-Javadoc) - * @see org.eclipse.ui.ISelectionListener#selectionChanged(org.eclipse.ui.IWorkbenchPart, org.eclipse.jface.viewers.ISelection) - */ - @Override - public void selectionChanged( IWorkbenchPart part, ISelection selection ) { - IWorkbenchPage page = part.getSite().getPage(); - if ( selection instanceof IStructuredSelection ) { - IStructuredSelection ss = (IStructuredSelection)selection; - if ( ss.size() == 1 ) { - Object element = ss.getFirstElement(); - if ( element instanceof IDMVMContext ) { - setContext( page, (IDMVMContext)element ); - return; - } - } - } - // no context in the given view - removeContext( page ); - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IPartListener2#partActivated(org.eclipse.ui.IWorkbenchPartReference) - */ - @Override - public void partActivated( IWorkbenchPartReference partRef ) { - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IPartListener2#partBroughtToTop(org.eclipse.ui.IWorkbenchPartReference) - */ - @Override - public void partBroughtToTop( IWorkbenchPartReference partRef ) { - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IPartListener2#partClosed(org.eclipse.ui.IWorkbenchPartReference) - */ - @Override - public void partClosed( IWorkbenchPartReference partRef ) { - if ( IDebugUIConstants.ID_DEBUG_VIEW.equals( partRef.getId() ) ) { - removeContext( partRef.getPage() ); - } - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IPartListener2#partDeactivated(org.eclipse.ui.IWorkbenchPartReference) - */ - @Override - public void partDeactivated( IWorkbenchPartReference partRef ) { - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IPartListener2#partOpened(org.eclipse.ui.IWorkbenchPartReference) - */ - @Override - public void partOpened( IWorkbenchPartReference partRef ) { - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IPartListener2#partHidden(org.eclipse.ui.IWorkbenchPartReference) - */ - @Override - public void partHidden( IWorkbenchPartReference partRef ) { - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IPartListener2#partVisible(org.eclipse.ui.IWorkbenchPartReference) - */ - @Override - public void partVisible( IWorkbenchPartReference partRef ) { - } - - /* (non-Javadoc) - * @see org.eclipse.ui.IPartListener2#partInputChanged(org.eclipse.ui.IWorkbenchPartReference) - */ - @Override - public void partInputChanged( IWorkbenchPartReference partRef ) { + + private void selectionChanged(ISelection selection ) { + if ( selection instanceof IStructuredSelection ) { + IStructuredSelection ss = (IStructuredSelection)selection; + if ( ss.size() == 1 ) { + Object element = ss.getFirstElement(); + if ( element instanceof IDMVMContext ) { + setContext( (IDMVMContext)element ); + return; + } + } + } + // no context in the given view + removeContext(); } /** - * Sets the evaluation context for the given page, and notes that - * a valid execution context exists. - * - * @param page - * @param frame + * Sets the evaluation context. */ - private void setContext( IWorkbenchPage page, IDMVMContext target ) { - if ( fContextsByPage == null ) { - fContextsByPage = new HashMap<IWorkbenchPage,IDMVMContext>(); - } - fContextsByPage.put( page, target ); + private void setContext( IDMVMContext target ) { System.setProperty( DEBUGGER_ACTIVE, Boolean.TRUE.toString() ); } /** - * Removes an evaluation context for the given page, and determines if - * any valid execution context remain. - * - * @param page + * Removes an evaluation context. */ - private void removeContext( IWorkbenchPage page ) { - if ( fContextsByPage != null ) { - fContextsByPage.remove( page ); - if ( fContextsByPage.isEmpty() ) { - System.setProperty( DEBUGGER_ACTIVE, Boolean.FALSE.toString() ); - } - } + private void removeContext() { + System.setProperty( DEBUGGER_ACTIVE, Boolean.FALSE.toString() ); } } |