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 )
{