Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers')
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousModel.java21
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/BreadcrumbViewer.java54
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ChildrenCountUpdate.java22
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ElementCompareRequest.java20
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ElementMementoRequest.java18
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/InternalVirtualTreeModelViewer.java182
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TimeTriggeredProgressMonitorDialog.java23
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelContentProvider.java124
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelLabelProvider.java33
-rw-r--r--org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ViewerStateTracker.java566
10 files changed, 489 insertions, 574 deletions
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousModel.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousModel.java
index 487a90747..3cdba4e9a 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousModel.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/AsynchronousModel.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
+ * Copyright (c) 2006, 2018 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -608,17 +608,14 @@ public abstract class AsynchronousModel {
//update viewer outside the lock
final ModelNode[] finalUnmap = unmap;
- preservingSelection(new Runnable() {
- @Override
- public void run() {
- if (finalUnmap != null) {
- for (int i = 0; i < finalUnmap.length; i++) {
- viewer.unmapNode(finalUnmap[i]);
- }
- }
- viewer.nodeChildrenChanged(parentNode);
- }
- });
+ preservingSelection(() -> {
+ if (finalUnmap != null) {
+ for (int i = 0; i < finalUnmap.length; i++) {
+ viewer.unmapNode(finalUnmap[i]);
+ }
+ }
+ viewer.nodeChildrenChanged(parentNode);
+ });
}
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/BreadcrumbViewer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/BreadcrumbViewer.java
index fa503d9c1..7fa402f14 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/BreadcrumbViewer.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/breadcrumb/BreadcrumbViewer.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2008, 2016 IBM Corporation and others.
+ * Copyright (c) 2008, 2018 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -33,8 +33,6 @@ import org.eclipse.swt.SWT;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.MenuDetectEvent;
import org.eclipse.swt.events.MenuDetectListener;
-import org.eclipse.swt.events.TraverseEvent;
-import org.eclipse.swt.events.TraverseListener;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.GC;
import org.eclipse.swt.graphics.Image;
@@ -44,8 +42,6 @@ import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Composite;
import org.eclipse.swt.widgets.Control;
import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Event;
-import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.Shell;
import org.eclipse.swt.widgets.Widget;
@@ -99,30 +95,22 @@ public abstract class BreadcrumbViewer extends StructuredViewer {
fContainer= new Composite(parent, SWT.NONE);
GridData layoutData= new GridData(SWT.FILL, SWT.TOP, true, false);
fContainer.setLayoutData(layoutData);
- fContainer.addTraverseListener(new TraverseListener() {
- @Override
- public void keyTraversed(TraverseEvent e) {
- e.doit= true;
- }
- });
+ fContainer.addTraverseListener(e -> e.doit = true);
fContainer.setBackgroundMode(SWT.INHERIT_DEFAULT);
- fContainer.addListener(SWT.Resize, new Listener() {
- @Override
- public void handleEvent(Event event) {
- int height= fContainer.getClientArea().height;
+ fContainer.addListener(SWT.Resize, event -> {
+ int height = fContainer.getClientArea().height;
- if (fGradientBackground == null || fGradientBackground.getBounds().height != height) {
- Image image= height == 0 ? null : createGradientImage(height, event.display);
- fContainer.setBackgroundImage(image);
+ if (fGradientBackground == null || fGradientBackground.getBounds().height != height) {
+ Image image = height == 0 ? null : createGradientImage(height, event.display);
+ fContainer.setBackgroundImage(image);
- if (fGradientBackground != null) {
- fGradientBackground.dispose();
- }
- fGradientBackground= image;
- }
- }
- });
+ if (fGradientBackground != null) {
+ fGradientBackground.dispose();
+ }
+ fGradientBackground = image;
+ }
+ });
hookControl(fContainer);
@@ -138,12 +126,9 @@ public abstract class BreadcrumbViewer extends StructuredViewer {
gridLayout.horizontalSpacing= 0;
fContainer.setLayout(gridLayout);
- fContainer.addListener(SWT.Resize, new Listener() {
- @Override
- public void handleEvent(Event event) {
- updateSize();
- fContainer.layout(true, true);
- }
+ fContainer.addListener(SWT.Resize, event -> {
+ updateSize();
+ fContainer.layout(true, true);
});
}
@@ -266,12 +251,7 @@ public abstract class BreadcrumbViewer extends StructuredViewer {
disableRedraw();
try {
- preservingSelection(new Runnable() {
- @Override
- public void run() {
- buildItemChain(input);
- }
- });
+ preservingSelection(() -> buildItemChain(input));
} finally {
enableRedraw();
}
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ChildrenCountUpdate.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ChildrenCountUpdate.java
index 86f697ee6..6ee5b3242 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ChildrenCountUpdate.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ChildrenCountUpdate.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2013 IBM Corporation and others.
+ * Copyright (c) 2006, 2018 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -102,22 +102,14 @@ class ChildrenCountUpdate extends ViewerUpdateMonitor implements IChildrenCountU
@Override
protected void scheduleViewerUpdate() {
- execInDisplayThread(new Runnable() {
- @Override
- public void run() {
- if (!getContentProvider().isDisposed() && !isCanceled()) {
- performUpdate();
- }
- }
- });
+ execInDisplayThread(() -> {
+ if (!getContentProvider().isDisposed() && !isCanceled()) {
+ performUpdate();
+ }
+ });
}
};
- execInDisplayThread(new Runnable() {
- @Override
- public void run() {
- fChildrenUpdate.startRequest();
- }
- });
+ execInDisplayThread(() -> fChildrenUpdate.startRequest());
return;
}
} else {
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ElementCompareRequest.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ElementCompareRequest.java
index 433b8d38f..b9a1d88e4 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ElementCompareRequest.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ElementCompareRequest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2011 IBM Corporation and others.
+ * Copyright (c) 2006, 2018 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -71,17 +71,19 @@ public class ElementCompareRequest extends MementoUpdate implements IElementComp
@Override
public void done() {
ITreeModelViewer viewer = getContentProvider().getViewer();
- if (viewer == null) return; // disposed
+ if (viewer == null)
+ {
+ return; // disposed
+ }
if (viewer.getDisplay().getThread() == Thread.currentThread()) {
fProvider.getStateTracker().compareFinished(ElementCompareRequest.this, fDelta);
} else {
- viewer.getDisplay().asyncExec(new Runnable() {
- @Override
- public void run() {
- if (getContentProvider().isDisposed()) return;
- fProvider.getStateTracker().compareFinished(ElementCompareRequest.this, fDelta);
- }
- });
+ viewer.getDisplay().asyncExec(() -> {
+ if (getContentProvider().isDisposed()) {
+ return;
+ }
+ fProvider.getStateTracker().compareFinished(ElementCompareRequest.this, fDelta);
+ });
}
}
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ElementMementoRequest.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ElementMementoRequest.java
index 6e53cf171..c9afa0360 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ElementMementoRequest.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ElementMementoRequest.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2011 IBM Corporation and others.
+ * Copyright (c) 2006, 2018 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -49,22 +49,22 @@ class ElementMementoRequest extends MementoUpdate implements IElementMementoRequ
public void done() {
ITreeModelViewer viewer = getContentProvider().getViewer();
- if (viewer == null) return; // disposed
+ if (viewer == null)
+ {
+ return; // disposed
+ }
if (viewer.getDisplay().getThread() == Thread.currentThread()) {
doComplete();
} else {
- viewer.getDisplay().asyncExec(new Runnable() {
- @Override
- public void run() {
- doComplete();
- }
- });
+ viewer.getDisplay().asyncExec(() -> doComplete());
}
}
private void doComplete() {
- if (getContentProvider().isDisposed()) return;
+ if (getContentProvider().isDisposed()) {
+ return;
+ }
if (!isCanceled() && (getStatus() == null || getStatus().isOK())) {
// replace the element with a memento
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/InternalVirtualTreeModelViewer.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/InternalVirtualTreeModelViewer.java
index ddf1c1f42..48df48089 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/InternalVirtualTreeModelViewer.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/InternalVirtualTreeModelViewer.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2009, 2015 Wind River Systems and others.
+ * Copyright (c) 2009, 2018 Wind River Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -306,53 +306,48 @@ public class InternalVirtualTreeModelViewer extends Viewer
@Override
public void remove(final Object parentOrTreePath, final int index) {
final List<TreePath> oldSelection = new LinkedList<>(Arrays.asList(((TreeSelection) getSelection()).getPaths()));
- preservingSelection(new Runnable() {
- @Override
- public void run() {
- TreePath removedPath = null;
- VirtualItem[] parentItems = findItems(parentOrTreePath);
- for (int i = 0; i < parentItems.length; i++) {
- VirtualItem parentItem = parentItems[i];
- if (parentItem.isDisposed()) {
- continue;
+ preservingSelection(() -> {
+ TreePath removedPath = null;
+ VirtualItem[] parentItems = findItems(parentOrTreePath);
+ for (int i = 0; i < parentItems.length; i++) {
+ VirtualItem parentItem = parentItems[i];
+ if (parentItem.isDisposed()) {
+ continue;
+ }
+
+ // Parent item is not expanded so just update its contents so that
+ // the plus sign gets refreshed.
+ if (!parentItem.getExpanded()) {
+ parentItem.setNeedsCountUpdate();
+ parentItem.setItemCount(-1);
+ virtualLazyUpdateHasChildren(parentItem);
+ }
+
+ if (index < parentItem.getItemCount()) {
+ VirtualItem item = parentItem.getItem(new VirtualItem.Index(index));
+
+ if (item.getData() != null) {
+ removedPath = getTreePathFromItem(item);
+ disassociate(item);
}
-
- // Parent item is not expanded so just update its contents so that
- // the plus sign gets refreshed.
- if (!parentItem.getExpanded()) {
- parentItem.setNeedsCountUpdate();
- parentItem.setItemCount(-1);
- virtualLazyUpdateHasChildren(parentItem);
- }
-
- if (index < parentItem.getItemCount()) {
- VirtualItem item =parentItem.getItem(new VirtualItem.Index(index));
-
- if (item.getData() != null) {
- removedPath = getTreePathFromItem(item);
- disassociate(item);
- }
- parentItem.remove(item.getIndex());
- }
- }
-
- if (removedPath != null) {
- boolean removed = false;
- for (Iterator<TreePath> it = oldSelection.iterator(); it.hasNext();) {
- TreePath path = it.next();
- if (path.startsWith(removedPath, null)) {
- it.remove();
- removed = true;
- }
- }
- if (removed) {
- setSelection(
- new TreeSelection(oldSelection.toArray(new TreePath[oldSelection.size()])),
- false);
- }
- }
- }
- });
+ parentItem.remove(item.getIndex());
+ }
+ }
+
+ if (removedPath != null) {
+ boolean removed = false;
+ for (Iterator<TreePath> it = oldSelection.iterator(); it.hasNext();) {
+ TreePath path = it.next();
+ if (path.startsWith(removedPath, null)) {
+ it.remove();
+ removed = true;
+ }
+ }
+ if (removed) {
+ setSelection(new TreeSelection(oldSelection.toArray(new TreePath[oldSelection.size()])), false);
+ }
+ }
+ });
}
@Override
@@ -551,15 +546,12 @@ public class InternalVirtualTreeModelViewer extends Viewer
private void validate() {
if (fValidateRunnable == null) {
- fValidateRunnable = new Runnable() {
- @Override
- public void run() {
- if (!fTree.isDisposed()) {
- fValidateRunnable = null;
- fTree.validate();
- }
- }
- };
+ fValidateRunnable = () -> {
+ if (!fTree.isDisposed()) {
+ fValidateRunnable = null;
+ fTree.validate();
+ }
+ };
getDisplay().asyncExec(fValidateRunnable);
}
}
@@ -630,54 +622,48 @@ public class InternalVirtualTreeModelViewer extends Viewer
@Override
public void setChildCount(final Object elementOrTreePath, final int count) {
- preservingSelection(new Runnable() {
- @Override
- public void run() {
- VirtualItem[] items = findItems(elementOrTreePath);
- for (int i = 0; i < items.length; i++) {
- VirtualItem[] children = items[i].getItems();
- for (int j = 0; j < children.length; j++) {
- if (children[j].getData() != null && children[j].getIndex().intValue() >= count) {
- disassociate(children[j]);
- }
- }
+ preservingSelection(() -> {
+ VirtualItem[] items = findItems(elementOrTreePath);
+ for (int i = 0; i < items.length; i++) {
+ VirtualItem[] children = items[i].getItems();
+ for (int j = 0; j < children.length; j++) {
+ if (children[j].getData() != null && children[j].getIndex().intValue() >= count) {
+ disassociate(children[j]);
+ }
+ }
- items[i].setItemCount(count);
- }
- }
- });
+ items[i].setItemCount(count);
+ }
+ });
validate();
}
@Override
public void setHasChildren(final Object elementOrTreePath, final boolean hasChildren) {
- preservingSelection(new Runnable() {
- @Override
- public void run() {
- VirtualItem[] items = findItems(elementOrTreePath);
- for (int i = 0; i < items.length; i++) {
- VirtualItem item = items[i];
-
- if (!hasChildren) {
- VirtualItem[] children = item.getItems();
- for (int j = 0; j < children.length; j++) {
- if (children[j].getData() != null) {
- disassociate(children[j]);
- }
- }
- }
-
- item.setHasItems(hasChildren);
- if (hasChildren) {
- if (!item.getExpanded()) {
- item.setItemCount(-1);
- } else {
- virtualLazyUpdateChildCount(item);
- }
- }
- }
- }
- });
+ preservingSelection(() -> {
+ VirtualItem[] items = findItems(elementOrTreePath);
+ for (int i = 0; i < items.length; i++) {
+ VirtualItem item = items[i];
+
+ if (!hasChildren) {
+ VirtualItem[] children = item.getItems();
+ for (int j = 0; j < children.length; j++) {
+ if (children[j].getData() != null) {
+ disassociate(children[j]);
+ }
+ }
+ }
+
+ item.setHasItems(hasChildren);
+ if (hasChildren) {
+ if (!item.getExpanded()) {
+ item.setItemCount(-1);
+ } else {
+ virtualLazyUpdateChildCount(item);
+ }
+ }
+ }
+ });
}
@Override
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TimeTriggeredProgressMonitorDialog.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TimeTriggeredProgressMonitorDialog.java
index 128101422..64e77ee96 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TimeTriggeredProgressMonitorDialog.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TimeTriggeredProgressMonitorDialog.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2010 IBM Corporation and others.
+ * Copyright (c) 2010, 2018 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -207,18 +207,15 @@ public class TimeTriggeredProgressMonitorDialog extends ProgressMonitorDialog {
InterruptedException {
final InvocationTargetException[] invokes = new InvocationTargetException[1];
final InterruptedException[] interrupt = new InterruptedException[1];
- Runnable dialogWaitRunnable = new Runnable() {
- @Override
- public void run() {
- try {
- TimeTriggeredProgressMonitorDialog.super.run(fork, cancelable, runnable);
- } catch (InvocationTargetException e) {
- invokes[0] = e;
- } catch (InterruptedException e) {
- interrupt[0]= e;
- }
- }
- };
+ Runnable dialogWaitRunnable = () -> {
+ try {
+ TimeTriggeredProgressMonitorDialog.super.run(fork, cancelable, runnable);
+ } catch (InvocationTargetException e1) {
+ invokes[0] = e1;
+ } catch (InterruptedException e2) {
+ interrupt[0] = e2;
+ }
+ };
final Display display = PlatformUI.getWorkbench().getDisplay();
if (display == null) {
return;
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelContentProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelContentProvider.java
index f37bfefbe..48ba3468d 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelContentProvider.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelContentProvider.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2016 IBM Corporation and others.
+ * Copyright (c) 2006, 2018 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -759,56 +759,54 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon
}
// Wait a single cycle to allow viewer to queue requests triggered by completed updates.
- getViewer().getDisplay().asyncExec(new Runnable() {
- @Override
- public void run() {
- if (isDisposed()) {
- return;
+ getViewer().getDisplay().asyncExec(() -> {
+ if (isDisposed()) {
+ return;
+ }
+
+ for (int i = 0; i < updates.size(); i++) {
+ ViewerUpdateMonitor update = updates.get(i);
+
+ // Search for update in list using identity test. Otherwise a completed canceled
+ // update may trigger removal of up-to-date running update on the same element.
+ List<ViewerUpdateMonitor> requests = fRequestsInProgress.get(update.getSchedulingPath());
+ boolean found = false;
+ if (requests != null) {
+ for (int j = 0; j < requests.size(); j++) {
+ if (requests.get(j) == update) {
+ found = true;
+ requests.remove(j);
+ break;
+ }
+ }
}
- for (int i = 0; i < updates.size(); i++) {
- ViewerUpdateMonitor update = updates.get(i);
-
- // Search for update in list using identity test. Otherwise a completed canceled
- // update may trigger removal of up-to-date running update on the same element.
- List<ViewerUpdateMonitor> requests = fRequestsInProgress.get(update.getSchedulingPath());
- boolean found = false;
- if (requests != null) {
- for (int j = 0; j < requests.size(); j++) {
- if (requests.get(j) == update) {
- found = true;
- requests.remove(j);
- break;
- }
- }
- }
-
- if (found) {
- // Trigger may initiate new updates, so wait to remove requests array from
- // fRequestsInProgress map. This way updateStarted() will not send a
- // redundant "UPDATE SEQUENCE STARTED" notification.
- trigger(update.getSchedulingPath());
- } else {
- // Update may be removed from in progress list if it was canceled by schedule().
- Assert.isTrue( update.isCanceled() );
- }
- if (requests != null && requests.isEmpty()) {
- fRequestsInProgress.remove(update.getSchedulingPath());
- }
- }
- if (fRequestsInProgress.isEmpty() && fWaitingRequests.isEmpty() && fModelSequenceRunning) {
- fModelSequenceRunning = false;
- if (fRevealPath != null) {
- getViewer().reveal(fRevealPath, fRevealIndex);
- fRevealPath = null;
- }
- if (DebugUIPlugin.DEBUG_UPDATE_SEQUENCE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) {
- DebugUIPlugin.trace("MODEL SEQUENCE ENDS"); //$NON-NLS-1$
- }
- notifyUpdate(UPDATE_SEQUENCE_COMPLETE, null);
- }
- }
- });
+ if (found) {
+ // Trigger may initiate new updates, so wait to remove requests array from
+ // fRequestsInProgress map. This way updateStarted() will not send a
+ // redundant "UPDATE SEQUENCE STARTED" notification.
+ trigger(update.getSchedulingPath());
+ } else {
+ // Update may be removed from in progress list if it was canceled by schedule().
+ Assert.isTrue(update.isCanceled());
+ }
+ if (requests != null && requests.isEmpty()) {
+ fRequestsInProgress.remove(update.getSchedulingPath());
+ }
+ }
+ if (fRequestsInProgress.isEmpty() && fWaitingRequests.isEmpty() && fModelSequenceRunning) {
+ fModelSequenceRunning = false;
+ if (fRevealPath != null) {
+ getViewer().reveal(fRevealPath, fRevealIndex);
+ fRevealPath = null;
+ }
+ if (DebugUIPlugin.DEBUG_UPDATE_SEQUENCE
+ && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(getPresentationContext())) {
+ DebugUIPlugin.trace("MODEL SEQUENCE ENDS"); //$NON-NLS-1$
+ }
+ notifyUpdate(UPDATE_SEQUENCE_COMPLETE, null);
+ }
+ });
}
@@ -931,15 +929,12 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon
}
}
if (inProgressList == null || inProgressList.isEmpty()) {
- getViewer().getDisplay().asyncExec(new Runnable() {
- @Override
- public void run() {
- if (isDisposed()) {
- return;
- }
- trigger(update.getSchedulingPath());
- }
- });
+ getViewer().getDisplay().asyncExec(() -> {
+ if (isDisposed()) {
+ return;
+ }
+ trigger(update.getSchedulingPath());
+ });
}
} else {
// there are waiting requests: coalesce with existing request and add to list
@@ -1776,14 +1771,11 @@ public class TreeModelContentProvider implements ITreeModelContentProvider, ICon
display = getViewer().getDisplay();
fCompletedUpdates.add(update);
if (fCompletedUpdatesRunnable == null) {
- fCompletedUpdatesRunnable = new Runnable() {
- @Override
- public void run() {
- if (!isDisposed()) {
- performUpdates();
- }
- }
- };
+ fCompletedUpdatesRunnable = () -> {
+ if (!isDisposed()) {
+ performUpdates();
+ }
+ };
updateJob = fCompletedUpdatesRunnable;
}
}
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelLabelProvider.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelLabelProvider.java
index 19d2b3eb2..8d4f747fd 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelLabelProvider.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/TreeModelLabelProvider.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2006, 2016 IBM Corporation and others.
+ * Copyright (c) 2006, 2018 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -399,24 +399,21 @@ public class TreeModelLabelProvider extends ColumnLabelProvider
if (fComplete == null) {
fComplete = new LinkedList<>();
- fViewer.getDisplay().asyncExec(new Runnable() {
- @Override
- public void run() {
- if (isDisposed()) {
- return;
+ fViewer.getDisplay().asyncExec(() -> {
+ if (isDisposed()) {
+ return;
+ }
+ List<ILabelUpdate> updates = null;
+ synchronized (TreeModelLabelProvider.this) {
+ updates = fComplete;
+ fComplete = null;
+ }
+ for (ILabelUpdate itrUpdate : updates) {
+ if (itrUpdate.isCanceled()) {
+ updateComplete(itrUpdate);
+ } else {
+ ((LabelUpdate) itrUpdate).performUpdate();
}
- List<ILabelUpdate> updates = null;
- synchronized (TreeModelLabelProvider.this) {
- updates = fComplete;
- fComplete = null;
- }
- for (ILabelUpdate itrUpdate : updates) {
- if (itrUpdate.isCanceled()) {
- updateComplete(itrUpdate);
- } else {
- ((LabelUpdate) itrUpdate).performUpdate();
- }
- }
}
});
}
diff --git a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ViewerStateTracker.java b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ViewerStateTracker.java
index 1423e60b3..6a2b8db9b 100644
--- a/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ViewerStateTracker.java
+++ b/org.eclipse.debug.ui/ui/org/eclipse/debug/internal/ui/viewers/model/ViewerStateTracker.java
@@ -1,5 +1,5 @@
/*******************************************************************************
- * Copyright (c) 2011, 2016 Wind River Systems and others.
+ * Copyright (c) 2011, 2018 Wind River Systems and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
@@ -285,28 +285,30 @@ class ViewerStateTracker {
// Process start of restore in an async cycle because we may still be inside inputChanged()
// call. I.e. the "input.equals(fContentProvider.getViewer().getInput())" test may fail.
- fContentProvider.getViewer().getDisplay().asyncExec(new Runnable() {
- @Override
- public void run() {
- if (!fContentProvider.isDisposed() && input.equals(fContentProvider.getViewer().getInput())) {
- ModelDelta stateDelta2 = fViewerStates.remove(keyMementoString);
- if (stateDelta2 != null) {
- if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) {
- DebugUIPlugin.trace("STATE RESTORE BEGINS"); //$NON-NLS-1$
- DebugUIPlugin.trace("\tRESTORE: " + stateDelta2.toString()); //$NON-NLS-1$
- notifyStateUpdate(input, STATE_RESTORE_SEQUENCE_BEGINS, null);
- }
- stateDelta2.setElement(input);
- fPendingState = stateDelta2;
- doInitialRestore(fPendingState);
- }
- } else {
- if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) {
- DebugUIPlugin.trace("STATE RESTORE CANCELED."); //$NON-NLS-1$
- }
- }
- }
- });
+ fContentProvider.getViewer().getDisplay().asyncExec(() -> {
+ if (!fContentProvider.isDisposed()
+ && input.equals(fContentProvider.getViewer().getInput())) {
+ ModelDelta stateDelta2 = fViewerStates.remove(keyMementoString);
+ if (stateDelta2 != null) {
+ if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE
+ && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(
+ fContentProvider.getPresentationContext())) {
+ DebugUIPlugin.trace("STATE RESTORE BEGINS"); //$NON-NLS-1$
+ DebugUIPlugin.trace("\tRESTORE: " + stateDelta2.toString()); //$NON-NLS-1$
+ notifyStateUpdate(input, STATE_RESTORE_SEQUENCE_BEGINS, null);
+ }
+ stateDelta2.setElement(input);
+ fPendingState = stateDelta2;
+ doInitialRestore(fPendingState);
+ }
+ } else {
+ if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE
+ && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(
+ fContentProvider.getPresentationContext())) {
+ DebugUIPlugin.trace("STATE RESTORE CANCELED."); //$NON-NLS-1$
+ }
+ }
+ });
} else {
if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) {
DebugUIPlugin.trace("STATE RESTORE INPUT COMARE ENDED : " + fRequest + " - NO MATCHING STATE"); //$NON-NLS-1$ //$NON-NLS-2$
@@ -402,15 +404,12 @@ class ViewerStateTracker {
// EXPAND node. These
// markers are used by the restore logic to know when a delta node can
// be removed.
- delta.accept(new IModelDeltaVisitor() {
- @Override
- public boolean visit(IModelDelta d, int depth) {
- if ((d.getFlags() & IModelDelta.EXPAND) != 0) {
- ((ModelDelta) d).setFlags(d.getFlags() | IModelDelta.CONTENT);
- }
- return true;
- }
- });
+ delta.accept((d, depth) -> {
+ if ((d.getFlags() & IModelDelta.EXPAND) != 0) {
+ ((ModelDelta) d).setFlags(d.getFlags() | IModelDelta.CONTENT);
+ }
+ return true;
+ });
if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) {
DebugUIPlugin.trace("\tAPPEND DELTA: " + appendDeltaRoot); //$NON-NLS-1$
@@ -427,66 +426,57 @@ class ViewerStateTracker {
// If the append delta is generated for a sub-tree, copy the pending delta
// attributes into the pending delta.
if (path.getSegmentCount() > 0) {
- fPendingState.accept( new IModelDeltaVisitor() {
- @Override
- public boolean visit(IModelDelta pendingDeltaNode, int depth) {
- TreePath pendingDeltaPath = fContentProvider.getViewerTreePath(pendingDeltaNode);
- if (path.startsWith(pendingDeltaPath, null))
- {
- ModelDelta appendDelta = findDeltaForPath(appendDeltaRoot, pendingDeltaPath);
- appendDelta.setFlags(pendingDeltaNode.getFlags());
- appendDelta.setChildCount(pendingDeltaNode.getChildCount());
- appendDelta.setIndex(pendingDeltaNode.getIndex());
- return true;
- }
- return false;
- }
- });
+ fPendingState.accept((pendingDeltaNode, depth) -> {
+ TreePath pendingDeltaPath = fContentProvider.getViewerTreePath(pendingDeltaNode);
+ if (path.startsWith(pendingDeltaPath, null)) {
+ ModelDelta appendDelta = findDeltaForPath(appendDeltaRoot, pendingDeltaPath);
+ appendDelta.setFlags(pendingDeltaNode.getFlags());
+ appendDelta.setChildCount(pendingDeltaNode.getChildCount());
+ appendDelta.setIndex(pendingDeltaNode.getIndex());
+ return true;
+ }
+ return false;
+ });
}
// Copy the pending state into the new appended state.
- fPendingState.accept( new IModelDeltaVisitor() {
- @Override
- public boolean visit(IModelDelta pendingDeltaNode, int depth) {
- // Skip the top element
- if (pendingDeltaNode.getParentDelta() == null) {
- return true;
- }
-
- // Find the node in the save delta which is the parent
- // of to the current pending delta node.
- // If the parent node cannot be found, it means that
- // most likely the user collapsed the parent node before
- // the children were ever expanded.
- // If the pending state node already exists in the parent
- // node, it is already processed and we can skip it.
- // If the pending state node does not contain any flags,
- // we can also skip it.
- ModelDelta saveDeltaNode = findSubDeltaParent(appendDeltaRoot, pendingDeltaNode);
- if (saveDeltaNode != null &&
- !isDeltaInParent(pendingDeltaNode, saveDeltaNode) &&
- pendingDeltaNode.getFlags() != IModelDelta.NO_CHANGE)
- {
- saveDeltaNode.setChildCount(pendingDeltaNode.getParentDelta().getChildCount());
- copyIntoDelta(pendingDeltaNode, saveDeltaNode);
- } else {
- if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) {
- DebugUIPlugin.trace("\tSKIPPED: " + pendingDeltaNode.getElement()); //$NON-NLS-1$
- }
- }
-
- // If the pending delta node has a memento element, its
- // children should also be mementos therefore the copy
- // delta operation should have added all the children
- // of this pending delta node into the save delta.
- if (pendingDeltaNode.getElement() instanceof IMemento) {
- return false;
- } else {
- return pendingDeltaNode.getChildCount() > 0;
- }
- }
-
- });
+ fPendingState.accept((pendingDeltaNode, depth) -> {
+ // Skip the top element
+ if (pendingDeltaNode.getParentDelta() == null) {
+ return true;
+ }
+
+ // Find the node in the save delta which is the parent
+ // of to the current pending delta node.
+ // If the parent node cannot be found, it means that
+ // most likely the user collapsed the parent node before
+ // the children were ever expanded.
+ // If the pending state node already exists in the parent
+ // node, it is already processed and we can skip it.
+ // If the pending state node does not contain any flags,
+ // we can also skip it.
+ ModelDelta saveDeltaNode = findSubDeltaParent(appendDeltaRoot, pendingDeltaNode);
+ if (saveDeltaNode != null && !isDeltaInParent(pendingDeltaNode, saveDeltaNode)
+ && pendingDeltaNode.getFlags() != IModelDelta.NO_CHANGE) {
+ saveDeltaNode.setChildCount(pendingDeltaNode.getParentDelta().getChildCount());
+ copyIntoDelta(pendingDeltaNode, saveDeltaNode);
+ } else {
+ if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE
+ && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) {
+ DebugUIPlugin.trace("\tSKIPPED: " + pendingDeltaNode.getElement()); //$NON-NLS-1$
+ }
+ }
+
+ // If the pending delta node has a memento element, its
+ // children should also be mementos therefore the copy
+ // delta operation should have added all the children
+ // of this pending delta node into the save delta.
+ if (pendingDeltaNode.getElement() instanceof IMemento) {
+ return false;
+ } else {
+ return pendingDeltaNode.getChildCount() > 0;
+ }
+ });
}
if (appendDeltaRoot.getChildDeltas().length > 0) {
@@ -562,55 +552,53 @@ class ViewerStateTracker {
DebugUIPlugin.trace("\tSAVE OUTSTANDING RESTORE: " + fPendingState); //$NON-NLS-1$
}
- IModelDeltaVisitor pendingStateVisitor = new IModelDeltaVisitor() {
- @Override
- public boolean visit(IModelDelta pendingDeltaNode, int depth) {
- // Ignore the top element.
- if (pendingDeltaNode.getParentDelta() == null) {
- return true;
- }
+ IModelDeltaVisitor pendingStateVisitor = (pendingDeltaNode, depth) -> {
+ // Ignore the top element.
+ if (pendingDeltaNode.getParentDelta() == null) {
+ return true;
+ }
- // Find the node in the save delta which is the parent
- // of to the current pending delta node.
- // If the parent node cannot be found, it means that
- // most likely the user collapsed the parent node before
- // the children were ever expanded.
- // If the pending state node already exists in the
- // parent
- // node, it is already processed and we can skip it.
- // If the pending state node does not contain any flags,
- // we can also skip it.
- ModelDelta saveDeltaNode = findSubDeltaParent(saveDeltaRoot, pendingDeltaNode);
- if (saveDeltaNode != null && !isDeltaInParent(pendingDeltaNode, saveDeltaNode)
- && pendingDeltaNode.getFlags() != IModelDelta.NO_CHANGE) {
- // There should be only one delta element with
- // the REVEAL flag in the entire save delta. The
- // reveal flag in the pending delta trumps the one
- // in the save delta because most likely the restore
- // operation did not yet complete the reveal
- // operation.
- if ((pendingDeltaNode.getFlags() & IModelDelta.REVEAL) != 0) {
- clearRevealFlag(saveDeltaRoot);
- }
- saveDeltaNode.setChildCount(pendingDeltaNode.getParentDelta().getChildCount());
- copyIntoDelta(pendingDeltaNode, saveDeltaNode);
- } else {
- if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) {
- DebugUIPlugin.trace("\tSKIPPED: " + pendingDeltaNode.getElement()); //$NON-NLS-1$
- }
- }
+ // Find the node in the save delta which is the parent
+ // of to the current pending delta node.
+ // If the parent node cannot be found, it means that
+ // most likely the user collapsed the parent node before
+ // the children were ever expanded.
+ // If the pending state node already exists in the
+ // parent
+ // node, it is already processed and we can skip it.
+ // If the pending state node does not contain any flags,
+ // we can also skip it.
+ ModelDelta saveDeltaNode = findSubDeltaParent(saveDeltaRoot, pendingDeltaNode);
+ if (saveDeltaNode != null && !isDeltaInParent(pendingDeltaNode, saveDeltaNode)
+ && pendingDeltaNode.getFlags() != IModelDelta.NO_CHANGE) {
+ // There should be only one delta element with
+ // the REVEAL flag in the entire save delta. The
+ // reveal flag in the pending delta trumps the one
+ // in the save delta because most likely the restore
+ // operation did not yet complete the reveal
+ // operation.
+ if ((pendingDeltaNode.getFlags() & IModelDelta.REVEAL) != 0) {
+ clearRevealFlag(saveDeltaRoot);
+ }
+ saveDeltaNode.setChildCount(pendingDeltaNode.getParentDelta().getChildCount());
+ copyIntoDelta(pendingDeltaNode, saveDeltaNode);
+ } else {
+ if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin
+ .DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) {
+ DebugUIPlugin.trace("\tSKIPPED: " + pendingDeltaNode.getElement()); //$NON-NLS-1$
+ }
+ }
- // If the pending delta node has a memento element, its
- // children should also be mementos therefore the copy
- // delta operation should have added all the children
- // of this pending delta node into the save delta.
- if (pendingDeltaNode.getElement() instanceof IMemento) {
- return false;
- } else {
- return pendingDeltaNode.getChildCount() > 0;
- }
- }
- };
+ // If the pending delta node has a memento element, its
+ // children should also be mementos therefore the copy
+ // delta operation should have added all the children
+ // of this pending delta node into the save delta.
+ if (pendingDeltaNode.getElement() instanceof IMemento) {
+ return false;
+ } else {
+ return pendingDeltaNode.getChildCount() > 0;
+ }
+ };
fPendingState.accept(pendingStateVisitor);
}
@@ -627,15 +615,12 @@ class ViewerStateTracker {
}
private void clearRevealFlag(ModelDelta saveRootDelta) {
- IModelDeltaVisitor clearDeltaVisitor = new IModelDeltaVisitor() {
- @Override
- public boolean visit(IModelDelta delta, int depth) {
- if ((delta.getFlags() & IModelDelta.REVEAL) != 0) {
- ((ModelDelta) delta).setFlags(delta.getFlags() & ~IModelDelta.REVEAL);
- }
- return true;
- }
- };
+ IModelDeltaVisitor clearDeltaVisitor = (delta, depth) -> {
+ if ((delta.getFlags() & IModelDelta.REVEAL) != 0) {
+ ((ModelDelta) delta).setFlags(delta.getFlags() & ~IModelDelta.REVEAL);
+ }
+ return true;
+ };
saveRootDelta.accept(clearDeltaVisitor);
}
@@ -817,33 +802,29 @@ class ViewerStateTracker {
}
};
- IModelDeltaVisitor visitor = new IModelDeltaVisitor() {
- @Override
- public boolean visit(IModelDelta delta, int depth) {
- // Add the CONTENT flag to all nodes with an EXPAND flag.
- // During restoring, this flag is used as a marker indicating
- // whether all the content of a given element has been
- // retrieved.
- if ((delta.getFlags() | IModelDelta.EXPAND) != 0) {
- ((ModelDelta)delta).setFlags(delta.getFlags() | IModelDelta.CONTENT);
- }
+ IModelDeltaVisitor visitor = (delta, depth) -> {
+ // Add the CONTENT flag to all nodes with an EXPAND flag.
+ // During restoring, this flag is used as a marker indicating
+ // whether all the content of a given element has been
+ // retrieved.
+ if ((delta.getFlags() | IModelDelta.EXPAND) != 0) {
+ ((ModelDelta) delta).setFlags(delta.getFlags() | IModelDelta.CONTENT);
+ }
- // This is the root element, save the root element memento in 'inputMemento'.
- if (delta.getParentDelta() == null) {
- manager.addRequest(new ElementMementoRequest(fContentProvider, input, manager,
- delta.getElement(), fContentProvider.getViewerTreePath(delta), inputMemento,
- (ModelDelta) delta));
- } else {
- // If this is another node element, save the memento to a children memento.
- if (!(delta.getElement() instanceof XMLMemento)) {
- manager.addRequest(new ElementMementoRequest(fContentProvider, input, manager,
- delta.getElement(), fContentProvider.getViewerTreePath(delta), childrenMemento
- .createChild("CHILD_ELEMENT"), (ModelDelta) delta)); //$NON-NLS-1$
- }
- }
- return true;
- }
- };
+ // This is the root element, save the root element memento in 'inputMemento'.
+ if (delta.getParentDelta() == null) {
+ manager.addRequest(new ElementMementoRequest(fContentProvider, input, manager, delta.getElement(),
+ fContentProvider.getViewerTreePath(delta), inputMemento, (ModelDelta) delta));
+ } else {
+ // If this is another node element, save the memento to a children memento.
+ if (!(delta.getElement() instanceof XMLMemento)) {
+ manager.addRequest(new ElementMementoRequest(fContentProvider, input, manager, delta.getElement(),
+ fContentProvider.getViewerTreePath(delta), childrenMemento.createChild("CHILD_ELEMENT"), //$NON-NLS-1$
+ (ModelDelta) delta));
+ }
+ }
+ return true;
+ };
rootDelta.accept(visitor);
stateSaveStarted(input, manager);
manager.processReqeusts();
@@ -932,67 +913,66 @@ class ViewerStateTracker {
// If we're canceling select or reveal, cancel it for all of pending deltas
final int mask = flags & (IModelDelta.SELECT | IModelDelta.REVEAL);
- fPendingState.accept(new IModelDeltaVisitor() {
- @Override
- public boolean visit(IModelDelta delta, int depth) {
- int deltaFlags = delta.getFlags();
- int newFlags = deltaFlags & ~mask;
- if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) {
- if (deltaFlags != newFlags) {
- DebugUIPlugin.trace("\tCANCEL: " + delta.getElement() + "(" + Integer.toHexString(deltaFlags & mask) + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
- }
- ((ModelDelta)delta).setFlags(newFlags);
- return true;
- }
- });
+ fPendingState.accept((delta, depth) -> {
+ int deltaFlags = delta.getFlags();
+ int newFlags = deltaFlags & ~mask;
+ if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE
+ && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) {
+ if (deltaFlags != newFlags) {
+ DebugUIPlugin.trace(
+ "\tCANCEL: " + delta.getElement() + "(" + Integer.toHexString(deltaFlags & mask) + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
+ }
+ }
+ ((ModelDelta) delta).setFlags(newFlags);
+ return true;
+ });
}
if ((flags & ~(IModelDelta.SELECT | IModelDelta.REVEAL)) != 0) {
final int mask = flags & ~(IModelDelta.SELECT | IModelDelta.REVEAL);
// For other flags (EXPAND/COLLAPSE), cancel only from the matching path.
- fPendingState.accept(new IModelDeltaVisitor() {
- @Override
- public boolean visit(IModelDelta delta, int depth) {
- if (depth < path.getSegmentCount()) {
- // Descend until we reach a matching depth.
- TreePath deltaPath = fContentProvider.getViewerTreePath(delta);
- if (path.startsWith(deltaPath, null)) {
- return true;
- } else {
- return false;
- }
- }
- else if (depth == path.getSegmentCount()) {
- TreePath deltaPath = fContentProvider.getViewerTreePath(delta);
- if (deltaPath.equals(path)) {
- int deltaFlags = delta.getFlags();
- int newFlags = deltaFlags & ~mask;
- if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) {
- if (deltaFlags != newFlags) {
- DebugUIPlugin.trace("\tCANCEL: " + delta.getElement() + "(" + Integer.toHexString(deltaFlags & mask) + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
- }
- ((ModelDelta)delta).setFlags(newFlags);
- if ((flags & IModelDelta.EXPAND) != 0) {
- // Descend delta to clear the EXPAND flags of a canceled expand
- return true;
- }
- }
- return false;
- } else {
- // We're clearing out flags of a matching sub-tree
- // assert (flags & IModelDelta.EXPAND) != 0;
-
- if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) {
- if (delta.getFlags() != IModelDelta.NO_CHANGE) {
- DebugUIPlugin.trace("\tCANCEL: " + delta.getElement() + "(" + Integer.toHexString(delta.getFlags()) + ")"); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$
- }
- }
- ((ModelDelta)delta).setFlags(IModelDelta.NO_CHANGE);
- return true;
- }
- }
- });
+ fPendingState.accept((delta, depth) -> {
+ if (depth < path.getSegmentCount()) {
+ // Descend until we reach a matching depth.
+ TreePath deltaPath1 = fContentProvider.getViewerTreePath(delta);
+ if (path.startsWith(deltaPath1, null)) {
+ return true;
+ } else {
+ return false;
+ }
+ } else if (depth == path.getSegmentCount()) {
+ TreePath deltaPath2 = fContentProvider.getViewerTreePath(delta);
+ if (deltaPath2.equals(path)) {
+ int deltaFlags = delta.getFlags();
+ int newFlags = deltaFlags & ~mask;
+ if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin
+ .DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) {
+ if (deltaFlags != newFlags) {
+ DebugUIPlugin.trace("\tCANCEL: " + delta.getElement() + "(" //$NON-NLS-1$ //$NON-NLS-2$
+ + Integer.toHexString(deltaFlags & mask) + ")"); //$NON-NLS-1$
+ }
+ }
+ ((ModelDelta) delta).setFlags(newFlags);
+ if ((flags & IModelDelta.EXPAND) != 0) {
+ // Descend delta to clear the EXPAND flags of a canceled expand
+ return true;
+ }
+ }
+ return false;
+ } else {
+ // We're clearing out flags of a matching sub-tree
+ // assert (flags & IModelDelta.EXPAND) != 0;
+
+ if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE
+ && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) {
+ if (delta.getFlags() != IModelDelta.NO_CHANGE) {
+ DebugUIPlugin.trace("\tCANCEL: " + delta.getElement() + "(" //$NON-NLS-1$ //$NON-NLS-2$
+ + Integer.toHexString(delta.getFlags()) + ")"); //$NON-NLS-1$
+ }
+ }
+ ((ModelDelta) delta).setFlags(IModelDelta.NO_CHANGE);
+ return true;
+ }
+ });
}
}
@@ -1018,56 +998,54 @@ class ViewerStateTracker {
return;
}
- IModelDeltaVisitor visitor = new IModelDeltaVisitor() {
- @Override
- public boolean visit(final IModelDelta delta, int depth) {
-
- Object element = delta.getElement();
- Object potentialMatch = depth != 0 ? path.getSegment(depth - 1) : fContentProvider.getViewer().getInput();
- // Only process if the depth in the delta matches the tree path.
- if (depth == path.getSegmentCount()) {
- if (element instanceof IMemento) {
- IElementMementoProvider provider = ViewerAdapterService.getMementoProvider(potentialMatch);
- if (provider == null) {
- provider = ViewerAdapterService.getMementoProvider(fContentProvider.getViewer().getInput());
- }
- if (provider != null) {
- CompareRequestKey key = new CompareRequestKey(path, delta);
- ElementCompareRequest existingRequest = fCompareRequestsInProgress
- .get(key);
- if (existingRequest != null) {
- // Check all the running compare updates for a
- // matching tree path.
- // If found, just update the flags.
- existingRequest.setKnowsHasChildren(knowsHasChildren);
- existingRequest.setKnowsChildCount(knowsChildCount);
- existingRequest.setCheckChildrenRealized(checkChildrenRealized);
- } else {
- // Start a new compare request
- ElementCompareRequest compareRequest = new ElementCompareRequest(
- fContentProvider, fContentProvider.getViewer().getInput(), potentialMatch, path,
- (IMemento) element, (ModelDelta) delta, modelIndex, knowsHasChildren,
- knowsChildCount, checkChildrenRealized);
- fCompareRequestsInProgress.put(key, compareRequest);
- if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin.DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) {
- DebugUIPlugin.trace("\tSTATE BEGIN: " + compareRequest); //$NON-NLS-1$
- }
- notifyStateUpdate(element, TreeModelContentProvider.UPDATE_BEGINS, compareRequest);
- provider.compareElements(new IElementCompareRequest[] { compareRequest });
- }
- }
- } else if (element.equals(potentialMatch)) {
- // Element comparison already succeeded, and it matches
- // our element.
- // Call restore with delta to process the delta flags.
- restorePendingStateNode((ModelDelta) delta, knowsHasChildren, knowsChildCount, checkChildrenRealized);
- }
- return false;
- }
- // Only follow the paths that match the delta.
- return element.equals(potentialMatch);
- }
- };
+ IModelDeltaVisitor visitor = (delta, depth) -> {
+
+ Object element = delta.getElement();
+ Object potentialMatch = depth != 0 ? path.getSegment(depth - 1) : fContentProvider.getViewer().getInput();
+ // Only process if the depth in the delta matches the tree path.
+ if (depth == path.getSegmentCount()) {
+ if (element instanceof IMemento) {
+ IElementMementoProvider provider = ViewerAdapterService.getMementoProvider(potentialMatch);
+ if (provider == null) {
+ provider = ViewerAdapterService.getMementoProvider(fContentProvider.getViewer().getInput());
+ }
+ if (provider != null) {
+ CompareRequestKey key = new CompareRequestKey(path, delta);
+ ElementCompareRequest existingRequest = fCompareRequestsInProgress.get(key);
+ if (existingRequest != null) {
+ // Check all the running compare updates for a
+ // matching tree path.
+ // If found, just update the flags.
+ existingRequest.setKnowsHasChildren(knowsHasChildren);
+ existingRequest.setKnowsChildCount(knowsChildCount);
+ existingRequest.setCheckChildrenRealized(checkChildrenRealized);
+ } else {
+ // Start a new compare request
+ ElementCompareRequest compareRequest = new ElementCompareRequest(fContentProvider,
+ fContentProvider.getViewer().getInput(), potentialMatch, path, (IMemento) element,
+ (ModelDelta) delta, modelIndex, knowsHasChildren, knowsChildCount,
+ checkChildrenRealized);
+ fCompareRequestsInProgress.put(key, compareRequest);
+ if (DebugUIPlugin.DEBUG_STATE_SAVE_RESTORE && DebugUIPlugin
+ .DEBUG_TEST_PRESENTATION_ID(fContentProvider.getPresentationContext())) {
+ DebugUIPlugin.trace("\tSTATE BEGIN: " + compareRequest); //$NON-NLS-1$
+ }
+ notifyStateUpdate(element, TreeModelContentProvider.UPDATE_BEGINS, compareRequest);
+ provider.compareElements(new IElementCompareRequest[] { compareRequest });
+ }
+ }
+ } else if (element.equals(potentialMatch)) {
+ // Element comparison already succeeded, and it matches
+ // our element.
+ // Call restore with delta to process the delta flags.
+ restorePendingStateNode((ModelDelta) delta, knowsHasChildren, knowsChildCount,
+ checkChildrenRealized);
+ }
+ return false;
+ }
+ // Only follow the paths that match the delta.
+ return element.equals(potentialMatch);
+ };
try {
fInStateRestore = true;
@@ -1153,15 +1131,12 @@ class ViewerStateTracker {
DebugUIPlugin.trace("\tRESTORE REMOVED: " + delta.getElement()); //$NON-NLS-1$
}
- delta.accept(new IModelDeltaVisitor() {
- @Override
- public boolean visit(IModelDelta _visitorDelta, int depth) {
- ModelDelta visitorDelta = (ModelDelta) _visitorDelta;
- visitorDelta.setElement(ELEMENT_REMOVED);
- visitorDelta.setFlags(IModelDelta.NO_CHANGE);
- return true;
- }
- });
+ delta.accept((_visitorDelta, depth) -> {
+ ModelDelta visitorDelta = (ModelDelta) _visitorDelta;
+ visitorDelta.setElement(ELEMENT_REMOVED);
+ visitorDelta.setFlags(IModelDelta.NO_CHANGE);
+ return true;
+ });
}
}
@@ -1442,16 +1417,13 @@ class ViewerStateTracker {
*/
private ModelDelta markRevealDelta(ModelDelta rootDelta) {
final ModelDelta[] revealDelta = new ModelDelta[1];
- IModelDeltaVisitor visitor = new IModelDeltaVisitor() {
- @Override
- public boolean visit(IModelDelta delta, int depth) {
- if ( (delta.getFlags() & IModelDelta.REVEAL) != 0) {
- revealDelta[0] = (ModelDelta)delta;
- }
- // Keep recursing only if we haven't found our delta yet.
- return revealDelta[0] == null;
- }
- };
+ IModelDeltaVisitor visitor = (delta, depth) -> {
+ if ((delta.getFlags() & IModelDelta.REVEAL) != 0) {
+ revealDelta[0] = (ModelDelta) delta;
+ }
+ // Keep recursing only if we haven't found our delta yet.
+ return revealDelta[0] == null;
+ };
rootDelta.accept(visitor);
if (revealDelta[0] != null) {

Back to the top