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;
+ }
+}