From 13fd0e42e8f45a04a62805b5d31c2e22a043fd3e Mon Sep 17 00:00:00 2001 From: Mikhail Khodjaiants Date: Fri, 11 Oct 2002 21:51:18 +0000 Subject: [PATCH] Implementing the 'Switch to disassembly mode' action. --- debug/org.eclipse.cdt.debug.ui/ChangeLog | 7 + .../icons/full/clcl16/disassembly.gif | Bin 0 -> 161 bytes .../icons/full/dlcl16/disassembly.gif | Bin 0 -> 158 bytes .../icons/full/elcl16/disassembly.gif | Bin 0 -> 161 bytes .../plugin.properties | 3 + debug/org.eclipse.cdt.debug.ui/plugin.xml | 40 +++++- .../SwitchToDisassemblyActionDelegate.java | 126 ++++++++++++++++++ 7 files changed, 169 insertions(+), 7 deletions(-) create mode 100644 debug/org.eclipse.cdt.debug.ui/ChangeLog create mode 100644 debug/org.eclipse.cdt.debug.ui/icons/full/clcl16/disassembly.gif create mode 100644 debug/org.eclipse.cdt.debug.ui/icons/full/dlcl16/disassembly.gif create mode 100644 debug/org.eclipse.cdt.debug.ui/icons/full/elcl16/disassembly.gif create mode 100644 debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/actions/SwitchToDisassemblyActionDelegate.java 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 0000000000000000000000000000000000000000..a78e3024c8785a87acde15187edae51337bbc8a6 GIT binary patch literal 161 zcmZ?wbhEHb6krfw*v!E2|55J$ZiEa%~Zxl5{z?#CO5A885RMR2w2VQ+U`~zI<7J LAZq(94hCxgT24b; literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..174087f454a6658c59722099dac3ac02a0db1956 GIT binary patch literal 158 zcmZ?wbhEHb6krfw_{_lY|Ns9dPoBJa^XBf|yZ7(kZ*On^{rmUKnKLspGl5bQCQMki zY*|iD4g(A*{$ybUv2{QM$P8x|Z-En@uWgR;sBC;D)U0sSqwi^iuIFu`2S?P5jjm7L z^rmOY=V=QB78pos_uTFO7+q#0*P?E<=3K(0Y#s%p*1oCt{WNVjSQ@`9i|S=yum%8I C`9tXd literal 0 HcmV?d00001 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 0000000000000000000000000000000000000000..a78e3024c8785a87acde15187edae51337bbc8a6 GIT binary patch literal 161 zcmZ?wbhEHb6krfw*v!E2|55J$ZiEa%~Zxl5{z?#CO5A885RMR2w2VQ+U`~zI<7J LAZq(94hCxgT24b; literal 0 HcmV?d00001 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; + } +}