diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog new file mode 100644 index 00000000000..698608d05e8 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog @@ -0,0 +1,7 @@ +2002-10-11 Mikhail Khodjaiants + * SwitchToDisassemblyActionDelegate.java: Implementation of the 'Switch to disassembly mode' action. + * plugin.properties: Action label and tooltip. + * plugin.xml: Contribution to the 'Launch View'. + * icons/full/clcl16/disassembly.gif: Hover icon. + * icons/full/dlcl16/disassembly.gif: Disabled icon. + * icons/full/elcl16/disassembly.gif: Enabled icon. diff --git a/debug/org.eclipse.cdt.debug.ui/icons/full/clcl16/disassembly.gif b/debug/org.eclipse.cdt.debug.ui/icons/full/clcl16/disassembly.gif new file mode 100644 index 00000000000..a78e3024c87 Binary files /dev/null and b/debug/org.eclipse.cdt.debug.ui/icons/full/clcl16/disassembly.gif differ diff --git a/debug/org.eclipse.cdt.debug.ui/icons/full/dlcl16/disassembly.gif b/debug/org.eclipse.cdt.debug.ui/icons/full/dlcl16/disassembly.gif new file mode 100644 index 00000000000..174087f454a Binary files /dev/null and b/debug/org.eclipse.cdt.debug.ui/icons/full/dlcl16/disassembly.gif differ diff --git a/debug/org.eclipse.cdt.debug.ui/icons/full/elcl16/disassembly.gif b/debug/org.eclipse.cdt.debug.ui/icons/full/elcl16/disassembly.gif new file mode 100644 index 00000000000..a78e3024c87 Binary files /dev/null and b/debug/org.eclipse.cdt.debug.ui/icons/full/elcl16/disassembly.gif differ diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.properties b/debug/org.eclipse.cdt.debug.ui/plugin.properties index e104e10e311..9043b75104c 100644 --- a/debug/org.eclipse.cdt.debug.ui/plugin.properties +++ b/debug/org.eclipse.cdt.debug.ui/plugin.properties @@ -20,6 +20,9 @@ DebugActionSet.label=C/C++ Debug RestartAction.label=Restart RestartAction.tooltip=Restart +SwitchToDisassemblyAction.label=Disassembly Mode +SwitchToDisassemblyAction.tooltip=Disassembly Mode On/Off + AddBreakpoint.label=Add/Remove &Breakpoint EnableBreakpoint.label=T&oggle Breakpoint BreakpointProperties.label=Breakpoint P&roperties... diff --git a/debug/org.eclipse.cdt.debug.ui/plugin.xml b/debug/org.eclipse.cdt.debug.ui/plugin.xml index 44a37fe6c9e..52ffb4eae98 100644 --- a/debug/org.eclipse.cdt.debug.ui/plugin.xml +++ b/debug/org.eclipse.cdt.debug.ui/plugin.xml @@ -222,6 +222,21 @@ + + + + + + - - + + + + diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/SwitchToDisassemblyActionDelegate.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/SwitchToDisassemblyActionDelegate.java new file mode 100644 index 00000000000..8d09e415320 --- /dev/null +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/SwitchToDisassemblyActionDelegate.java @@ -0,0 +1,126 @@ +/* + *(c) Copyright QNX Software Systems Ltd. 2002. + * All Rights Reserved. + * + */ +package org.eclipse.cdt.debug.internal.ui.actions; + +import org.eclipse.cdt.debug.core.sourcelookup.ISourceMode; +import org.eclipse.cdt.debug.internal.core.model.CDebugElement; +import org.eclipse.debug.core.DebugEvent; +import org.eclipse.debug.core.DebugException; +import org.eclipse.jface.action.IAction; +import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.IStructuredSelection; +import org.eclipse.ui.IViewPart; + +/** + * Enter type comment. + * + * @since: Oct 11, 2002 + */ +public class SwitchToDisassemblyActionDelegate extends AbstractListenerActionDelegate +{ + private IViewPart fViewPart = null; + + /* (non-Javadoc) + * @see org.eclipse.cdt.debug.internal.ui.actions.AbstractDebugActionDelegate#doAction(Object) + */ + protected void doAction( Object element ) throws DebugException + { + if ( element != null && element instanceof CDebugElement ) + { + ISourceMode sourceMode = (ISourceMode)((CDebugElement)element).getDebugTarget().getAdapter( ISourceMode.class ); + if ( sourceMode != null ) + { + sourceMode.setMode( ( sourceMode.getMode() == ISourceMode.MODE_SOURCE ) ? ISourceMode.MODE_DISASSEMBLY : ISourceMode.MODE_SOURCE ); + ((CDebugElement)element).fireChangeEvent( DebugEvent.CLIENT_REQUEST ); + if ( fViewPart != null && fViewPart instanceof ISelectionChangedListener ) + { + final ISelectionChangedListener view = (ISelectionChangedListener)fViewPart; + fViewPart.getViewSite().getShell().getDisplay().asyncExec( + new Runnable() + { + public void run() + { + view.selectionChanged( null ); + } + } ); + } + } + } + } + + /* (non-Javadoc) + * @see org.eclipse.cdt.debug.internal.ui.actions.AbstractDebugActionDelegate#isEnabledFor(Object) + */ + protected boolean isEnabledFor( Object element ) + { + if ( element != null && element instanceof CDebugElement ) + { + return ( ((CDebugElement)element).getDebugTarget().getAdapter( ISourceMode.class ) != null ); + } + return false; + } + + /** + * @see AbstractDebugActionDelegate#enableForMultiSelection() + */ + protected boolean enableForMultiSelection() + { + return false; + } + + /** + * @see AbstractDebugActionDelegate#getStatusMessage() + */ + protected String getStatusMessage() + { + return "Exceptions occurred attempting to switch to disassembly/source mode."; + } + + /** + * @see AbstractDebugActionDelegate#getErrorDialogMessage() + */ + protected String getErrorDialogMessage() + { + return "Switch to disassembly/source mode failed."; + } + + /** + * @see AbstractDebugActionDelegate#getErrorDialogTitle() + */ + protected String getErrorDialogTitle() + { + return "Switch to disassembly/source mode"; + } + + /* (non-Javadoc) + * @see org.eclipse.ui.IActionDelegate#selectionChanged(IAction, ISelection) + */ + public void selectionChanged( IAction action, ISelection selection ) + { + super.selectionChanged( action, selection ); + boolean checked = false; + if ( selection != null && selection instanceof IStructuredSelection ) + { + Object element = ((IStructuredSelection)selection).getFirstElement(); + if ( element != null && element instanceof CDebugElement ) + { + ISourceMode sourceMode = (ISourceMode)((CDebugElement)element).getDebugTarget().getAdapter( ISourceMode.class ); + checked = ( sourceMode != null && sourceMode.getMode() == ISourceMode.MODE_DISASSEMBLY ); + } + } + action.setChecked( checked ); + } + + /* (non-Javadoc) + * @see org.eclipse.ui.IViewActionDelegate#init(IViewPart) + */ + public void init( IViewPart view ) + { + super.init( view ); + fViewPart = view; + } +}