From f2d65ec3836b34f37e3fbcc2814b826dbebde75b Mon Sep 17 00:00:00 2001 From: Mikhail Khodjaiants Date: Wed, 19 Jan 2005 19:04:24 +0000 Subject: [PATCH] Fix for bug 83051: Add global variables deletes existing ones when new added. --- debug/org.eclipse.cdt.debug.core/ChangeLog | 6 ++++++ .../cdt/debug/core/ICGlobalVariableManager.java | 7 +++++++ .../internal/core/CGlobalVariableManager.java | 17 ++++++++++++++--- .../internal/core/model/CVariableFactory.java | 7 +++++++ debug/org.eclipse.cdt.debug.ui/ChangeLog | 4 ++++ .../ui/actions/AddGlobalsActionDelegate.java | 1 + 6 files changed, 39 insertions(+), 3 deletions(-) diff --git a/debug/org.eclipse.cdt.debug.core/ChangeLog b/debug/org.eclipse.cdt.debug.core/ChangeLog index 7f794aebe55..63e0bac01b9 100644 --- a/debug/org.eclipse.cdt.debug.core/ChangeLog +++ b/debug/org.eclipse.cdt.debug.core/ChangeLog @@ -1,3 +1,9 @@ +2005-01-19 Mikhail Khodjaiants + Fix for bug 83051: Add global variables deletes existing ones when new added. + * ICGlobalVariableManager.java + * CGlobalVariableManager.java + * CVariableFactory.java + 2005-01-18 Mikhail Khodjaiants Fix for bug 82858: NPE when adding global variable to variable view. * CDebugTarget.java diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICGlobalVariableManager.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICGlobalVariableManager.java index d26434470f8..e3fe8aedadf 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICGlobalVariableManager.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/core/ICGlobalVariableManager.java @@ -38,4 +38,11 @@ public interface ICGlobalVariableManager { * Removes all global variables from this manager. */ public void removeAllGlobals(); + + /** + * Returns the array of descriptors of global varibales added to this manager. + * + * @return the array of descriptors + */ + public IGlobalVariableDescriptor[] getDescriptors(); } diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CGlobalVariableManager.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CGlobalVariableManager.java index 0287b326e7a..7607a7175f2 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CGlobalVariableManager.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/CGlobalVariableManager.java @@ -250,9 +250,6 @@ public class CGlobalVariableManager implements ICGlobalVariableManager { throw new CoreException( s ); } - /** - * @return Returns the initialDescriptors. - */ private IGlobalVariableDescriptor[] getInitialDescriptors() { return fInitialDescriptors; } @@ -268,4 +265,18 @@ public class CGlobalVariableManager implements ICGlobalVariableManager { DebugPlugin.log( e ); } } + + /* (non-Javadoc) + * @see org.eclipse.cdt.debug.core.ICGlobalVariableManager#getDescriptors() + */ + public IGlobalVariableDescriptor[] getDescriptors() { + if ( fGlobals == null ) + return getInitialDescriptors(); + IGlobalVariableDescriptor[] result = new IGlobalVariableDescriptor[fGlobals.size()]; + Iterator it = fGlobals.iterator(); + for ( int i = 0; it.hasNext(); ++i ) { + result[i] = ((ICGlobalVariable)it.next()).getDescriptor(); + } + return result; + } } diff --git a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CVariableFactory.java b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CVariableFactory.java index ddd22121ee1..5cfbd4420bb 100644 --- a/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CVariableFactory.java +++ b/debug/org.eclipse.cdt.debug.core/src/org/eclipse/cdt/debug/internal/core/model/CVariableFactory.java @@ -48,6 +48,13 @@ public class CVariableFactory { public String toString() { return MessageFormat.format( "{0}::{1}", new String[] { getPath().toOSString(), getName() } ); //$NON-NLS-1$ } + + public boolean equals( Object obj ) { + if ( !(obj instanceof IGlobalVariableDescriptor) ) + return false; + IGlobalVariableDescriptor d = (IGlobalVariableDescriptor)obj; + return ( getName().compareTo( d.getName() ) == 0 && getPath().equals( d.getPath() ) ); + } }; } diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog index 1234dcff4ad..7c2cc8360ef 100644 --- a/debug/org.eclipse.cdt.debug.ui/ChangeLog +++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog @@ -1,3 +1,7 @@ +2005-01-19 Mikhail Khodjaiants + Fix for bug 83051: Add global variables deletes existing ones when new added. + * AddGlobalsActionDelegate.java + 2005-01-18 Mikhail Khodjaiants Fix for bug 82800: Make "Resume At Line" action retargettable. * plugin.xml diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/AddGlobalsActionDelegate.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/AddGlobalsActionDelegate.java index 8e7f78cfda1..6f07a633706 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/AddGlobalsActionDelegate.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/AddGlobalsActionDelegate.java @@ -263,6 +263,7 @@ public class AddGlobalsActionDelegate extends ActionDelegate implements IViewAct if ( info != null && gvm != null ) { fGlobals = info.getGlobals(); ListSelectionDialog dlg = createDialog(); + dlg.setInitialSelections( gvm.getDescriptors() ); if ( dlg.open() == Window.OK ) { List list = Arrays.asList( dlg.getResult() ); IGlobalVariableDescriptor[] selections = (IGlobalVariableDescriptor[])list.toArray( new IGlobalVariableDescriptor[list.size()] );