diff --git a/debug/org.eclipse.cdt.debug.ui/ChangeLog b/debug/org.eclipse.cdt.debug.ui/ChangeLog index fa8805ba04e..7de71ed8824 100644 --- a/debug/org.eclipse.cdt.debug.ui/ChangeLog +++ b/debug/org.eclipse.cdt.debug.ui/ChangeLog @@ -1,3 +1,9 @@ +2004-05-14 Mikhail Khodjaiants + Refresh the Disassembly view on change events. + * DisassemblyEditorInput.java + * DisassemblyView.java + * DisassemblyViewEventHandler.java + 2004-05-13 Mikhail Khodjaiants Removed old disassembly implementation. * SwitchToDisassemblyActionDelegate.java: deleted diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/disassembly/DisassemblyEditorInput.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/disassembly/DisassemblyEditorInput.java index b22d6f2e7f9..10547a187a6 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/disassembly/DisassemblyEditorInput.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/disassembly/DisassemblyEditorInput.java @@ -270,16 +270,11 @@ public class DisassemblyEditorInput implements IEditorInput { return text; } -// private void addSourceLineRegion( int offset, int length ) { -// if ( fTextPresentation != null ) { -// fTextPresentation.addStyleRange( new StyleRange( offset, -// length, -// JFaceResources.getColorRegistry().get( IInternalCDebugUIConstants.DISASSEMBLY_SOURCE_LINE_COLOR ), -// null ) ); -// } -// } - public IRegion[] getSourceRegions() { return this.fSourceRegions; } + + protected IDisassembly getDisassembly() { + return ( fBlock != null ) ? fBlock.getDisassembly() : null; + } } diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/disassembly/DisassemblyView.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/disassembly/DisassemblyView.java index 292d0b7cc7b..f100c7845d0 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/disassembly/DisassemblyView.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/disassembly/DisassemblyView.java @@ -15,6 +15,7 @@ import java.util.Iterator; import java.util.Map; import org.eclipse.cdt.debug.core.model.ICStackFrame; +import org.eclipse.cdt.debug.core.model.IDisassembly; import org.eclipse.cdt.debug.internal.ui.ICDebugHelpContextIds; import org.eclipse.cdt.debug.internal.ui.IInternalCDebugUIConstants; import org.eclipse.cdt.debug.internal.ui.actions.CBreakpointPropertiesRulerAction; @@ -25,11 +26,13 @@ import org.eclipse.cdt.debug.internal.ui.views.AbstractDebugEventHandlerView; import org.eclipse.cdt.debug.internal.ui.views.IDebugExceptionHandler; import org.eclipse.cdt.debug.ui.CDebugUIPlugin; import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IAdaptable; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; import org.eclipse.debug.core.DebugException; import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.model.IThread; +import org.eclipse.debug.ui.DebugUITools; import org.eclipse.debug.ui.IDebugUIConstants; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuListener; @@ -906,4 +909,20 @@ public class DisassemblyView extends AbstractDebugEventHandlerView } return p; } + + protected void refresh( IDisassembly disassembly ) { + if ( !(getInput() instanceof DisassemblyEditorInput) || !disassembly.equals( ((DisassemblyEditorInput)getInput()).getDisassembly() ) ) + return; + resetViewerInput(); + if ( !isAvailable() || !isVisible() ) + return; + IAdaptable context = DebugUITools.getDebugContext(); + if ( context instanceof ICStackFrame ) { + fLastStackFrame = (ICStackFrame)context; + IEditorInput input = getInput(); + if ( input instanceof DisassemblyEditorInput ) + setViewerInput( DisassemblyEditorInput.PENDING_EDITOR_INPUT ); + computeInput( input, (ICStackFrame)context, this ); + } + } } diff --git a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/disassembly/DisassemblyViewEventHandler.java b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/disassembly/DisassemblyViewEventHandler.java index 731dbf62f99..33f74505118 100644 --- a/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/disassembly/DisassemblyViewEventHandler.java +++ b/debug/org.eclipse.cdt.debug.ui/src/org/eclipse/cdt/debug/internal/ui/views/disassembly/DisassemblyViewEventHandler.java @@ -10,6 +10,7 @@ ***********************************************************************/ package org.eclipse.cdt.debug.internal.ui.views.disassembly; +import org.eclipse.cdt.debug.core.model.IDisassembly; import org.eclipse.cdt.debug.internal.ui.views.AbstractDebugEventHandler; import org.eclipse.debug.core.DebugEvent; import org.eclipse.debug.ui.AbstractDebugView; @@ -45,6 +46,9 @@ public class DisassemblyViewEventHandler extends AbstractDebugEventHandler { case DebugEvent.RESUME: handleResumeEvent( events[i] ); break; + case DebugEvent.CHANGE: + handleChangeEvent( events[i] ); + break; } } } @@ -70,6 +74,11 @@ public class DisassemblyViewEventHandler extends AbstractDebugEventHandler { private void handleSuspendEvent( DebugEvent event ) { } + private void handleChangeEvent( DebugEvent event ) { + if ( event.getSource() instanceof IDisassembly ) + getDisassemblyView().refresh( (IDisassembly)event.getSource() ); + } + protected DisassemblyView getDisassemblyView() { return (DisassemblyView)getView(); }