diff options
author | Pawel Piech | 2011-12-23 23:24:58 +0000 |
---|---|---|
committer | Pawel Piech | 2011-12-23 23:24:58 +0000 |
commit | 720f9a16ef8703e119f9f1f5bd84a8789b1e91d3 (patch) | |
tree | 108fefff07dcac8e9ddf01779292f038dd3d0df4 | |
parent | 7db98892eac00a07f609e5b064f9067f206b45d1 (diff) | |
download | eclipse.platform.debug-720f9a16ef8703e119f9f1f5bd84a8789b1e91d3.tar.gz eclipse.platform.debug-720f9a16ef8703e119f9f1f5bd84a8789b1e91d3.tar.xz eclipse.platform.debug-720f9a16ef8703e119f9f1f5bd84a8789b1e91d3.zip |
Bug 367105 - [debug view] An empty Debug view has an enabled "Find..." context menu action
6 files changed, 206 insertions, 73 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/CollapseAllAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/CollapseAllAction.java index 8e90c65a4..9f1e25a2f 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/CollapseAllAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/CollapseAllAction.java @@ -12,18 +12,20 @@ package org.eclipse.debug.internal.ui.actions; import org.eclipse.debug.internal.ui.DebugPluginImages; import org.eclipse.debug.internal.ui.IInternalDebugUIConstants; +import org.eclipse.debug.internal.ui.viewers.model.provisional.TreeModelViewer; import org.eclipse.jface.action.Action; -import org.eclipse.jface.viewers.TreeViewer; +import org.eclipse.jface.viewers.TreePath; import org.eclipse.ui.handlers.CollapseAllHandler; +import org.eclipse.ui.texteditor.IUpdate; /** * CollapseAllAction */ -public class CollapseAllAction extends Action { +public class CollapseAllAction extends Action implements IUpdate { - private TreeViewer fViewer; + private TreeModelViewer fViewer; - public CollapseAllAction(TreeViewer viewer) { + public CollapseAllAction(TreeModelViewer viewer) { super(ActionMessages.CollapseAllAction_0, DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_ELCL_COLLAPSE_ALL)); setToolTipText(ActionMessages.CollapseAllAction_0); setDisabledImageDescriptor(DebugPluginImages.getImageDescriptor(IInternalDebugUIConstants.IMG_DLCL_COLLAPSE_ALL)); @@ -39,4 +41,7 @@ public class CollapseAllAction extends Action { fViewer.collapseAll(); } + public void update() { + setEnabled( fViewer.getInput() != null && fViewer.getChildCount(TreePath.EMPTY) > 0 ); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/BreakpointsCollapseAllAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/BreakpointsCollapseAllAction.java index 895e9d6db..26347c5ec 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/BreakpointsCollapseAllAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/BreakpointsCollapseAllAction.java @@ -11,10 +11,18 @@ *******************************************************************************/ package org.eclipse.debug.internal.ui.actions.breakpoints; +import org.eclipse.debug.internal.ui.viewers.model.IInternalTreeModelViewer; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelChangedListener; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelDelta; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxy; +import org.eclipse.debug.internal.ui.viewers.model.provisional.ITreeModelViewer; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdateListener; import org.eclipse.debug.ui.AbstractDebugView; import org.eclipse.jface.action.IAction; import org.eclipse.jface.commands.ActionHandler; import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.TreePath; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.swt.widgets.Event; import org.eclipse.ui.IActionDelegate2; @@ -26,7 +34,7 @@ import org.eclipse.ui.handlers.IHandlerService; /** * */ -public class BreakpointsCollapseAllAction implements IViewActionDelegate, IActionDelegate2 { +public class BreakpointsCollapseAllAction implements IViewActionDelegate, IActionDelegate2, IViewerUpdateListener, IModelChangedListener { private AbstractDebugView fView; @@ -41,6 +49,11 @@ public class BreakpointsCollapseAllAction implements IViewActionDelegate, IActio if (hs != null) { hs.activateHandler(CollapseAllHandler.COMMAND_ID, new ActionHandler(fAction)); } + IInternalTreeModelViewer viewer = (IInternalTreeModelViewer)fView.getViewer(); + if (viewer != null) { + viewer.addViewerUpdateListener(this); + viewer.addModelChangedListener(this); + } } /* (non-Javadoc) @@ -60,6 +73,11 @@ public class BreakpointsCollapseAllAction implements IViewActionDelegate, IActio * @see org.eclipse.ui.IActionDelegate2#dispose() */ public void dispose() { + ITreeModelViewer viewer = (ITreeModelViewer)fView.getViewer(); + if (viewer != null) { + viewer.removeViewerUpdateListener(this); + viewer.removeModelChangedListener(this); + } } /* (non-Javadoc) @@ -77,4 +95,31 @@ public class BreakpointsCollapseAllAction implements IViewActionDelegate, IActio run(action); } + public void viewerUpdatesBegin() { + } + + public void viewerUpdatesComplete() { + } + + public void updateStarted(IViewerUpdate update) { + } + + public void updateComplete(IViewerUpdate update) { + if (!update.isCanceled()) { + if (TreePath.EMPTY.equals(update.getElementPath())) { + update(); + } + } + } + + private void update() { + IInternalTreeModelViewer viewer = (IInternalTreeModelViewer)fView.getViewer(); + if (viewer != null && fAction != null) { + fAction.setEnabled(viewer.getInput() != null && viewer.getChildCount(TreePath.EMPTY) > 0); + } + } + + public void modelChanged(IModelDelta delta, IModelProxy proxy) { + update(); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/BreakpointsExpandAllAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/BreakpointsExpandAllAction.java index 85620b3b6..4940ae95b 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/BreakpointsExpandAllAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/BreakpointsExpandAllAction.java @@ -11,26 +11,50 @@ *******************************************************************************/ package org.eclipse.debug.internal.ui.actions.breakpoints; +import org.eclipse.debug.internal.ui.viewers.model.IInternalTreeModelViewer; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelChangedListener; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelDelta; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxy; +import org.eclipse.debug.internal.ui.viewers.model.provisional.ITreeModelViewer; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdateListener; import org.eclipse.debug.internal.ui.views.breakpoints.BreakpointsView; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; +import org.eclipse.jface.viewers.TreePath; +import org.eclipse.swt.widgets.Event; +import org.eclipse.ui.IActionDelegate2; import org.eclipse.ui.IViewActionDelegate; import org.eclipse.ui.IViewPart; /** * Action which fully expands the tree in the breakpoints view. */ -public class BreakpointsExpandAllAction implements IViewActionDelegate { +public class BreakpointsExpandAllAction implements IViewActionDelegate, IActionDelegate2, IViewerUpdateListener, IModelChangedListener { + private IAction fAction; private BreakpointsView fView; + public void init(IAction action) { + fAction = action; + } + /* (non-Javadoc) * @see org.eclipse.ui.IViewActionDelegate#init(org.eclipse.ui.IViewPart) */ public void init(IViewPart view) { fView = (BreakpointsView) view; + IInternalTreeModelViewer viewer = (IInternalTreeModelViewer)fView.getViewer(); + if (viewer != null) { + viewer.addViewerUpdateListener(this); + viewer.addModelChangedListener(this); + } } + public void runWithEvent(IAction action, Event event) { + run(action); + } + /* (non-Javadoc) * @see org.eclipse.ui.IActionDelegate#run(org.eclipse.jface.action.IAction) */ @@ -44,4 +68,40 @@ public class BreakpointsExpandAllAction implements IViewActionDelegate { public void selectionChanged(IAction action, ISelection selection) { } + + public void dispose() { + ITreeModelViewer viewer = (ITreeModelViewer)fView.getViewer(); + if (viewer != null) { + viewer.removeViewerUpdateListener(this); + viewer.removeModelChangedListener(this); + } + } + + public void viewerUpdatesBegin() { + } + + public void viewerUpdatesComplete() { + } + + public void updateStarted(IViewerUpdate update) { + } + + public void updateComplete(IViewerUpdate update) { + if (!update.isCanceled()) { + if (TreePath.EMPTY.equals(update.getElementPath())) { + update(); + } + } + } + + private void update() { + IInternalTreeModelViewer viewer = (IInternalTreeModelViewer)fView.getViewer(); + if (viewer != null && fAction != null) { + fAction.setEnabled(viewer.getInput() != null && viewer.getChildCount(TreePath.EMPTY) > 0); + } + } + + public void modelChanged(IModelDelta delta, IModelProxy proxy) { + update(); + } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/VirtualFindAction.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/VirtualFindAction.java index 598d78f69..8ea5d02d8 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/VirtualFindAction.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/VirtualFindAction.java @@ -313,7 +313,7 @@ public class VirtualFindAction extends Action implements IUpdate { } public void update() { - setEnabled(fClientViewer.getInput() != null); + setEnabled( fClientViewer.getInput() != null && fClientViewer.getChildCount(TreePath.EMPTY) > 0 ); } } diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchView.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchView.java index 6234f3208..6983a3188 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchView.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/launch/LaunchView.java @@ -83,6 +83,7 @@ import org.eclipse.debug.ui.contexts.IDebugContextListener; import org.eclipse.debug.ui.contexts.IDebugContextProvider; import org.eclipse.jface.action.ActionContributionItem; import org.eclipse.jface.action.GroupMarker; +import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; import org.eclipse.jface.action.IToolBarManager; @@ -132,10 +133,11 @@ import org.eclipse.ui.part.Page; import org.eclipse.ui.part.ShowInContext; import org.eclipse.ui.progress.IWorkbenchSiteProgressService; import org.eclipse.ui.progress.UIJob; +import org.eclipse.ui.texteditor.IUpdate; public class LaunchView extends AbstractDebugView implements ISelectionChangedListener, IPerspectiveListener2, IPageListener, IShowInTarget, IShowInSource, - IShowInTargetList, IPartListener2, IViewerUpdateListener, IContextManagerListener + IShowInTargetList, IPartListener2, IViewerUpdateListener, IContextManagerListener, IModelChangedListener { public static final String ID_CONTEXT_ACTIVITY_BINDINGS = "contextActivityBindings"; //$NON-NLS-1$ @@ -861,7 +863,8 @@ public class LaunchView extends AbstractDebugView fPresentationContext); viewer.addSelectionChangedListener(fTreeViewerSelectionChangedListener); - viewer.addViewerUpdateListener(this); + viewer.addViewerUpdateListener(this); + viewer.addModelChangedListener(this); viewer.setInput(DebugPlugin.getDefault().getLaunchManager()); //setEventHandler(new LaunchViewEventHandler(this)); @@ -1080,6 +1083,7 @@ public class LaunchView extends AbstractDebugView if (viewer != null) { viewer.removeSelectionChangedListener(fTreeViewerSelectionChangedListener); ((TreeModelViewer)viewer).removeViewerUpdateListener(this); + ((TreeModelViewer)viewer).removeModelChangedListener(this); } if (fPresentationContext != null) { fPresentationContext.dispose(); @@ -1446,8 +1450,14 @@ public class LaunchView extends AbstractDebugView * @see org.eclipse.debug.internal.ui.viewers.model.provisional.viewers.IViewerUpdateListener#updateComplete(org.eclipse.debug.internal.ui.viewers.provisional.IAsynchronousRequestMonitor) */ public void updateComplete(IViewerUpdate update) { + if (!update.isCanceled()) { + if (TreePath.EMPTY.equals(update.getElementPath())) { + updateFindAction(); + } + } } + /* (non-Javadoc) * @see org.eclipse.debug.internal.ui.viewers.model.provisional.viewers.IViewerUpdateListener#updateStarted(org.eclipse.debug.internal.ui.viewers.provisional.IAsynchronousRequestMonitor) */ @@ -1476,6 +1486,17 @@ public class LaunchView extends AbstractDebugView } } + public void modelChanged(IModelDelta delta, IModelProxy proxy) { + updateFindAction(); + } + + private void updateFindAction() { + IAction action= getAction(FIND_ACTION); + if (action instanceof IUpdate) { + ((IUpdate) action).update(); + } + } + /** * Returns whether the breadcrumb viewer is currently visible in the view. * diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/VariablesView.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/VariablesView.java index 6d007618b..4f4b4a40c 100644 --- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/VariablesView.java +++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/views/variables/VariablesView.java @@ -25,31 +25,48 @@ import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; -import org.eclipse.swt.SWT; -import org.eclipse.swt.custom.SashForm; -import org.eclipse.swt.dnd.DND; -import org.eclipse.swt.dnd.Transfer; -import org.eclipse.swt.events.ControlEvent; -import org.eclipse.swt.events.ControlListener; -import org.eclipse.swt.events.FocusAdapter; -import org.eclipse.swt.events.FocusEvent; -import org.eclipse.swt.graphics.Point; -import org.eclipse.swt.layout.GridData; -import org.eclipse.swt.layout.GridLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Event; -import org.eclipse.swt.widgets.Label; -import org.eclipse.swt.widgets.Listener; -import org.eclipse.swt.widgets.TreeItem; -import org.eclipse.swt.widgets.Widget; - import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.ListenerList; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.jobs.Job; - +import org.eclipse.debug.core.DebugException; +import org.eclipse.debug.internal.ui.DebugUIPlugin; +import org.eclipse.debug.internal.ui.DelegatingModelPresentation; +import org.eclipse.debug.internal.ui.IDebugHelpContextIds; +import org.eclipse.debug.internal.ui.LazyModelPresentation; +import org.eclipse.debug.internal.ui.SWTFactory; +import org.eclipse.debug.internal.ui.VariablesViewModelPresentation; +import org.eclipse.debug.internal.ui.actions.CollapseAllAction; +import org.eclipse.debug.internal.ui.actions.ConfigureColumnsAction; +import org.eclipse.debug.internal.ui.actions.variables.ChangeVariableValueAction; +import org.eclipse.debug.internal.ui.actions.variables.ShowTypesAction; +import org.eclipse.debug.internal.ui.actions.variables.ToggleDetailPaneAction; +import org.eclipse.debug.internal.ui.preferences.IDebugPreferenceConstants; +import org.eclipse.debug.internal.ui.viewers.model.VirtualFindAction; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelChangedListener; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelDelta; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelDeltaVisitor; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxy; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerInputRequestor; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerInputUpdate; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate; +import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdateListener; +import org.eclipse.debug.internal.ui.viewers.model.provisional.TreeModelViewer; +import org.eclipse.debug.internal.ui.viewers.model.provisional.ViewerInputService; +import org.eclipse.debug.internal.ui.views.DebugModelPresentationContext; +import org.eclipse.debug.internal.ui.views.IDebugExceptionHandler; +import org.eclipse.debug.internal.ui.views.variables.details.AvailableDetailPanesAction; +import org.eclipse.debug.internal.ui.views.variables.details.DetailPaneProxy; +import org.eclipse.debug.internal.ui.views.variables.details.IDetailPaneContainer2; +import org.eclipse.debug.ui.AbstractDebugView; +import org.eclipse.debug.ui.DebugUITools; +import org.eclipse.debug.ui.IDebugModelPresentation; +import org.eclipse.debug.ui.IDebugUIConstants; +import org.eclipse.debug.ui.contexts.DebugContextEvent; +import org.eclipse.debug.ui.contexts.IDebugContextListener; +import org.eclipse.debug.ui.contexts.IDebugContextService; import org.eclipse.jface.action.IAction; import org.eclipse.jface.action.IMenuListener; import org.eclipse.jface.action.IMenuManager; @@ -71,10 +88,27 @@ import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.StructuredViewer; +import org.eclipse.jface.viewers.TreePath; import org.eclipse.jface.viewers.TreeSelection; -import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.Viewer; - +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.SashForm; +import org.eclipse.swt.dnd.DND; +import org.eclipse.swt.dnd.Transfer; +import org.eclipse.swt.events.ControlEvent; +import org.eclipse.swt.events.ControlListener; +import org.eclipse.swt.events.FocusAdapter; +import org.eclipse.swt.events.FocusEvent; +import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.layout.GridLayout; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Event; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Listener; +import org.eclipse.swt.widgets.TreeItem; +import org.eclipse.swt.widgets.Widget; import org.eclipse.ui.IActionBars; import org.eclipse.ui.IMemento; import org.eclipse.ui.IPerspectiveDescriptor; @@ -93,48 +127,8 @@ import org.eclipse.ui.handlers.CollapseAllHandler; import org.eclipse.ui.handlers.IHandlerService; import org.eclipse.ui.progress.IWorkbenchSiteProgressService; import org.eclipse.ui.progress.UIJob; - import org.eclipse.ui.texteditor.IUpdate; -import org.eclipse.debug.core.DebugException; -import org.eclipse.debug.internal.ui.DebugUIPlugin; -import org.eclipse.debug.internal.ui.DelegatingModelPresentation; -import org.eclipse.debug.internal.ui.IDebugHelpContextIds; -import org.eclipse.debug.internal.ui.LazyModelPresentation; -import org.eclipse.debug.internal.ui.SWTFactory; -import org.eclipse.debug.internal.ui.VariablesViewModelPresentation; -import org.eclipse.debug.internal.ui.actions.CollapseAllAction; -import org.eclipse.debug.internal.ui.actions.ConfigureColumnsAction; -import org.eclipse.debug.internal.ui.actions.variables.ChangeVariableValueAction; -import org.eclipse.debug.internal.ui.actions.variables.ShowTypesAction; -import org.eclipse.debug.internal.ui.actions.variables.ToggleDetailPaneAction; -import org.eclipse.debug.internal.ui.preferences.IDebugPreferenceConstants; -import org.eclipse.debug.internal.ui.viewers.model.VirtualFindAction; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelChangedListener; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelDelta; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelDeltaVisitor; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IModelProxy; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IPresentationContext; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerInputRequestor; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerInputUpdate; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdate; -import org.eclipse.debug.internal.ui.viewers.model.provisional.IViewerUpdateListener; -import org.eclipse.debug.internal.ui.viewers.model.provisional.TreeModelViewer; -import org.eclipse.debug.internal.ui.viewers.model.provisional.ViewerInputService; -import org.eclipse.debug.internal.ui.views.DebugModelPresentationContext; -import org.eclipse.debug.internal.ui.views.IDebugExceptionHandler; -import org.eclipse.debug.internal.ui.views.variables.details.AvailableDetailPanesAction; -import org.eclipse.debug.internal.ui.views.variables.details.DetailPaneProxy; -import org.eclipse.debug.internal.ui.views.variables.details.IDetailPaneContainer2; - -import org.eclipse.debug.ui.AbstractDebugView; -import org.eclipse.debug.ui.DebugUITools; -import org.eclipse.debug.ui.IDebugModelPresentation; -import org.eclipse.debug.ui.IDebugUIConstants; -import org.eclipse.debug.ui.contexts.DebugContextEvent; -import org.eclipse.debug.ui.contexts.IDebugContextListener; -import org.eclipse.debug.ui.contexts.IDebugContextService; - /** * This view shows variables and their values for a particular stack frame */ @@ -480,7 +474,8 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis } showViewer(); - getViewer().setInput(context); + getViewer().setInput(context); + updateObjects(); } /** @@ -922,7 +917,7 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis action = new ToggleLogicalStructureAction(this); setAction("ToggleContentProviders", action); //$NON-NLS-1$ - action = new CollapseAllAction((TreeViewer)getViewer()); + action = new CollapseAllAction((TreeModelViewer)getViewer()); setAction("CollapseAll", action); //$NON-NLS-1$ IHandlerService hs = (IHandlerService) getSite().getService(IHandlerService.class); if (hs != null) { @@ -1369,6 +1364,9 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis public void modelChanged(IModelDelta delta, IModelProxy proxy) { fVisitor.reset(); delta.accept(fVisitor); + + updateAction(VARIABLES_FIND_ELEMENT_ACTION); + updateAction("CollapseAll"); } /* (non-Javadoc) @@ -1382,6 +1380,10 @@ public class VariablesView extends AbstractDebugView implements IDebugContextLis } else { showViewer(); } + if (TreePath.EMPTY.equals(update.getElementPath())) { + updateAction(VARIABLES_FIND_ELEMENT_ACTION); + updateAction("CollapseAll"); + } } } |