Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/BreakpointsExpandAllAction.java')
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/actions/breakpoints/BreakpointsExpandAllAction.java62
1 files changed, 61 insertions, 1 deletions
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();
+ }
}

Back to the top