From d66940d5a33dd95282cbc47e090a6c802ba6a5e8 Mon Sep 17 00:00:00 2001 From: Mikhail Khodjaiants Date: Thu, 9 Jun 2005 20:21:16 +0000 Subject: [PATCH] Bug 94139: User-defined register groups. Support fo the "Restore Default Register Groups" action. --- debug/org.eclipse.cdt.debug.core/ChangeLog | 7 ++ .../cdt/debug/core/model/ICDebugTarget.java | 8 +++ .../debug/internal/core/CRegisterManager.java | 32 +++++++++- .../internal/core/model/CDebugTarget.java | 7 ++ debug/org.eclipse.cdt.debug.ui/ChangeLog | 7 ++ .../plugin.properties | 2 + debug/org.eclipse.cdt.debug.ui/plugin.xml | 14 ++++ ...reDefaultRegisterGroupsActionDelegate.java | 64 +++++++++++++++++++ 8 files changed, 139 insertions(+), 2 deletions(-) create mode 100644 debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/RestoreDefaultRegisterGroupsActionDelegate.java diff --git a/debug/org.eclipse.cdt.debug.core/ChangeLog b/debug/org.eclipse.cdt.debug.core/ChangeLog index 42399995b3b..6af66f616be 100644 --- a/debug/org.eclipse.cdt.debug.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.core/ChangeLog @@ -1,3 +1,10 @@ +2005-06-09 Mikhail Khodjaiants + Bug 94139: User-defined register groups. + Support fo the "Restore Default Register Groups" action. + * ICDebugTarget.java + * CRegisterManager.java + * CDebugTarget.java + 2005-06-07 Mikhail Khodjaiants Bug 94139: User-defined register groups. Support fo the "Edit Register Group" action. diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICDebugTarget.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICDebugTarget.java index 50c74ed150d..35888501293 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICDebugTarget.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/ICDebugTarget.java @@ -126,4 +126,12 @@ public interface ICDebugTarget extends IDebugTarget, * @since 3.0 */ public void modifyRegisterGroup( IPersistableRegisterGroup group, IRegisterDescriptor[] descriptors ); + + + /** + * Removes all user-defined register groups and restores the hardware groups. + * + * @since 3.0 + */ + public void restoreDefaultRegisterGroups(); } diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CRegisterManager.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CRegisterManager.java index 4333a00b210..fe7ac771d54 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CRegisterManager.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CRegisterManager.java @@ -80,7 +80,18 @@ public class CRegisterManager { } public void dispose() { - removeAllRegisterGroups(); + DebugPlugin.getDefault().asyncExec( + new Runnable() { + public void run() { + synchronized( fRegisterGroups ) { + Iterator it = fRegisterGroups.iterator(); + while( it.hasNext() ) { + ((CRegisterGroup)it.next()).dispose(); + } + fRegisterGroups.clear(); + } + } + } ); } public IRegisterDescriptor[] getAllRegisterDescriptors() throws DebugException { @@ -154,6 +165,23 @@ public class CRegisterManager { } ); } + public void restoreDefaults() { + DebugPlugin.getDefault().asyncExec( + new Runnable() { + public void run() { + synchronized( fRegisterGroups ) { + Iterator it = fRegisterGroups.iterator(); + while( it.hasNext() ) { + ((CRegisterGroup)it.next()).dispose(); + } + fRegisterGroups.clear(); + initializeDefaults(); + } + getDebugTarget().fireChangeEvent( DebugEvent.CONTENT ); + } + } ); + } + private void createRegisterGroups() { fRegisterGroups = Collections.synchronizedList( new ArrayList( 20 ) ); ILaunchConfiguration config = getDebugTarget().getLaunch().getLaunchConfiguration(); @@ -209,7 +237,7 @@ public class CRegisterManager { } } - private void initializeDefaults() { + protected void initializeDefaults() { String current = null; int startIndex = 0; for ( int i = 0; i < fRegisterDescriptors.length; ++i ) { diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java index 23fa2c93704..c03eb8839d7 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CDebugTarget.java @@ -1755,6 +1755,13 @@ public class CDebugTarget extends CDebugElement implements ICDebugTarget, ICDIEv getRegisterManager().modifyRegisterGroup( group, descriptors ); } + /* (non-Javadoc) + * @see org.eclipse.cdt.debug.core.model.ICDebugTarget#restoreDefaultRegisterGroups() + */ + public void restoreDefaultRegisterGroups() { + getRegisterManager().restoreDefaults(); + } + protected void skipBreakpoints( boolean enabled ) { getBreakpointManager().skipBreakpoints( enabled ); } diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog index dab1cdcdd9d..7b60097802c 100644 --- a/debug/org.eclipse.cdt.debug.ui/ChangeLog +++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog @@ -1,3 +1,10 @@ +2005-06-09 Mikhail Khodjaiants + Bug 94139: User-defined register groups. + Support fo the "Restore Default Register Groups" action. + + RestoreDefaultRegisterGroupsActionDelegate.java + * plugin.properties + * plugin.xml + 2005-06-07 Mikhail Khodjaiants New images for mapping source containers. * icons/obj16/mapentry_obj.gif diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.properties b/debug/org.eclipse.cdt.debug.ui/plugin.properties index 05d6f5809f8..33706161a29 100644 --- a/debug/org.eclipse.cdt.debug.ui/plugin.properties +++ b/debug/org.eclipse.cdt.debug.ui/plugin.properties @@ -126,3 +126,5 @@ RemoveRegisterGroupAction.label=Remove Register Group RemoveRegisterGroupAction.tooltip=Remove Register Group EditRegisterGroupAction.label=Edit Register Group EditRegisterGroupAction.tooltip=Edit Register Group +RestoredefaultRegisterGroupsAction.label=Restore Default Register Groups +RestoredefaultRegisterGroupsAction.tooltip=Restore Default Register Groups diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.xml b/debug/org.eclipse.cdt.debug.ui/plugin.xml index a18e4326b43..51c067ca944 100644 --- a/debug/org.eclipse.cdt.debug.ui/plugin.xml +++ b/debug/org.eclipse.cdt.debug.ui/plugin.xml @@ -650,6 +650,20 @@ class="org.eclipse.cdt.debug.core.model.ICVariable"> + + + + +