1
0
Fork 0
mirror of https://github.com/eclipse-cdt/cdt synced 2025-04-23 14:42:11 +02:00

The Registers view has been contibuted and moved to the Eclipse platform.

This commit is contained in:
Mikhail Khodjaiants 2004-03-31 22:05:54 +00:00
parent fd4d49ba30
commit 4ad9d2c33e
11 changed files with 69 additions and 984 deletions

View file

@ -1,3 +1,13 @@
2004-03-31 Mikhail Khodjaiants
The Registers view has been contibuted and moved to the Eclipse platform.
* org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/registers/* - removed
* org.eclipse.cdt.debug.ui/icons/full/cview16/registers_view.gif - removed
* org.eclipse.cdt.debug.ui/icons/full/eview16/registers_view.gif - removed
* RegistersViewPreferencePage.java - removed
* CDebugUIPlugin.java
* plugin.properties
* plugin.xml
2004-03-23 Mikhail Khodjaiants
Fix for Bug 55777: I18N: Memory View is missing key for number_of_columns.
* CDebugUIPluginResources.properties

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 B

View file

@ -6,14 +6,12 @@
pluginName=C/C++ Development Tools Debugger UI
providerName=Eclipse.org
RegistersView.name=Registers
MemoryView.name=Memory
SharedLibrariesView.name=Shared Libraries
SignalsView.name=Signals
CDebuggerPage.name=C Debugger UI Page
MemoryPreferencePage.name=Memory View
RegistersPreferencePage.name=Registers View
CDebugPreferencePage.name=Debug
SharedLibrariesPreferencePage.name=Shared Libraries View
SourcePreferencePage.name=Source Code Locations

View file

@ -41,13 +41,6 @@
</extension>
<extension
point="org.eclipse.ui.views">
<view
name="%RegistersView.name"
icon="icons/full/cview16/registers_view.gif"
category="org.eclipse.debug.ui"
class="org.eclipse.cdt.debug.internal.ui.views.registers.RegistersView"
id="org.eclipse.cdt.debug.ui.RegistersView">
</view>
<view
name="%MemoryView.name"
icon="icons/full/cview16/memory_view.gif"
@ -76,36 +69,31 @@
targetID="org.eclipse.debug.ui.DebugPerspective">
<view
relative="org.eclipse.debug.ui.VariableView"
id="org.eclipse.cdt.debug.ui.RegistersView"
relationship="stack">
</view>
<viewShortcut
id="org.eclipse.cdt.debug.ui.RegistersView">
</viewShortcut>
<view
relative="org.eclipse.debug.ui.VariableView"
id="org.eclipse.cdt.debug.ui.MemoryView"
relationship="stack">
relationship="stack"
id="org.eclipse.cdt.debug.ui.MemoryView">
</view>
<viewShortcut
id="org.eclipse.cdt.debug.ui.MemoryView">
</viewShortcut>
<view
relative="org.eclipse.debug.ui.VariableView"
id="org.eclipse.cdt.debug.ui.SharedLibrariesView"
relationship="stack">
relationship="stack"
id="org.eclipse.cdt.debug.ui.SharedLibrariesView">
</view>
<viewShortcut
id="org.eclipse.cdt.debug.ui.SharedLibrariesView">
</viewShortcut>
<view
relative="org.eclipse.debug.ui.VariableView"
id="org.eclipse.cdt.debug.ui.SignalsView"
relationship="stack">
relationship="stack"
id="org.eclipse.cdt.debug.ui.SignalsView">
</view>
<viewShortcut
id="org.eclipse.cdt.debug.ui.SignalsView">
</viewShortcut>
<viewShortcut
id="org.eclipse.debug.ui.RegisterView">
</viewShortcut>
<actionSet
id="org.eclipse.cdt.debug.ui.debugActionSet">
</actionSet>
@ -316,8 +304,8 @@
</action>
<action
label="%ShowFullPathsAction.label"
icon="icons/full/clcl16/show_paths.gif"
style="toggle"
icon="icons/full/clcl16/show_paths.gif"
helpContextId="show_full_paths_action_context"
class="org.eclipse.cdt.debug.internal.ui.actions.ShowFullPathsAction"
menubarPath="renderGroup"
@ -331,8 +319,8 @@
</action>
<action
label="%SwitchToDisassemblyAction.label"
icon="icons/full/clcl16/disassembly.gif"
style="toggle"
icon="icons/full/clcl16/disassembly.gif"
helpContextId="switch_to_disassembly_action_context"
class="org.eclipse.cdt.debug.internal.ui.actions.SwitchToDisassemblyActionDelegate"
menubarPath="renderGroup"
@ -347,8 +335,8 @@
</action>
<action
label="%ShowDebuggerConsoleAction.label"
icon="icons/full/clcl16/debugger_console.gif"
style="toggle"
icon="icons/full/clcl16/debugger_console.gif"
helpContextId="show_debugger_console_action_context"
class="org.eclipse.cdt.debug.internal.ui.actions.DebuggerConsoleActionDelegate"
menubarPath="renderGroup"
@ -486,8 +474,8 @@
id="org.eclipse.cdt.debug.ui.breakpointview.popupMenu">
<action
label="%ShowFullPathsAction.label"
icon="icons/full/clcl16/show_paths.gif"
style="toggle"
icon="icons/full/clcl16/show_paths.gif"
helpContextId="show_full_paths_action_context"
class="org.eclipse.cdt.debug.internal.ui.actions.ShowFullPathsAction"
menubarPath="renderGroup"
@ -762,8 +750,8 @@
id="org.eclipse.cdt.debug.ui.SharedLibrariesViewPopupActions">
<action
label="%ShowFullPathsAction.label"
icon="icons/full/clcl16/show_paths.gif"
style="toggle"
icon="icons/full/clcl16/show_paths.gif"
helpContextId="show_full_paths_action_context"
class="org.eclipse.cdt.debug.internal.ui.actions.ShowFullPathsAction"
menubarPath="renderGroup"
@ -783,8 +771,8 @@
label="%LoadSymbolsAction.label"
icon="icons/full/clcl16/load_symbols_co.gif"
helpContextId="load_symbols_action_context"
tooltip="%LoadSymbolsAction.tooltip"
class="org.eclipse.cdt.debug.internal.ui.actions.LoadSymbolsActionDelegate"
tooltip="%LoadSymbolsAction.tooltip"
menubarPath="sharedLibrariesGroup"
enablesFor="1"
id="org.eclipse.cdt.debug.internal.ui.actions.LoadSymbolsActionDelegate">
@ -803,8 +791,8 @@
label="%SignalAction.label"
icon="icons/full/clcl16/signal_co.gif"
helpContextId="signal_action_context"
tooltip="%SignalAction.tooltip"
class="org.eclipse.cdt.debug.internal.ui.actions.SignalActionDelegate"
tooltip="%SignalAction.tooltip"
menubarPath="additions"
enablesFor="1"
id="org.eclipse.cdt.debug.internal.ui.actions.SignalActionDelegate">
@ -841,8 +829,8 @@
<action
label="%RestoreDefaultTypeAction.label"
helpContextId="restore_default_type_action_context"
class="org.eclipse.cdt.debug.internal.ui.actions.RestoreDefaultTypeActionDelegate"
tooltip="%RestoreDefaultTypeAction.tooltip"
class="org.eclipse.cdt.debug.internal.ui.actions.RestoreDefaultTypeActionDelegate"
menubarPath="additions"
enablesFor="1"
id="org.eclipse.cdt.debug.internal.ui.actions.RestoreDefaultTypeActionDelegate">
@ -857,8 +845,8 @@
label="%CastToTypeAction.label"
icon="icons/full/clcl16/casttotype_co.gif"
helpContextId="cast_to_type_action_context"
class="org.eclipse.cdt.debug.internal.ui.actions.CastToTypeActionDelegate"
tooltip="%CastToTypeAction.tooltip"
class="org.eclipse.cdt.debug.internal.ui.actions.CastToTypeActionDelegate"
menubarPath="additions"
enablesFor="1"
id="org.eclipse.cdt.debug.internal.ui.actions.CastToTypeActionDelegate">
@ -873,8 +861,8 @@
label="%CastToArrayAction.label"
icon="icons/full/clcl16/showasarray_co.gif"
helpContextId="cast_to_array_action_context"
class="org.eclipse.cdt.debug.internal.ui.actions.CastToArrayActionDelegate"
tooltip="%CastToArrayAction.tooltip"
class="org.eclipse.cdt.debug.internal.ui.actions.CastToArrayActionDelegate"
menubarPath="additions"
enablesFor="1"
id="org.eclipse.cdt.debug.internal.ui.actions.CastToArrayActionDelegate">
@ -893,8 +881,8 @@
label="%ManageFunctionBreakpointAction.label"
icon="icons/full/obj16/funbrkp_obj.gif"
helpContextId="manage_function_breakpoint_action_context"
class="org.eclipse.cdt.debug.internal.ui.actions.ManageFunctionBreakpointActionDelegate"
tooltip="%ManageFunctionBreakpointAction.tooltip"
class="org.eclipse.cdt.debug.internal.ui.actions.ManageFunctionBreakpointActionDelegate"
menubarPath="additions"
enablesFor="1"
id="org.eclipse.cdt.debug.internal.ui.actions.ManageFunctionBreakpointActionDelegate">
@ -913,8 +901,8 @@
label="%DisableVariablesAction.label"
icon="icons/full/clcl16/disabled_co.gif"
helpContextId="disable_variables_action_context"
class="org.eclipse.cdt.debug.internal.ui.actions.DisableVariablesActionDelegate"
tooltip="%DisableVariablesAction.tooltip"
class="org.eclipse.cdt.debug.internal.ui.actions.DisableVariablesActionDelegate"
menubarPath="variableGroup"
enablesFor="2+"
id="org.eclipse.cdt.debug.internal.ui.actions.DisableVariablesActionDelegate">
@ -926,8 +914,8 @@
label="%EnableVariablesAction.label"
icon="icons/full/clcl16/enabled_co.gif"
helpContextId="enable_variables_action_context"
class="org.eclipse.cdt.debug.internal.ui.actions.EnableVariablesActionDelegate"
tooltip="%EnableVariablesAction.tooltip"
class="org.eclipse.cdt.debug.internal.ui.actions.EnableVariablesActionDelegate"
menubarPath="variableGroup"
enablesFor="2+"
id="org.eclipse.cdt.debug.internal.ui.actions.EnableVariablesActionDelegate">
@ -950,8 +938,8 @@
disabledIcon="icons/full/dlcl16/restart.gif"
enablesFor="1"
icon="icons/full/elcl16/restart.gif"
label="%RestartAction.label"
helpContextId="restart_action_context"
label="%RestartAction.label"
tooltip="%RestartAction.tooltip">
<enablement>
<pluginState
@ -968,8 +956,8 @@
class="org.eclipse.cdt.debug.internal.ui.actions.ShowFullPathsAction"
disabledIcon="icons/full/dlcl16/show_paths.gif"
icon="icons/full/elcl16/show_parents.gif"
label="%ShowFullPathsAction.label"
helpContextId="show_full_paths_action_context"
label="%ShowFullPathsAction.label"
tooltip="%ShowFullPathsAction.tooltip">
<enablement>
<pluginState
@ -987,8 +975,8 @@
disabledIcon="icons/full/dlcl16/disassembly.gif"
enablesFor="1"
icon="icons/full/elcl16/disassembly.gif"
label="%SwitchToDisassemblyAction.label"
helpContextId="switch_to_disassembly_action_context"
label="%SwitchToDisassemblyAction.label"
tooltip="%SwitchToDisassemblyAction.tooltip">
<enablement>
<pluginState
@ -1006,8 +994,8 @@
disabledIcon="icons/full/dlcl16/debugger_console.gif"
enablesFor="1"
icon="icons/full/elcl16/debugger_console.gif"
label="%ShowDebuggerConsoleAction.label"
helpContextId="show_debugger_console_action_context"
label="%ShowDebuggerConsoleAction.label"
tooltip="%ShowDebuggerConsoleAction.tooltip">
<enablement>
<pluginState
@ -1028,8 +1016,8 @@
class="org.eclipse.cdt.debug.internal.ui.actions.ShowFullPathsAction"
disabledIcon="icons/full/dlcl16/show_paths.gif"
icon="icons/full/elcl16/show_parents.gif"
label="%ShowFullPathsAction.label"
helpContextId="show_full_paths_action_context"
label="%ShowFullPathsAction.label"
tooltip="%ShowFullPathsAction.tooltip">
<enablement>
<pluginState
@ -1050,8 +1038,8 @@
disabledIcon="icons/full/dlcl16/watch_globals.gif"
enablesFor="1"
icon="icons/full/elcl16/watch_globals.gif"
label="%AddGlobalsAction.label"
helpContextId="add_globals_action_context"
label="%AddGlobalsAction.label"
tooltip="%AddGlobalsAction.tooltip">
<enablement>
<pluginState
@ -1072,8 +1060,8 @@
class="org.eclipse.cdt.debug.internal.ui.actions.ShowFullPathsAction"
disabledIcon="icons/full/dlcl16/show_paths.gif"
icon="icons/full/elcl16/show_parents.gif"
label="%ShowFullPathsAction.label"
helpContextId="show_full_paths_action_context"
label="%ShowFullPathsAction.label"
tooltip="%ShowFullPathsAction.tooltip">
<enablement>
<pluginState
@ -1163,20 +1151,20 @@
<extension
point="org.eclipse.debug.core.statusHandlers">
<statusHandler
code="10000"
plugin="org.eclipse.cdt.debug.core"
code="10000"
class="org.eclipse.cdt.debug.internal.ui.QuestionStatusHandler"
id="org.eclipse.cdt.debug.internal.ui.QuestionStatusHandler">
</statusHandler>
<statusHandler
code="10001"
plugin="org.eclipse.cdt.debug.core"
code="10001"
class="org.eclipse.cdt.debug.internal.ui.InfoStatusHandler"
id="org.eclipse.cdt.debug.internal.ui.InfoStatusHandler">
</statusHandler>
<statusHandler
code="10002"
plugin="org.eclipse.cdt.debug.core"
code="10002"
class="org.eclipse.cdt.debug.internal.ui.ErrorStatusHandler"
id="org.eclipse.cdt.debug.internal.ui.ErrorStatusHandler">
</statusHandler>
@ -1239,16 +1227,16 @@
point="org.eclipse.ui.editors">
<editor
name="%DisassemblyEditor.name"
extensions="dasm"
icon="icons/full/obj16/disassembly_obj.gif"
extensions="dasm"
class="org.eclipse.cdt.debug.internal.ui.editors.DisassemblyEditor"
id="org.eclipse.cdt.debug.ui.DisassemblyEditor">
</editor>
<editor
name="%CDebugEditor.name"
icon="icons/full/obj16/filenotfound_obj.gif"
class="org.eclipse.cdt.debug.internal.ui.editors.CDebugEditor"
contributorClass="org.eclipse.cdt.internal.ui.editor.CEditorActionContributor"
class="org.eclipse.cdt.debug.internal.ui.editors.CDebugEditor"
id="org.eclipse.cdt.debug.ui.editor.CDebugEditor">
</editor>
</extension>
@ -1270,8 +1258,8 @@
<context
name="Debugging C/C++"
description="Debugging C/C++ Programs"
id="org.eclipse.cdt.debug.ui.debugging"
parentId="org.eclipse.debug.ui.debugging">
parentId="org.eclipse.debug.ui.debugging"
id="org.eclipse.cdt.debug.ui.debugging">
</context>
</extension>
<extension
@ -1281,5 +1269,28 @@
contextId="org.eclipse.cdt.debug.ui.debugging">
</modelContextBinding>
</extension>
<extension
point="org.eclipse.debug.ui.contextViewBindings">
<contextViewBinding
viewId="org.eclipse.cdt.debug.ui.MemoryView"
contextId="org.eclipse.cdt.debug.ui.debugging"
autoClose="false">
</contextViewBinding>
<contextViewBinding
viewId="org.eclipse.cdt.debug.ui.SharedLibrariesView"
contextId="org.eclipse.cdt.debug.ui.debugging"
autoClose="false">
</contextViewBinding>
<contextViewBinding
viewId="org.eclipse.cdt.debug.ui.SignalsView"
contextId="org.eclipse.cdt.debug.ui.debugging"
autoClose="false">
</contextViewBinding>
<contextViewBinding
viewId="org.eclipse.debug.ui.RegistersView"
contextId="org.eclipse.cdt.debug.ui.debugging"
autoClose="false">
</contextViewBinding>
</extension>
</plugin>

View file

@ -1,122 +0,0 @@
/*
*(c) Copyright QNX Software Systems Ltd. 2002.
* All Rights Reserved.
*
*/
package org.eclipse.cdt.debug.internal.ui.preferences;
import org.eclipse.cdt.debug.core.CDebugCorePlugin;
import org.eclipse.cdt.debug.core.ICDebugConstants;
import org.eclipse.cdt.debug.internal.ui.ICDebugHelpContextIds;
import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
import org.eclipse.cdt.utils.ui.controls.ControlFactory;
import org.eclipse.jface.preference.ColorFieldEditor;
import org.eclipse.jface.preference.FieldEditorPreferencePage;
import org.eclipse.jface.preference.IPreferenceStore;
import org.eclipse.jface.preference.PreferenceConverter;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Label;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchPreferencePage;
import org.eclipse.ui.help.WorkbenchHelp;
/**
*
* A page to set the preferences for the registers view
*
* @since Sep 16, 2002
*/
public class RegistersViewPreferencePage extends FieldEditorPreferencePage
implements IWorkbenchPreferencePage
{
private Button fAutoRefreshField = null;
/**
* Constructor for RegistersViewPreferencePage.
* @param style
*/
public RegistersViewPreferencePage()
{
super( GRID );
setDescription( CDebugUIPlugin.getResourceString("internal.ui.preferences.RegistersViewPreferencePage.Registers_View_Settings") ); //$NON-NLS-1$
setPreferenceStore( CDebugUIPlugin.getDefault().getPreferenceStore() );
}
/**
* @see PreferencePage#createControl(Composite)
*/
public void createControl( Composite parent )
{
super.createControl( parent );
WorkbenchHelp.setHelp( parent, ICDebugHelpContextIds.REGISTERS_PREFERENCE_PAGE );
}
/* (non-Javadoc)
* @see org.eclipse.jface.preference.FieldEditorPreferencePage#createFieldEditors()
*/
protected void createFieldEditors()
{
addField( new ColorFieldEditor( ICDebugPreferenceConstants.CHANGED_REGISTER_RGB, CDebugUIPlugin.getResourceString("internal.ui.preferences.RegistersViewPreferencePage.Changed_register_value_color"), getFieldEditorParent() ) ); //$NON-NLS-1$
createSpacer( getFieldEditorParent(), 2 );
fAutoRefreshField = ControlFactory.createCheckBox( getFieldEditorParent(), CDebugUIPlugin.getResourceString("internal.ui.preferences.RegistersViewPreferencePage.Auto-Refresh_by_default") ); //$NON-NLS-1$
fAutoRefreshField.setSelection( CDebugCorePlugin.getDefault().getPluginPreferences().getBoolean( ICDebugConstants.PREF_REGISTERS_AUTO_REFRESH ) );
}
/* (non-Javadoc)
* @see org.eclipse.ui.IWorkbenchPreferencePage#init(IWorkbench)
*/
public void init( IWorkbench workbench )
{
}
public static void initDefaults( IPreferenceStore store )
{
PreferenceConverter.setDefault( store,
ICDebugPreferenceConstants.CHANGED_REGISTER_RGB,
new RGB( 255, 0, 0 ) );
CDebugCorePlugin.getDefault().getPluginPreferences().setDefault( ICDebugConstants.PREF_REGISTERS_AUTO_REFRESH, true );
}
protected void createSpacer( Composite composite, int columnSpan )
{
Label label = new Label( composite, SWT.NONE );
GridData gd = new GridData();
gd.horizontalSpan = columnSpan;
label.setLayoutData( gd );
}
/**
* @see IPreferencePage#performOk()
*/
public boolean performOk()
{
boolean ok = super.performOk();
storeValues();
CDebugUIPlugin.getDefault().savePluginPreferences();
CDebugCorePlugin.getDefault().savePluginPreferences();
return ok;
}
/* (non-Javadoc)
* @see org.eclipse.jface.preference.PreferencePage#performDefaults()
*/
protected void performDefaults()
{
setDefaultValues();
super.performDefaults();
}
private void setDefaultValues()
{
fAutoRefreshField.setSelection( CDebugCorePlugin.getDefault().getPluginPreferences().getDefaultBoolean( ICDebugConstants.PREF_REGISTERS_AUTO_REFRESH ) );
}
private void storeValues()
{
CDebugCorePlugin.getDefault().getPluginPreferences().setValue( ICDebugConstants.PREF_REGISTERS_AUTO_REFRESH, fAutoRefreshField.getSelection() );
}
}

