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">
+