From 35222002bd8ed6bd05db68917e86ee8a7a254627 Mon Sep 17 00:00:00 2001 From: Mikhail Khodjaiants Date: Mon, 31 Mar 2003 23:00:29 +0000 Subject: [PATCH] 'Auto-Refresh' and 'Refresh' actions for registers view. --- debug/org.eclipse.cdt.debug.ui/ChangeLog | 9 +++ .../internal/ui/ICDebugHelpContextIds.java | 2 + .../internal/ui/actions/RefreshAction.java | 2 +- .../ICDebugPreferenceConstants.java | 7 +++ .../RegistersViewPreferencePage.java | 8 +-- .../ui/views/registers/RegistersView.java | 56 +++++++++++++------ .../RegistersViewContentProvider.java | 5 +- 7 files changed, 65 insertions(+), 24 deletions(-) diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog index 18364482438..8dd3e9edd2c 100644 --- a/debug/org.eclipse.cdt.debug.ui/ChangeLog +++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog @@ -1,3 +1,12 @@ +2003-03-31 Mikhail Khodjaiants + 'Auto-Refresh' and 'Refresh' actions for registers view. + * ICDebugHelpContextIds.java + * RefreshAction.java + * ICDebugPreferenceConstants.java + * RegistersViewPreferencePage.java + * RegistersView.java + * RegistersViewContentProvider.java + 2003-03-28 Mikhail Khodjaiants Added the default format section for variables, registers and expressions to the debugger preference page. diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/ICDebugHelpContextIds.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/ICDebugHelpContextIds.java index 29903da7169..34b3c41cb72 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/ICDebugHelpContextIds.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/ICDebugHelpContextIds.java @@ -33,6 +33,8 @@ public interface ICDebugHelpContextIds public static final String REFRESH_SHARED_LIBRARIES_ACTION = PREFIX + "refresh_shared_libraries_action_context"; //$NON-NLS-1$ public static final String AUTO_REFRESH_SHARED_LIBRARIES_ACTION = PREFIX + "auto_refresh_shared_libraries_action_context"; //$NON-NLS-1$ public static final String LOAD_SYMBOLS_FOR_ALL = PREFIX + "load_symbols_for_all_action_context"; //$NON-NLS-1$ + public static final String REFRESH_REGISTERS_ACTION = PREFIX + "refresh_registers_action_context"; //$NON-NLS-1$ + public static final String AUTO_REFRESH_REGISTERS_ACTION = PREFIX + "auto_refresh_registers_action_context"; //$NON-NLS-1$ // Views public static final String REGISTERS_VIEW = PREFIX + "registers_view_context"; //$NON-NLS-1$ diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/RefreshAction.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/RefreshAction.java index a739736aca1..6211528f1ee 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/RefreshAction.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/RefreshAction.java @@ -64,7 +64,7 @@ public class RefreshAction extends Action implements IUpdate } catch( DebugException e ) { - CDebugUIPlugin.errorDialog( "Unable to refresh shared libraries.", e.getStatus() ); + CDebugUIPlugin.errorDialog( "Unable to refresh.", e.getStatus() ); } } } diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/preferences/ICDebugPreferenceConstants.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/preferences/ICDebugPreferenceConstants.java index 41a4e68aabf..db9d2949b6c 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/preferences/ICDebugPreferenceConstants.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/preferences/ICDebugPreferenceConstants.java @@ -117,4 +117,11 @@ public interface ICDebugPreferenceConstants * true the 'Auto-Refresh' option will be checked. */ public static final String PREF_SHARED_LIBRARIES_AUTO_REFRESH = ICDebugUIConstants.PLUGIN_ID + "SharedLibraries.auto_refresh"; //$NON-NLS-1$ + + /** + * Boolean preference controlling whether the registers view will be + * refreshed every time when the execution of program stops. When + * true the 'Auto-Refresh' option will be checked. + */ + public static final String PREF_REGISTERS_AUTO_REFRESH = ICDebugUIConstants.PLUGIN_ID + "Registers.auto_refresh"; //$NON-NLS-1$ } diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/preferences/RegistersViewPreferencePage.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/preferences/RegistersViewPreferencePage.java index e5352edaa66..d0623ab5b92 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/preferences/RegistersViewPreferencePage.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/preferences/RegistersViewPreferencePage.java @@ -56,11 +56,11 @@ public class RegistersViewPreferencePage extends FieldEditorPreferencePage */ protected void createFieldEditors() { - addField( new ColorFieldEditor( ICDebugPreferenceConstants.CHANGED_REGISTER_RGB, "&Changed register value color:", getFieldEditorParent() ) ); - + addField( new ColorFieldEditor( ICDebugPreferenceConstants.CHANGED_REGISTER_RGB, "&Changed register value color:", getFieldEditorParent() ) ); createSpacer( getFieldEditorParent(), 1 ); - addField( new BooleanFieldEditor( IDebugUIConstants.PREF_SHOW_TYPE_NAMES, "Show type &names by default", SWT.NONE, getFieldEditorParent() ) ); + createSpacer( getFieldEditorParent(), 1 ); + addField( new BooleanFieldEditor( ICDebugPreferenceConstants.PREF_REGISTERS_AUTO_REFRESH, "Auto-Refresh by default", getFieldEditorParent() ) ); } /* (non-Javadoc) @@ -73,10 +73,10 @@ public class RegistersViewPreferencePage extends FieldEditorPreferencePage public static void initDefaults( IPreferenceStore store ) { store.setDefault( IDebugUIConstants.PREF_SHOW_TYPE_NAMES, false ); - PreferenceConverter.setDefault( store, ICDebugPreferenceConstants.CHANGED_REGISTER_RGB, new RGB( 255, 0, 0 ) ); + store.setDefault( ICDebugPreferenceConstants.PREF_REGISTERS_AUTO_REFRESH, true ); } protected void createSpacer( Composite composite, int columnSpan ) diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/registers/RegistersView.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/registers/RegistersView.java index 760975a9bf0..ec3d6bf6a71 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/registers/RegistersView.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/registers/RegistersView.java @@ -6,8 +6,12 @@ package org.eclipse.cdt.debug.internal.ui.views.registers; +import org.eclipse.cdt.debug.core.ICRegisterManager; +import org.eclipse.cdt.debug.internal.ui.CDebugImages; import org.eclipse.cdt.debug.internal.ui.ICDebugHelpContextIds; +import org.eclipse.cdt.debug.internal.ui.actions.AutoRefreshAction; import org.eclipse.cdt.debug.internal.ui.actions.ChangeRegisterValueAction; +import org.eclipse.cdt.debug.internal.ui.actions.RefreshAction; import org.eclipse.cdt.debug.internal.ui.actions.ShowRegisterTypesAction; import org.eclipse.cdt.debug.internal.ui.preferences.ICDebugPreferenceConstants; import org.eclipse.cdt.debug.internal.ui.views.AbstractDebugEventHandler; @@ -36,6 +40,7 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.ui.ISelectionListener; import org.eclipse.ui.IWorkbenchActionConstants; import org.eclipse.ui.IWorkbenchPart; +import org.eclipse.ui.help.WorkbenchHelp; /** * @@ -91,6 +96,25 @@ public class RegistersView extends AbstractDebugEventHandlerView setAction( "ChangeRegisterValue", action ); //$NON-NLS-1$ setAction( DOUBLE_CLICK_ACTION, action ); + action = new AutoRefreshAction( getViewer(), "Auto-Refresh" ); + CDebugImages.setLocalImageDescriptors( action, CDebugImages.IMG_LCL_AUTO_REFRESH ); + action.setDescription( "Automatically Refresh Registers View" ); + action.setToolTipText( "Auto-Refresh" ); + WorkbenchHelp.setHelp( action, ICDebugHelpContextIds.AUTO_REFRESH_REGISTERS_ACTION ); + action.setEnabled( false ); + action.setChecked( CDebugUIPlugin.getDefault().getPreferenceStore().getBoolean( ICDebugPreferenceConstants.PREF_REGISTERS_AUTO_REFRESH ) ); + setAction( "AutoRefresh", action ); //$NON-NLS-1$ + add( (AutoRefreshAction)action ); + + action = new RefreshAction( getViewer(), "Refresh" ); + CDebugImages.setLocalImageDescriptors( action, CDebugImages.IMG_LCL_REFRESH ); + action.setDescription( "Refresh Registers View" ); + action.setToolTipText( "Refresh" ); + WorkbenchHelp.setHelp( action, ICDebugHelpContextIds.REFRESH_REGISTERS_ACTION ); + action.setEnabled( false ); + setAction( "Refresh", action ); //$NON-NLS-1$ + add( (RefreshAction)action ); + // set initial content here, as viewer has to be set setInitialContent(); } @@ -116,6 +140,9 @@ public class RegistersView extends AbstractDebugEventHandlerView menu.add( getAction( "ShowTypeNames" ) ); //$NON-NLS-1$ menu.add( new Separator( IWorkbenchActionConstants.MB_ADDITIONS ) ); + + menu.appendToGroup( ICDebugUIConstants.REFRESH_GROUP, getAction( "AutoRefresh" ) ); //$NON-NLS-1$ + menu.appendToGroup( ICDebugUIConstants.REFRESH_GROUP, getAction( "Refresh" ) ); //$NON-NLS-1$ } /* (non-Javadoc) @@ -124,6 +151,11 @@ public class RegistersView extends AbstractDebugEventHandlerView protected void configureToolBar( IToolBarManager tbm ) { tbm.add( new Separator( this.getClass().getName() ) ); + + tbm.add( new Separator( ICDebugUIConstants.REFRESH_GROUP ) ); + tbm.add( getAction( "AutoRefresh" ) ); //$NON-NLS-1$ + tbm.add( getAction( "Refresh" ) ); //$NON-NLS-1$ + tbm.add( new Separator( IDebugUIConstants.RENDER_GROUP ) ); tbm.add( getAction( "ShowTypeNames" ) ); //$NON-NLS-1$ } @@ -206,14 +238,10 @@ public class RegistersView extends AbstractDebugEventHandlerView protected void setViewerInput( IStructuredSelection ssel ) { - IStackFrame frame = null; - if ( ssel.size() == 1 ) + ICRegisterManager rm = null; + if ( ssel.size() == 1 && ssel.getFirstElement() instanceof IStackFrame ) { - Object input = ssel.getFirstElement(); - if ( input instanceof IStackFrame ) - { - frame = (IStackFrame)input; - } + rm = (ICRegisterManager)((IStackFrame)ssel.getFirstElement()).getDebugTarget().getAdapter( ICRegisterManager.class ); } if ( getViewer() == null ) @@ -222,25 +250,19 @@ public class RegistersView extends AbstractDebugEventHandlerView } Object current = getViewer().getInput(); - if ( current == null && frame == null ) + if ( current == null && rm == null ) { return; } - if ( current != null && current.equals( frame ) ) - { - return; - } - - if ( current != null && frame != null && - current instanceof IStackFrame && - ((IStackFrame)current).getDebugTarget().equals( frame.getDebugTarget() ) ) + if ( current != null && current.equals( rm ) ) { return; } showViewer(); - getViewer().setInput( frame ); + getViewer().setInput( rm ); + updateObjects(); } /** diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/registers/RegistersViewContentProvider.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/registers/RegistersViewContentProvider.java index d99e7f3d6b4..811f1d600b9 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/registers/RegistersViewContentProvider.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/registers/RegistersViewContentProvider.java @@ -7,6 +7,7 @@ package org.eclipse.cdt.debug.internal.ui.views.registers; import java.util.HashMap; +import org.eclipse.cdt.debug.core.ICRegisterManager; import org.eclipse.cdt.debug.internal.ui.views.IDebugExceptionHandler; import org.eclipse.cdt.debug.ui.CDebugUIPlugin; import org.eclipse.debug.core.DebugException; @@ -55,9 +56,9 @@ public class RegistersViewContentProvider implements ITreeContentProvider Object[] children= null; try { - if ( parent instanceof IStackFrame ) + if ( parent instanceof ICRegisterManager ) { - children = ((IStackFrame)parent).getRegisterGroups(); + children = ((ICRegisterManager)parent).getRegisterGroups(); } else if ( parent instanceof IRegisterGroup ) {