View file

@ -1,416 +0,0 @@
/*
*(c) Copyright QNX Software Systems Ltd. 2002.
* All Rights Reserved.
*
*/
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.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;
import org.eclipse.cdt.debug.internal.ui.views.AbstractDebugEventHandlerView;
import org.eclipse.cdt.debug.internal.ui.views.IDebugExceptionHandler;
import org.eclipse.cdt.debug.internal.ui.views.ViewerState;
import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
import org.eclipse.cdt.debug.ui.ICDebugUIConstants;
import org.eclipse.debug.core.DebugException;
import org.eclipse.debug.core.model.IRegister;
import org.eclipse.debug.core.model.IStackFrame;
import org.eclipse.debug.ui.DebugUITools;
import org.eclipse.debug.ui.IDebugModelPresentation;
import org.eclipse.debug.ui.IDebugUIConstants;
import org.eclipse.jface.action.IAction;
import org.eclipse.jface.action.IMenuManager;
import org.eclipse.jface.action.IToolBarManager;
import org.eclipse.jface.action.Separator;
import org.eclipse.jface.util.IPropertyChangeListener;
import org.eclipse.jface.util.PropertyChangeEvent;
import org.eclipse.jface.viewers.IBaseLabelProvider;
import org.eclipse.jface.viewers.IColorProvider;
import org.eclipse.jface.viewers.IContentProvider;
import org.eclipse.jface.viewers.ILabelProvider;
import org.eclipse.jface.viewers.ILabelProviderListener;
import org.eclipse.jface.viewers.ISelection;
import org.eclipse.jface.viewers.IStructuredSelection;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.swt.SWT;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.Image;
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;
/**
*
* This view shows registers and their values for a particular stack frame.
*
* @since Jul 23, 2002
*/
public class RegistersView extends AbstractDebugEventHandlerView
implements ISelectionListener,
IPropertyChangeListener,
IDebugExceptionHandler
{
/**
* A label provider that delegates to a debug model
* presentation and adds coloring to registers to
* reflect their changed state
*/
class VariablesViewLabelProvider implements ILabelProvider, IColorProvider
{
private IDebugModelPresentation fPresentation;
public VariablesViewLabelProvider( IDebugModelPresentation presentation )
{
fPresentation = presentation;
}
public IDebugModelPresentation getPresentation()
{
return fPresentation;
}
public Image getImage( Object element )
{
return fPresentation.getImage( element );
}
public String getText( Object element )
{
return fPresentation.getText( element );
}
public void addListener( ILabelProviderListener listener )
{
fPresentation.addListener( listener );
}
public void dispose()
{
fPresentation.dispose();
}
public boolean isLabelProperty( Object element, String property )
{
return fPresentation.isLabelProperty( element, property );
}
public void removeListener( ILabelProviderListener listener )
{
fPresentation.removeListener( listener );
}
public Color getForeground( Object element )
{
if ( element instanceof IRegister )
{
IRegister register = (IRegister)element;
try
{
if ( register.hasValueChanged() )
{
return CDebugUIPlugin.getPreferenceColor( ICDebugPreferenceConstants.CHANGED_REGISTER_RGB );
}
}
catch( DebugException e )
{
CDebugUIPlugin.log( e );
}
}
return null;
}
public Color getBackground( Object element )
{
return null;
}
}
/**
* The model presentation used as the label provider for the tree viewer.
*/
private IDebugModelPresentation fModelPresentation;
protected static final String VARIABLES_SELECT_ALL_ACTION = SELECT_ALL_ACTION + ".Registers"; //$NON-NLS-1$
/**
* A map of register managers to <code>ViewerState</code>s.
* Used to restore the expanded state of the registers view on
* re-selection of the register manager. The cache is cleared on
* a frame by frame basis when a thread/target is terminated.
*/
private HashMap fExpandedRegisters = new HashMap( 10 );
/* (non-Javadoc)
* @see org.eclipse.debug.ui.AbstractDebugView#createViewer(Composite)
*/
protected Viewer createViewer( Composite parent )
{
CDebugUIPlugin.getDefault().getPreferenceStore().addPropertyChangeListener( this );
// add tree viewer
final TreeViewer vv = new RegistersViewer( parent, SWT.MULTI | SWT.V_SCROLL | SWT.H_SCROLL );
vv.setContentProvider( createContentProvider() );
vv.setLabelProvider( new VariablesViewLabelProvider( getModelPresentation() ) );
vv.setUseHashlookup( true );
setAction( SELECT_ALL_ACTION, getAction( VARIABLES_SELECT_ALL_ACTION ) );
getViewSite().getActionBars().updateActionBars();
// listen to selection in debug view
getSite().getPage().addSelectionListener( IDebugUIConstants.ID_DEBUG_VIEW, this );
setEventHandler( createEventHandler( vv ) );
return vv;
}
/* (non-Javadoc)
* @see org.eclipse.debug.ui.AbstractDebugView#createActions()
*/
protected void createActions()
{
IAction action = new ShowRegisterTypesAction( this );
setAction( "ShowTypeNames", action ); //$NON-NLS-1$
action = new ChangeRegisterValueAction( getViewer() );
action.setEnabled( false );
setAction( "ChangeRegisterValue", action ); //$NON-NLS-1$
setAction( DOUBLE_CLICK_ACTION, action );
action = new AutoRefreshAction( getViewer(), CDebugUIPlugin.getResourceString("RegistersView.Auto_Refresh") ); //$NON-NLS-1$
CDebugImages.setLocalImageDescriptors( action, CDebugImages.IMG_LCL_AUTO_REFRESH );
action.setDescription( CDebugUIPlugin.getResourceString("RegistersView.Automatically_Refresh_Registers_View") ); //$NON-NLS-1$
action.setToolTipText( CDebugUIPlugin.getResourceString("RegistersView.Auto_Refresh") ); //$NON-NLS-1$
WorkbenchHelp.setHelp( action, ICDebugHelpContextIds.AUTO_REFRESH_REGISTERS_ACTION );
action.setEnabled( false );
setAction( "AutoRefresh", action ); //$NON-NLS-1$
add( (AutoRefreshAction)action );
action = new RefreshAction( getViewer(), CDebugUIPlugin.getResourceString("RegistersView.Refresh") ); //$NON-NLS-1$
CDebugImages.setLocalImageDescriptors( action, CDebugImages.IMG_LCL_REFRESH );
action.setDescription( CDebugUIPlugin.getResourceString("RegistersView.Refresh_Registers_View") ); //$NON-NLS-1$
action.setToolTipText( CDebugUIPlugin.getResourceString("RegistersView.Refresh") ); //$NON-NLS-1$
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();
}
/* (non-Javadoc)
* @see org.eclipse.debug.ui.AbstractDebugView#getHelpContextId()
*/
protected String getHelpContextId()
{
return ICDebugHelpContextIds.REGISTERS_VIEW;
}
/* (non-Javadoc)
* @see org.eclipse.debug.ui.AbstractDebugView#fillContextMenu(IMenuManager)
*/
protected void fillContextMenu( IMenuManager menu )
{
menu.add( new Separator( ICDebugUIConstants.EMPTY_REGISTER_GROUP ) );
menu.add( new Separator( ICDebugUIConstants.REGISTER_GROUP ) );
menu.add( new Separator( IDebugUIConstants.EMPTY_RENDER_GROUP ) );
menu.add( new Separator( IDebugUIConstants.RENDER_GROUP ) );
menu.add( new Separator( ICDebugUIConstants.EMPTY_REFRESH_GROUP ) );
menu.add( new Separator( ICDebugUIConstants.REFRESH_GROUP ) );
menu.add( new Separator( IWorkbenchActionConstants.MB_ADDITIONS ) );
menu.appendToGroup( ICDebugUIConstants.REGISTER_GROUP, getAction( "ChangeRegisterValue" ) ); //$NON-NLS-1$
// menu.appendToGroup( IDebugUIConstants.RENDER_GROUP, getAction( "ShowTypeNames" ) ); //$NON-NLS-1$
menu.appendToGroup( ICDebugUIConstants.REFRESH_GROUP, getAction( "AutoRefresh" ) ); //$NON-NLS-1$
menu.appendToGroup( ICDebugUIConstants.REFRESH_GROUP, getAction( "Refresh" ) ); //$NON-NLS-1$
}
/* (non-Javadoc)
* @see org.eclipse.debug.ui.AbstractDebugView#configureToolBar(IToolBarManager)
*/
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$
}
/* (non-Javadoc)
* @see org.eclipse.ui.ISelectionListener#selectionChanged(IWorkbenchPart, ISelection)
*/
public void selectionChanged( IWorkbenchPart part, ISelection selection )
{
if ( selection instanceof IStructuredSelection )
{
setViewerInput( (IStructuredSelection)selection );
}
}
/* (non-Javadoc)
* @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(PropertyChangeEvent)
*/
public void propertyChange( PropertyChangeEvent event )
{
String propertyName= event.getProperty();
if ( propertyName.equals( ICDebugPreferenceConstants.CHANGED_REGISTER_RGB ) )
{
getEventHandler().refresh();
}
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.internal.ui.views.IDebugExceptionHandler#handleException(DebugException)
*/
public void handleException( DebugException e )
{
showMessage( e.getMessage() );
}
/**
* Remove myself as a selection listener
* and preference change listener.
*
* @see IWorkbenchPart#dispose()
*/
public void dispose()
{
fModelPresentation.dispose();
getSite().getPage().removeSelectionListener( IDebugUIConstants.ID_DEBUG_VIEW, this );
CDebugUIPlugin.getDefault().getPreferenceStore().removePropertyChangeListener( this );
super.dispose();
}
/**
* Creates this view's content provider.
*
* @return a content provider
*/
protected IContentProvider createContentProvider()
{
RegistersViewContentProvider cp = new RegistersViewContentProvider();
cp.setExceptionHandler( this );
return cp;
}
protected IDebugModelPresentation getModelPresentation()
{
if ( fModelPresentation == null )
{
fModelPresentation = DebugUITools.newDebugModelPresentation();
}
return fModelPresentation;
}
/**
* Creates this view's event handler.
*
* @param viewer the viewer associated with this view
* @return an event handler
*/
protected AbstractDebugEventHandler createEventHandler( Viewer viewer )
{
return new RegistersViewEventHandler( this );
}
protected void setViewerInput( IStructuredSelection ssel )
{
ICRegisterManager rm = null;
if ( ssel.size() == 1 && ssel.getFirstElement() instanceof IStackFrame )
{
rm = (ICRegisterManager)((IStackFrame)ssel.getFirstElement()).getDebugTarget().getAdapter( ICRegisterManager.class );
}
if ( getViewer() == null )
{
return;
}
Object current = getViewer().getInput();
if ( current == null && rm == null )
{
return;
}
if ( current != null && current.equals( rm ) )
{
return;
}
if ( current != null )
{
// save state
ViewerState state = new ViewerState( getRegistersViewer() );
fExpandedRegisters.put( current, state );
}
showViewer();
getViewer().setInput( rm );
// restore state
if ( rm != null )
{
ViewerState state = (ViewerState)fExpandedRegisters.get( rm );
if ( state != null )
{
state.restoreState( getRegistersViewer() );
}
}
updateObjects();
}
/**
* Initializes the viewer input on creation
*/
protected void setInitialContent()
{
ISelection selection =
getSite().getPage().getSelection( IDebugUIConstants.ID_DEBUG_VIEW );
if ( selection instanceof IStructuredSelection && !selection.isEmpty() )
{
setViewerInput( (IStructuredSelection)selection );
}
}
protected RegistersViewer getRegistersViewer()
{
return (RegistersViewer)getViewer();
}
protected void clearExpandedRegisters( ICRegisterManager rm )
{
fExpandedRegisters.remove( rm );
}
/* (non-Javadoc)
* @see org.eclipse.core.runtime.IAdaptable#getAdapter(java.lang.Class)
*/
public Object getAdapter( Class adapter )
{
if ( IDebugModelPresentation.class.equals( adapter ) )
{
IBaseLabelProvider labelProvider = getStructuredViewer().getLabelProvider();
if ( labelProvider instanceof VariablesViewLabelProvider )
{
return ((VariablesViewLabelProvider)labelProvider).getPresentation();
}
}
return super.getAdapter( adapter );
}
}

