From ab7dcca4590b9d7aa7ebaa6d213a199134283360 Mon Sep 17 00:00:00 2001 From: Mikhail Khodjaiants Date: Wed, 5 Apr 2006 19:27:15 +0000 Subject: [PATCH] Bug 135118: Modules view is not updated. --- debug/org.eclipse.cdt.debug.ui/ChangeLog | 12 +++++++++ .../ui/views/modules/ModuleProxyFactory.java | 2 +- .../modules/ModulesViewEventHandler.java | 27 ++++++++++++++++--- .../views/modules/ModulesViewModelProxy.java | 16 +++++++++-- 4 files changed, 50 insertions(+), 7 deletions(-) diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog index 26f853e0c39..0a3d33f041b 100644 --- a/debug/org.eclipse.cdt.debug.ui/ChangeLog +++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog @@ -1,3 +1,15 @@ +2006-04-05 Mikhail Khodjaiants + Bug 135118: Modules view is not updated. + * ModuleProxyFactory.java + * ModulesViewEventHandler.java + * ModulesViewModelProxy.java + +2006-04-05 Mikhail Khodjaiants + Corrected the shared library image selection. + * CDebugImages.java + * CDebugModelPresentation.java + - icons/ovr16/symbols_ovr.gif + 2006-04-04 Mikhail Khodjaiants See bug 134871: StackOverflowError using AsynchronousViewer. * ModulesView.java diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/modules/ModuleProxyFactory.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/modules/ModuleProxyFactory.java index eb519af6cba..e68c30ebe1c 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/modules/ModuleProxyFactory.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/modules/ModuleProxyFactory.java @@ -28,7 +28,7 @@ public class ModuleProxyFactory implements IModelProxyFactoryAdapter { String id = part.getSite().getId(); if ( ICDebugUIConstants.ID_MODULES_VIEW.equals( id ) ) { if ( element instanceof IModuleRetrieval ) { - return new ModulesViewModelProxy(); + return new ModulesViewModelProxy( (IModuleRetrieval)element ); } } } diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/modules/ModulesViewEventHandler.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/modules/ModulesViewEventHandler.java index 6e456b5f344..d08e49145f7 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/modules/ModulesViewEventHandler.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/modules/ModulesViewEventHandler.java @@ -11,7 +11,9 @@ package org.eclipse.cdt.debug.internal.ui.views.modules; import org.eclipse.cdt.debug.core.model.ICModule; +import org.eclipse.cdt.debug.core.model.IModuleRetrieval; import org.eclipse.debug.core.DebugEvent; +import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.model.IDebugTarget; import org.eclipse.debug.internal.ui.viewers.provisional.AbstractModelProxy; import org.eclipse.debug.internal.ui.viewers.provisional.IModelDelta; @@ -23,11 +25,14 @@ import org.eclipse.debug.internal.ui.viewers.update.DebugEventHandler; */ public class ModulesViewEventHandler extends DebugEventHandler { + private IModuleRetrieval fModuleRetrieval; + /** * Constructor for ModulesViewEventHandler. */ - public ModulesViewEventHandler( AbstractModelProxy proxy ) { + public ModulesViewEventHandler( AbstractModelProxy proxy, IModuleRetrieval moduleRetrieval ) { super( proxy ); + fModuleRetrieval = moduleRetrieval; } /* (non-Javadoc) @@ -46,7 +51,7 @@ public class ModulesViewEventHandler extends DebugEventHandler { */ protected void handleChange( DebugEvent event ) { if ( event.getSource() instanceof ICModule ) - fireDelta( new ModelDelta( event.getSource(), IModelDelta.STATE ) ); + fireDelta( (ICModule)event.getSource(), IModelDelta.STATE ); } /* (non-Javadoc) @@ -57,7 +62,7 @@ public class ModulesViewEventHandler extends DebugEventHandler { refreshRoot( event ); } else if ( event.getSource() instanceof ICModule ) { - fireDelta( new ModelDelta( event.getSource(), IModelDelta.ADDED ) ); + fireDelta( (ICModule)event.getSource(), IModelDelta.ADDED ); } } @@ -69,7 +74,21 @@ public class ModulesViewEventHandler extends DebugEventHandler { refreshRoot( event ); } else if ( event.getSource() instanceof ICModule ) { - fireDelta( new ModelDelta( event.getSource(), IModelDelta.REMOVED ) ); + fireDelta( (ICModule)event.getSource(), IModelDelta.REMOVED ); } } + + private void fireDelta( ICModule module, int flags ) { + ModelDelta root = new ModelDelta( fModuleRetrieval, IModelDelta.NO_CHANGE ); + root.addNode( module, flags ); + fireDelta( root ); + } + + /* (non-Javadoc) + * @see org.eclipse.debug.internal.ui.viewers.update.DebugEventHandler#dispose() + */ + public synchronized void dispose() { + super.dispose(); + fModuleRetrieval = null; + } } diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/modules/ModulesViewModelProxy.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/modules/ModulesViewModelProxy.java index 7fd8d411a67..5e6b7a6678f 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/modules/ModulesViewModelProxy.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/modules/ModulesViewModelProxy.java @@ -10,6 +10,7 @@ *******************************************************************************/ package org.eclipse.cdt.debug.internal.ui.views.modules; +import org.eclipse.cdt.debug.core.model.IModuleRetrieval; import org.eclipse.debug.internal.ui.viewers.update.DebugEventHandler; import org.eclipse.debug.internal.ui.viewers.update.EventHandlerModelProxy; @@ -18,17 +19,28 @@ import org.eclipse.debug.internal.ui.viewers.update.EventHandlerModelProxy; */ public class ModulesViewModelProxy extends EventHandlerModelProxy { + private IModuleRetrieval fModuleRetrieval; + /** * Constructor for ModulesViewModelProxy. */ - public ModulesViewModelProxy() { + public ModulesViewModelProxy( IModuleRetrieval moduleRetrieval ) { super(); + fModuleRetrieval = moduleRetrieval; } /* (non-Javadoc) * @see org.eclipse.debug.internal.ui.viewers.update.EventHandlerModelProxy#createEventHandlers() */ protected DebugEventHandler[] createEventHandlers() { - return new DebugEventHandler[] { new ModulesViewEventHandler( this ) }; + return new DebugEventHandler[] { new ModulesViewEventHandler( this, fModuleRetrieval ) }; + } + + /* (non-Javadoc) + * @see org.eclipse.debug.internal.ui.viewers.update.EventHandlerModelProxy#dispose() + */ + public synchronized void dispose() { + super.dispose(); + fModuleRetrieval = null; } }