diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog index 3ac956ea1d8..2689dd1c3c4 100644 --- a/debug/org.eclipse.cdt.debug.ui/ChangeLog +++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog @@ -1,3 +1,8 @@ +2003-10-24 Mikhail Khodjaiants + Fix for PR 43624: The "Show Types Name" action of the Registers view doesn't work. + * ShowRegisterTypesAction.java + * RegistersView.java + 2003-10-22 Mikhail Khodjaiants Moved the 'AddAddressBreakpointActionDelegate' action to the 'org.eclipse.cdt.debug.internal.ui.actions' package. diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ShowRegisterTypesAction.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ShowRegisterTypesAction.java index 655fd66691c..00b33534d8a 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ShowRegisterTypesAction.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/ShowRegisterTypesAction.java @@ -9,8 +9,8 @@ import org.eclipse.cdt.debug.internal.ui.CDebugImages; import org.eclipse.cdt.debug.internal.ui.ICDebugHelpContextIds; import org.eclipse.cdt.debug.ui.CDebugUIPlugin; import org.eclipse.debug.ui.IDebugModelPresentation; +import org.eclipse.debug.ui.IDebugView; import org.eclipse.jface.action.Action; -import org.eclipse.jface.viewers.ILabelProvider; import org.eclipse.jface.viewers.StructuredViewer; import org.eclipse.swt.custom.BusyIndicator; import org.eclipse.ui.help.WorkbenchHelp; @@ -24,15 +24,15 @@ import org.eclipse.ui.help.WorkbenchHelp; */ public class ShowRegisterTypesAction extends Action { - private StructuredViewer fViewer; + private IDebugView fView; /** * Constructor for ShowRegisterTypesAction. */ - public ShowRegisterTypesAction( StructuredViewer viewer ) + public ShowRegisterTypesAction( IDebugView view ) { super( "Show &Type Names", Action.AS_CHECK_BOX ); - setViewer( viewer ); + setView( view ); setToolTipText( "Show Type Names" ); CDebugImages.setLocalImageDescriptors( this, CDebugImages.IMG_LCL_TYPE_NAMES ); setId( CDebugUIPlugin.getUniqueIdentifier() + ".ShowTypesAction" ); //$NON-NLS-1$ @@ -53,11 +53,10 @@ public class ShowRegisterTypesAction extends Action { return; } - ILabelProvider labelProvider = (ILabelProvider)getViewer().getLabelProvider(); - if ( labelProvider instanceof IDebugModelPresentation ) + IDebugModelPresentation debugLabelProvider = (IDebugModelPresentation)getView().getAdapter( IDebugModelPresentation.class ); + if ( debugLabelProvider != null ) { - IDebugModelPresentation debugLabelProvider = (IDebugModelPresentation)labelProvider; - debugLabelProvider.setAttribute( IDebugModelPresentation.DISPLAY_VARIABLE_TYPE_NAMES, ( on ? Boolean.TRUE : Boolean.FALSE ) ); + debugLabelProvider.setAttribute( IDebugModelPresentation.DISPLAY_VARIABLE_TYPE_NAMES, ( on ? Boolean.TRUE : Boolean.FALSE ) ); BusyIndicator.showWhile( getViewer().getControl().getDisplay(), new Runnable() { @@ -80,11 +79,18 @@ public class ShowRegisterTypesAction extends Action protected StructuredViewer getViewer() { - return fViewer; + if ( getView() != null && getView().getViewer() instanceof StructuredViewer ) + return (StructuredViewer)getView().getViewer(); + return null; } - protected void setViewer( StructuredViewer viewer ) + protected IDebugView getView() { - fViewer = viewer; + return fView; + } + + public void setView( IDebugView view ) + { + fView = view; } } 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 026bec1f4b4..01b25148591 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 @@ -34,6 +34,7 @@ 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; @@ -174,7 +175,7 @@ public class RegistersView extends AbstractDebugEventHandlerView */ protected void createActions() { - IAction action = new ShowRegisterTypesAction( getStructuredViewer() ); + IAction action = new ShowRegisterTypesAction( this ); setAction( "ShowTypeNames", action ); //$NON-NLS-1$ action = new ChangeRegisterValueAction( getViewer() ); @@ -229,7 +230,7 @@ public class RegistersView extends AbstractDebugEventHandlerView 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( 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$ } @@ -395,4 +396,21 @@ public class RegistersView extends AbstractDebugEventHandlerView { 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 ); + } + }