View file

@ -1,214 +0,0 @@
/*
*(c) Copyright QNX Software Systems Ltd. 2002.
* All Rights Reserved.
*
*/
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;
import org.eclipse.debug.core.model.IRegisterGroup;
import org.eclipse.debug.core.model.IStackFrame;
import org.eclipse.debug.core.model.IValue;
import org.eclipse.debug.core.model.IVariable;
import org.eclipse.jface.viewers.ITreeContentProvider;
import org.eclipse.jface.viewers.Viewer;
/**
*
* Provide the contents for a registers viewer.
*
* @since Jul 23, 2002
*/
public class RegistersViewContentProvider implements ITreeContentProvider
{
/**
* A table that maps children to their parent element
* such that this content provider can walk back up the
* parent chain (since values do not know their
* parent).
* Map of <code>IVariable</code> (child) -> <code>IVariable</code> (parent).
*/
private HashMap fParentCache;
/**
* Handler for exceptions as content is retrieved
*/
private IDebugExceptionHandler fExceptionHandler = null;
/**
* Constructor for RegistersViewContentProvider.
*/
public RegistersViewContentProvider()
{
fParentCache = new HashMap( 10 );
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITreeContentProvider#getChildren(Object)
*/
public Object[] getChildren( Object parent )
{
Object[] children= null;
try
{
if ( parent instanceof ICRegisterManager )
{
children = ((ICRegisterManager)parent).getRegisterGroups();
}
else if ( parent instanceof IRegisterGroup )
{
children = ((IRegisterGroup)parent).getRegisters();
}
else if ( parent instanceof IVariable )
{
children = ((IVariable)parent).getValue().getVariables();
}
if ( children != null )
{
cache( parent, children );
return children;
}
}
catch( DebugException e )
{
if ( getExceptionHandler() != null )
{
getExceptionHandler().handleException( e );
}
else
{
CDebugUIPlugin.log( e );
}
}
return new Object[0];
}
/**
* Caches the given elememts as children of the given
* parent.
*
* @param parent parent element
* @param children children elements
*/
protected void cache( Object parent, Object[] children )
{
for ( int i = 0; i < children.length; i++ )
{
fParentCache.put( children[i], parent );
}
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITreeContentProvider#getParent(Object)
*/
public Object getParent( Object element )
{
return fParentCache.get( element );
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.ITreeContentProvider#hasChildren(Object)
*/
public boolean hasChildren( Object element )
{
try
{
if ( element instanceof IVariable )
{
return ((IVariable)element).getValue().hasVariables();
}
if ( element instanceof IValue )
{
return ((IValue)element).hasVariables();
}
if ( element instanceof IRegisterGroup )
{
return ((IRegisterGroup)element).hasRegisters();
}
if ( element instanceof IStackFrame )
{
return ((IStackFrame)element).hasRegisterGroups();
}
}
catch( DebugException e )
{
CDebugUIPlugin.log( e );
return false;
}
return false;
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IStructuredContentProvider#getElements(Object)
*/
public Object[] getElements( Object inputElement )
{
return getChildren( inputElement );
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IContentProvider#dispose()
*/
public void dispose()
{
fParentCache = null;
setExceptionHandler( null );
}
protected void clearCache()
{
if ( fParentCache != null )
{
fParentCache.clear();
}
}
/**
* Remove the cached parent for the given children
*
* @param children for which to remove cached parents
*/
public void removeCache( Object[] children )
{
if ( fParentCache != null )
{
for ( int i = 0; i < children.length; i++ )
{
fParentCache.remove( children[i] );
}
}
}
/* (non-Javadoc)
* @see org.eclipse.jface.viewers.IContentProvider#inputChanged(Viewer, Object, Object)
*/
public void inputChanged( Viewer viewer, Object oldInput, Object newInput )
{
clearCache();
}
/**
* Sets an exception handler for this content provider.
*
* @param handler debug exception handler or <code>null</code>
*/
protected void setExceptionHandler( IDebugExceptionHandler handler )
{
fExceptionHandler = handler;
}
/**
* Returns the exception handler for this content provider.
*
* @return debug exception handler or <code>null</code>
*/
protected IDebugExceptionHandler getExceptionHandler()
{
return fExceptionHandler;
}
}

View file

@ -1,83 +0,0 @@
/*
*(c) Copyright QNX Software Systems Ltd. 2002.
* All Rights Reserved.
*
*/
package org.eclipse.cdt.debug.internal.ui.views.registers;
import org.eclipse.cdt.debug.core.ICRegisterManager;
import org.eclipse.cdt.debug.internal.ui.views.AbstractDebugEventHandler;
import org.eclipse.debug.core.DebugEvent;
import org.eclipse.debug.core.model.IDebugTarget;
import org.eclipse.debug.core.model.IVariable;
import org.eclipse.debug.ui.AbstractDebugView;
/**
*
* Updates the registers view
*
* @since Jul 23, 2002
*/
public class RegistersViewEventHandler extends AbstractDebugEventHandler
{
/**
* Constructor for RegistersViewEventHandler.
* @param view
*/
public RegistersViewEventHandler( AbstractDebugView view )
{
super( view );
}
/* (non-Javadoc)
* @see org.eclipse.cdt.debug.internal.ui.views.AbstractDebugEventHandler#doHandleDebugEvents(DebugEvent[])
*/
protected void doHandleDebugEvents( DebugEvent[] events )
{
for( int i = 0; i < events.length; i++ )
{
DebugEvent event = events[i];
switch( event.getKind() )
{
case DebugEvent.TERMINATE :
if ( event.getSource() instanceof IDebugTarget &&
((IDebugTarget)event.getSource()).getAdapter( ICRegisterManager.class ) != null )
{
getRegistersView().clearExpandedRegisters( (ICRegisterManager)(((IDebugTarget)event.getSource()).getAdapter( ICRegisterManager.class )) );
}
break;
case DebugEvent.SUSPEND :
if ( event.getDetail() != DebugEvent.EVALUATION_IMPLICIT )
{
// Don't refresh everytime an implicit evaluation finishes
refresh();
// return since we've done a complete refresh
return;
}
break;
case DebugEvent.CHANGE :
if ( event.getDetail() == DebugEvent.STATE )
{
// only process variable state changes
if ( event.getSource() instanceof IVariable )
{
refresh( event.getSource() );
}
}
else
{
refresh();
// return since we've done a complete refresh
return;
}
break;
}
}
}
protected RegistersView getRegistersView()
{
return (RegistersView)getView();
}
}

View file

@ -1,95 +0,0 @@
/*
*(c) Copyright QNX Software Systems Ltd. 2002.
* All Rights Reserved.
*
*/
package org.eclipse.cdt.debug.internal.ui.views.registers;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Item;
import org.eclipse.swt.widgets.Tree;
import org.eclipse.swt.widgets.Widget;
/**
*
* Registers viewer. As the user steps through code, this
* viewer renders registers that have changed with a
* different foreground color thereby drawing attention
* to the values that have changed.
*
* @since Jul 23, 2002
*/
public class RegistersViewer extends TreeViewer
{
private Item fNewItem;
/**
* Constructor for RegistersViewer.
* @param parent
*/
public RegistersViewer( Composite parent )
{
super( parent );
}
/**
* Constructor for RegistersViewer.
* @param parent
* @param style
*/
public RegistersViewer( Composite parent, int style )
{
super( parent, style );
}
/**
* Constructor for RegistersViewer.
* @param tree
*/
public RegistersViewer( Tree tree )
{
super( tree );
}
public void refresh()
{
super.refresh();
if ( getSelection().isEmpty() && getNewItem() != null )
{
if ( !getNewItem().isDisposed() )
{
//ensure that new items are visible
showItem( getNewItem() );
}
setNewItem( null );
}
//expandToLevel( 2 );
}
/**
* @see AbstractTreeViewer#newItem(Widget, int, int)
*/
protected Item newItem( Widget parent, int style, int index )
{
if ( index != -1 )
{
//ignore the dummy items
setNewItem( super.newItem( parent, style, index ) );
return getNewItem();
}
return super.newItem( parent, style, index );
}
protected Item getNewItem()
{
return fNewItem;
}
protected void setNewItem( Item newItem )
{
fNewItem = newItem;
}
}

View file

@ -1,7 +1,6 @@
package org.eclipse.cdt.debug.ui;
import java.text.MessageFormat;
import java.text.NumberFormat;
import java.util.HashMap;
import java.util.Map;
import java.util.MissingResourceException;
@ -19,7 +18,6 @@ import org.eclipse.cdt.debug.internal.ui.editors.DisassemblyDocumentProvider;
import org.eclipse.cdt.debug.internal.ui.editors.DisassemblyEditorInput;
import org.eclipse.cdt.debug.internal.ui.preferences.CDebugPreferencePage;
import org.eclipse.cdt.debug.internal.ui.preferences.MemoryViewPreferencePage;
import org.eclipse.cdt.debug.internal.ui.preferences.RegistersViewPreferencePage;
import org.eclipse.cdt.debug.internal.ui.preferences.SharedLibrariesViewPreferencePage;
import org.eclipse.cdt.debug.ui.sourcelookup.DefaultSourceLocator;
import org.eclipse.core.resources.IStorage;
@ -58,7 +56,6 @@ import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPart;
import org.eclipse.ui.IWorkbenchWindow;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.eclipse.cdt.debug.ui.CDebugUIPlugin;
/**
* The main plugin class to be used in the desktop.
@ -180,7 +177,6 @@ public class CDebugUIPlugin extends AbstractUIPlugin
protected void initializeDefaultPreferences( IPreferenceStore pstore )
{
MemoryViewPreferencePage.initDefaults( pstore );
RegistersViewPreferencePage.initDefaults( pstore );
SharedLibrariesViewPreferencePage.initDefaults( pstore );
CDebugPreferencePage.initDefaults( pstore );
}