diff --git a/debug/org.eclipse.cdt.debug.core/ChangeLog b/debug/org.eclipse.cdt.debug.core/ChangeLog index 2711a6b0057..42399995b3b 100644 --- a/debug/org.eclipse.cdt.debug.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.core/ChangeLog @@ -1,3 +1,12 @@ +2005-06-07 Mikhail Khodjaiants + Bug 94139: User-defined register groups. + Support fo the "Edit Register Group" action. + * ICDebugTarget.java + * IPersistableRegisterGroup.java + * CRegisterManager.java + * CDebugTarget.java + * CRegisterGroup.java + 2005-06-07 Mikhail Khodjaiants The endianness flag is not chached. * CDebugTarget.java 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 b72334dcaea..50c74ed150d 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 @@ -106,7 +106,7 @@ public interface ICDebugTarget extends IDebugTarget, * * @since 3.0 */ - public void addUserDefinedRegisterGroup( String name, IRegisterDescriptor[] descriptors ); + public void addRegisterGroup( String name, IRegisterDescriptor[] descriptors ); /** * Removes the given register group from the target @@ -116,4 +116,14 @@ public interface ICDebugTarget extends IDebugTarget, * @since 3.0 */ public void removeRegisterGroups( IRegisterGroup[] groups ); + + /** + * Replace the given group's register descriptors by the specified descriptors. + * + * @param group a group to be modified + * @param descriptors a descriptor array to replace existing descriptors + * + * @since 3.0 + */ + public void modifyRegisterGroup( IPersistableRegisterGroup group, IRegisterDescriptor[] descriptors ); } diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IPersistableRegisterGroup.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IPersistableRegisterGroup.java index 1b3f6f3d4ab..fd3ae2b19d4 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IPersistableRegisterGroup.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/model/IPersistableRegisterGroup.java @@ -36,4 +36,18 @@ public interface IPersistableRegisterGroup extends IRegisterGroup { * @exception CoreException on failure to initialize */ public void initializeFromMemento( String memento ) throws CoreException; + + /** + * Returns the array of group's register descriptors. + * + * @return the array of group's register descriptors + */ + public IRegisterDescriptor[] getRegisterDescriptors(); + + /** + * Replaces the group register descriptors by the specified descriptors. + * + * @param the array of register descriptors + */ + public void setRegisterDescriptors( IRegisterDescriptor[] registerDescriptors ); } 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 1d8755fcd7d..4333a00b210 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 @@ -20,6 +20,7 @@ import org.eclipse.cdt.debug.core.ICDTLaunchConfigurationConstants; import org.eclipse.cdt.debug.core.cdi.CDIException; import org.eclipse.cdt.debug.core.cdi.model.ICDIRegisterDescriptor; import org.eclipse.cdt.debug.core.cdi.model.ICDIRegisterGroup; +import org.eclipse.cdt.debug.core.model.IPersistableRegisterGroup; import org.eclipse.cdt.debug.core.model.IRegisterDescriptor; import org.eclipse.cdt.debug.internal.core.model.CDebugTarget; import org.eclipse.cdt.debug.internal.core.model.CRegisterDescriptor; @@ -273,4 +274,15 @@ public class CRegisterManager { } return null; } + + public void modifyRegisterGroup( final IPersistableRegisterGroup group, final IRegisterDescriptor[] descriptors ) { + DebugPlugin.getDefault().asyncExec( + new Runnable() { + public void run() { + group.setRegisterDescriptors( descriptors ); + ((CRegisterGroup)group).fireChangeEvent( DebugEvent.CONTENT ); + } + } ); + + } } 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 55d42a72eab..23fa2c93704 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 @@ -72,6 +72,7 @@ import org.eclipse.cdt.debug.core.model.IDebuggerProcessSupport; import org.eclipse.cdt.debug.core.model.IDisassembly; import org.eclipse.cdt.debug.core.model.IExecFileInfo; import org.eclipse.cdt.debug.core.model.IGlobalVariableDescriptor; +import org.eclipse.cdt.debug.core.model.IPersistableRegisterGroup; import org.eclipse.cdt.debug.core.model.IRegisterDescriptor; import org.eclipse.cdt.debug.core.sourcelookup.CDirectorySourceContainer; import org.eclipse.cdt.debug.core.sourcelookup.ICSourceLocator; @@ -1736,7 +1737,7 @@ public class CDebugTarget extends CDebugElement implements ICDebugTarget, ICDIEv /* (non-Javadoc) * @see org.eclipse.cdt.debug.core.model.ICDebugTarget#addUserDefinedRegisterGroup(java.lang.String, org.eclipse.cdt.debug.core.model.IRegisterDescriptor[]) */ - public void addUserDefinedRegisterGroup( String name, IRegisterDescriptor[] descriptors ) { + public void addRegisterGroup( String name, IRegisterDescriptor[] descriptors ) { getRegisterManager().addRegisterGroup( name, descriptors ); } @@ -1747,6 +1748,13 @@ public class CDebugTarget extends CDebugElement implements ICDebugTarget, ICDIEv getRegisterManager().removeRegisterGroups( groups ); } + /* (non-Javadoc) + * @see org.eclipse.cdt.debug.core.model.ICDebugTarget#modifyRegisterGroup(org.eclipse.cdt.debug.core.model.IPersistableRegisterGroup, org.eclipse.cdt.debug.core.model.IRegisterDescriptor[]) + */ + public void modifyRegisterGroup( IPersistableRegisterGroup group, IRegisterDescriptor[] descriptors ) { + getRegisterManager().modifyRegisterGroup( group, descriptors ); + } + protected void skipBreakpoints( boolean enabled ) { getBreakpointManager().skipBreakpoints( enabled ); } diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CRegisterGroup.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CRegisterGroup.java index ae180a63838..9ab8e3aa798 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CRegisterGroup.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CRegisterGroup.java @@ -97,15 +97,7 @@ public class CRegisterGroup extends CDebugElement implements IPersistableRegiste public void dispose() { fDisposed = true; - if (fRegisters == null) { - return; - } - for ( int i = 0; i < fRegisters.length; ++i ) { - if ( fRegisters[i] != null ) { - ((CRegister)fRegisters[i]).dispose(); - } - } - fRegisters = null; + invalidate(); } public void targetSuspended() { @@ -216,7 +208,7 @@ public class CRegisterGroup extends CDebugElement implements IPersistableRegiste childNode = childNode.getNextSibling(); } setName( groupName ); - setRegisterDescriptors( (IRegisterDescriptor[])list.toArray( new IRegisterDescriptor[list.size()] ) ); + fRegisterDescriptors = (IRegisterDescriptor[])list.toArray( new IRegisterDescriptor[list.size()] ); setEnabled( enabled ); } @@ -229,11 +221,34 @@ public class CRegisterGroup extends CDebugElement implements IPersistableRegiste fName = name; } - private void setRegisterDescriptors( IRegisterDescriptor[] registerDescriptors ) { + /* (non-Javadoc) + * @see org.eclipse.cdt.debug.core.model.IPersistableRegisterGroup#setRegisterDescriptors(org.eclipse.cdt.debug.core.model.IRegisterDescriptor[]) + */ + public void setRegisterDescriptors( IRegisterDescriptor[] registerDescriptors ) { + invalidate(); fRegisterDescriptors = registerDescriptors; } + /* (non-Javadoc) + * @see org.eclipse.cdt.debug.core.model.IPersistableRegisterGroup#getRegisterDescriptors() + */ + public IRegisterDescriptor[] getRegisterDescriptors() { + return fRegisterDescriptors; + } + private CRegisterManager getRegisterManager() { return (CRegisterManager)getDebugTarget().getAdapter( CRegisterManager.class ); } + + private void invalidate() { + if (fRegisters == null) { + return; + } + for ( int i = 0; i < fRegisters.length; ++i ) { + if ( fRegisters[i] != null ) { + ((CRegister)fRegisters[i]).dispose(); + } + } + fRegisters = null; + } } \ No newline at end of file diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog index 779ac96af9a..d69d0f73e0b 100644 --- a/debug/org.eclipse.cdt.debug.ui/ChangeLog +++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog @@ -1,3 +1,13 @@ +2005-06-07 Mikhail Khodjaiants + Bug 94139: User-defined register groups. + Support fo the "Edit Register Group" action. + * AbstractViewActionDelegate.java + * ActionMessages.properties + * AddRegisterGroupActionDelegate.java + + EditRegisterGroupActionDelegate.java + * plugin.properties + * plugin.xml + 2005-05-31 Mikhail Khodjaiants Bug 84816: The modification of the signal properties should be done in the background. * SignalPropertyPage.java diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.properties b/debug/org.eclipse.cdt.debug.ui/plugin.properties index 7cd67138e74..05d6f5809f8 100644 --- a/debug/org.eclipse.cdt.debug.ui/plugin.properties +++ b/debug/org.eclipse.cdt.debug.ui/plugin.properties @@ -124,3 +124,5 @@ AddRegisterGroupAction.label=Add Register Group AddRegisterGroupAction.tooltip=Add Register Group RemoveRegisterGroupAction.label=Remove Register Group RemoveRegisterGroupAction.tooltip=Remove Register Group +EditRegisterGroupAction.label=Edit Register Group +EditRegisterGroupAction.tooltip=Edit Register Group diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.xml b/debug/org.eclipse.cdt.debug.ui/plugin.xml index bd370d068a0..a18e4326b43 100644 --- a/debug/org.eclipse.cdt.debug.ui/plugin.xml +++ b/debug/org.eclipse.cdt.debug.ui/plugin.xml @@ -729,7 +729,7 @@ + objectClass="org.eclipse.cdt.debug.core.model.IPersistableRegisterGroup"> +