diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog index 5088135dbba..028a7b3412a 100644 --- a/debug/org.eclipse.cdt.debug.ui/ChangeLog +++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog @@ -1,3 +1,10 @@ +2004-02-03 Alain Magloire + + Derived from a patch by Chris Songer. + Accept multiple selection when doing setting the format variables. + + * src/org/eclipse/cdt/debug/internal/ui/actions/VariableFormatActionDelegate.java + 2004-01-30 Mikhail Khodjaiants Fix for bug 50967: Linux/SWT blows when double click on the register view. * ChangeRegisterValueAction.java diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/VariableFormatActionDelegate.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/VariableFormatActionDelegate.java index 2f0372e391d..99235f0902d 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/VariableFormatActionDelegate.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/VariableFormatActionDelegate.java @@ -5,6 +5,10 @@ */ package org.eclipse.cdt.debug.internal.ui.actions; +import java.util.ArrayList; +import java.util.Iterator; +import java.util.List; + import org.eclipse.cdt.debug.core.cdi.ICDIFormat; import org.eclipse.cdt.debug.core.model.ICVariable; import org.eclipse.cdt.debug.ui.CDebugUIPlugin; @@ -27,8 +31,8 @@ import org.eclipse.ui.IWorkbenchWindow; */ public class VariableFormatActionDelegate implements IObjectActionDelegate { - private int fFormat = ICDIFormat.DECIMAL; - private ICVariable fVariable = null; + private int fFormat = ICDIFormat.NATURAL; + private ICVariable[] fVariables = null; /** * Constructor for VariableFormatActionDelegate. @@ -50,7 +54,7 @@ public class VariableFormatActionDelegate implements IObjectActionDelegate */ public void run( IAction action ) { - if ( getVariable() != null ) + if ( fVariables != null && fVariables.length > 0 ) { final MultiStatus ms = new MultiStatus( CDebugUIPlugin.getUniqueIdentifier(), DebugException.REQUEST_FAILED, "", null ); @@ -61,7 +65,7 @@ public class VariableFormatActionDelegate implements IObjectActionDelegate { try { - doAction( getVariable() ); + doAction( fVariables ); } catch( DebugException e ) { @@ -92,41 +96,37 @@ public class VariableFormatActionDelegate implements IObjectActionDelegate { if ( selection instanceof IStructuredSelection ) { - Object element = ((IStructuredSelection)selection).getFirstElement(); - if ( element instanceof ICVariable ) + List list = new ArrayList(); + IStructuredSelection ssel = (IStructuredSelection)selection; + Iterator i = ssel.iterator(); + while ( i.hasNext() ) { - boolean enabled = enablesFor( (ICVariable)element ); - action.setEnabled( enabled ); - if ( enabled ) + Object o = i.next(); + if ( o instanceof ICVariable ) { - action.setChecked( ( ((ICVariable)element).getFormat() == fFormat ) ); - setVariable( (ICVariable)element ); - return; + ICVariable var = (ICVariable)o; + boolean enabled = var.isEditable(); + action.setEnabled( enabled ); + if ( enabled ) + { + action.setChecked( var.getFormat() == fFormat ); + list.add(o); + } } } + fVariables = new ICVariable[list.size()]; + list.toArray(fVariables); + } else { + action.setChecked( false ); + action.setEnabled( false ); } - action.setChecked( false ); - action.setEnabled( false ); - setVariable( null ); } - private boolean enablesFor( ICVariable var ) + protected void doAction( ICVariable[] vars ) throws DebugException { - return var.isEditable(); - } - - private void setVariable( ICVariable var ) - { - fVariable = var; - } - - protected ICVariable getVariable() - { - return fVariable; - } - - protected void doAction( ICVariable var ) throws DebugException - { - var.setFormat( fFormat ); + for (int i = 0; i < vars.length; i++ ) + { + vars[i].setFormat(fFormat); + } } }