diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/quick/XDebuggerInstanceTreeCreator.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/quick/XDebuggerInstanceTreeCreator.java index 49eb3845c505..496e8ea983db 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/quick/XDebuggerInstanceTreeCreator.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/quick/XDebuggerInstanceTreeCreator.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -58,12 +58,7 @@ public class XDebuggerInstanceTreeCreator implements DebuggerTreeCreator visibleRootCondition = new Condition() { - @Override - public boolean value(TreeNode node) { - return node.getParent() == root; - } - }; + Condition visibleRootCondition = node -> node.getParent() == root; tree.expandNodesOnLoad(visibleRootCondition); tree.selectNodeOnLoad(visibleRootCondition); diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/quick/XDebuggerTreeCreator.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/quick/XDebuggerTreeCreator.java index 14799efb59db..a9f39a6d92ab 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/quick/XDebuggerTreeCreator.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/evaluate/quick/XDebuggerTreeCreator.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -17,7 +17,6 @@ package com.intellij.xdebugger.impl.evaluate.quick; import com.intellij.concurrency.ResultConsumer; import com.intellij.openapi.project.Project; -import com.intellij.openapi.util.Condition; import com.intellij.openapi.util.Pair; import com.intellij.ui.treeStructure.Tree; import com.intellij.xdebugger.XSourcePosition; @@ -30,8 +29,6 @@ import com.intellij.xdebugger.impl.ui.tree.XDebuggerTree; import com.intellij.xdebugger.impl.ui.tree.nodes.XValueNodeImpl; import org.jetbrains.annotations.NotNull; -import javax.swing.tree.TreeNode; - public class XDebuggerTreeCreator implements DebuggerTreeCreator> { @NotNull private final Project myProject; private final XDebuggerEditorsProvider myProvider; @@ -54,12 +51,7 @@ public class XDebuggerTreeCreator implements DebuggerTreeCreator() { - @Override - public boolean value(TreeNode node) { - return node == root; - } - }); + tree.expandNodesOnLoad(node -> node == root); return tree; } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/frame/XWatchesViewImpl.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/frame/XWatchesViewImpl.java index 608c71d08e66..1386f7750f93 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/frame/XWatchesViewImpl.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/frame/XWatchesViewImpl.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -386,22 +386,20 @@ public class XWatchesViewImpl extends XVariablesView implements DnDNativeTarget, public void removeWatches(List nodes) { List children = myRootNode.getWatchChildren(); int minIndex = Integer.MAX_VALUE; - List toRemove = new ArrayList(); - if (children != null) { - for (XDebuggerTreeNode node : nodes) { - @SuppressWarnings("SuspiciousMethodCalls") - int index = children.indexOf(node); - if (index != -1) { - toRemove.add(node); - minIndex = Math.min(minIndex, index); - } + List toRemove = new ArrayList<>(); + for (XDebuggerTreeNode node : nodes) { + @SuppressWarnings("SuspiciousMethodCalls") + int index = children.indexOf(node); + if (index != -1) { + toRemove.add(node); + minIndex = Math.min(minIndex, index); } } myRootNode.removeChildren(toRemove); List newChildren = myRootNode.getWatchChildren(); - if (newChildren != null && !newChildren.isEmpty()) { - WatchNode node = minIndex < newChildren.size() ? newChildren.get(minIndex) : newChildren.get(newChildren.size() - 1); + if (!newChildren.isEmpty()) { + WatchNode node = newChildren.get(Math.min(minIndex, newChildren.size() - 1)); TreeUtil.selectNode(getTree(), node); } updateSessionData(); diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/XDebuggerTree.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/XDebuggerTree.java index bfdb5a7b45f8..08360d67d2aa 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/XDebuggerTree.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/XDebuggerTree.java @@ -364,12 +364,7 @@ public class XDebuggerTree extends DnDAwareTree implements DataProvider, Disposa private static void markNodesObsolete(final XValueContainerNode node) { node.setObsolete(); - List> loadedChildren = node.getLoadedChildren(); - if (loadedChildren != null) { - for (XValueContainerNode child : loadedChildren) { - markNodesObsolete(child); - } - } + node.getLoadedChildren().forEach(XDebuggerTree::markNodesObsolete); } @Nullable diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/XDebuggerTreeRestorer.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/XDebuggerTreeRestorer.java index 1796deaa41be..c041f186c012 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/XDebuggerTreeRestorer.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/XDebuggerTreeRestorer.java @@ -36,8 +36,8 @@ import java.util.Map; public class XDebuggerTreeRestorer implements XDebuggerTreeListener, TreeSelectionListener { private final XDebuggerTree myTree; private final Rectangle myLastVisibleNodeRect; - private final Map myNode2State = new HashMap(); - private final Map myNode2ParentState = new HashMap(); + private final Map myNode2State = new HashMap<>(); + private final Map myNode2ParentState = new HashMap<>(); private boolean myStopRestoringSelection; private boolean myInsideRestoring; @@ -51,12 +51,7 @@ public class XDebuggerTreeRestorer implements XDebuggerTreeListener, TreeSelecti private void restoreChildren(final XDebuggerTreeNode treeNode, final XDebuggerTreeState.NodeInfo nodeInfo) { if (nodeInfo.isExpanded()) { myTree.expandPath(treeNode.getPath()); - List children = treeNode.getLoadedChildren(); - if (children != null) { - for (XDebuggerTreeNode child : children) { - restoreNode(child, nodeInfo); - } - } + treeNode.getLoadedChildren().forEach(child -> restoreNode(child, nodeInfo)); myNode2State.put(treeNode, nodeInfo); } } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/XDebuggerTreeState.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/XDebuggerTreeState.java index 4a1c1f154570..e83b624744a9 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/XDebuggerTreeState.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/XDebuggerTreeState.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -61,24 +61,22 @@ public class XDebuggerTreeState { private void addChildren(final XDebuggerTree tree, final NodeInfo nodeInfo, final XDebuggerTreeNode treeNode) { if (tree.isExpanded(treeNode.getPath())) { List children = treeNode.getLoadedChildren(); - if (children != null) { - nodeInfo.myExpanded = true; - for (XDebuggerTreeNode child : children) { - final TreePath path = child.getPath(); - final Rectangle bounds = tree.getPathBounds(path); - if (bounds != null) { - Rectangle treeVisibleRect = - tree.getParent() instanceof JViewport ? ((JViewport)tree.getParent()).getViewRect() : tree.getVisibleRect(); - if (treeVisibleRect.contains(bounds)) { - myLastVisibleNodeRect = bounds; - } - } - NodeInfo childInfo = createNode(child, tree.isPathSelected(path)); - if (childInfo != null) { - nodeInfo.addChild(childInfo); - addChildren(tree, childInfo, child); + nodeInfo.myExpanded = true; + for (XDebuggerTreeNode child : children) { + TreePath path = child.getPath(); + Rectangle bounds = tree.getPathBounds(path); + if (bounds != null) { + Rectangle treeVisibleRect = + tree.getParent() instanceof JViewport ? ((JViewport)tree.getParent()).getViewRect() : tree.getVisibleRect(); + if (treeVisibleRect.contains(bounds)) { + myLastVisibleNodeRect = bounds; } } + NodeInfo childInfo = createNode(child, tree.isPathSelected(path)); + if (childInfo != null) { + nodeInfo.addChild(childInfo); + addChildren(tree, childInfo, child); + } } } } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/MessageTreeNode.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/MessageTreeNode.java index 3197ad8b6417..4763046910e3 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/MessageTreeNode.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/MessageTreeNode.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -84,9 +84,10 @@ public class MessageTreeNode extends XDebuggerTreeNode { return myLink; } + @NotNull @Override public List getLoadedChildren() { - return null; + return Collections.emptyList(); } @Override diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/WatchesRootNode.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/WatchesRootNode.java index 4c70dacda133..7fc574dd6567 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/WatchesRootNode.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/WatchesRootNode.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2015 JetBrains s.r.o. + * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -18,7 +18,6 @@ package com.intellij.xdebugger.impl.ui.tree.nodes; import com.intellij.icons.AllIcons; import com.intellij.openapi.util.registry.Registry; import com.intellij.util.ArrayUtil; -import com.intellij.util.ObjectUtils; import com.intellij.util.containers.ContainerUtil; import com.intellij.util.ui.tree.TreeUtil; import com.intellij.xdebugger.Obsolescent; @@ -91,11 +90,10 @@ public class WatchesRootNode extends XValueContainerNode { } } - @Nullable + @NotNull @Override public List> getLoadedChildren() { - List> empty = Collections.emptyList(); - return ContainerUtil.concat(myChildren, ObjectUtils.notNull(super.getLoadedChildren(), empty)); + return ContainerUtil.concat(myChildren, super.getLoadedChildren()); } @NotNull @@ -232,33 +230,24 @@ public class WatchesRootNode extends XValueContainerNode { @Override public void evaluated(@NotNull final XValue result) { - DebuggerUIUtil.invokeLater(new Runnable() { - @Override - public void run() { - WatchesRootNode root = (WatchesRootNode)myResultPlace.getParent(); - root.replaceNode(myResultPlace, new WatchNodeImpl(root.myTree, root, result, myResultPlace.getExpression())); - } + DebuggerUIUtil.invokeLater(() -> { + WatchesRootNode root = (WatchesRootNode)myResultPlace.getParent(); + root.replaceNode(myResultPlace, new WatchNodeImpl(root.myTree, root, result, myResultPlace.getExpression())); }); } @Override public void errorOccurred(@NotNull final String errorMessage) { - DebuggerUIUtil.invokeLater(new Runnable() { - @Override - public void run() { - WatchesRootNode root = (WatchesRootNode)myResultPlace.getParent(); - root.replaceNode(myResultPlace, createErrorNode(root.myTree, root, myResultPlace.getExpression(), errorMessage)); - } + DebuggerUIUtil.invokeLater(() -> { + WatchesRootNode root = (WatchesRootNode)myResultPlace.getParent(); + root.replaceNode(myResultPlace, createErrorNode(root.myTree, root, myResultPlace.getExpression(), errorMessage)); }); } public void noSession() { - DebuggerUIUtil.invokeLater(new Runnable() { - @Override - public void run() { - WatchesRootNode root = (WatchesRootNode)myResultPlace.getParent(); - root.replaceNode(myResultPlace, createMessageNode(root.myTree, root, myResultPlace.getExpression())); - } + DebuggerUIUtil.invokeLater(() -> { + WatchesRootNode root = (WatchesRootNode)myResultPlace.getParent(); + root.replaceNode(myResultPlace, createMessageNode(root.myTree, root, myResultPlace.getExpression())); }); } } diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XDebuggerTreeNode.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XDebuggerTreeNode.java index 5e3101bff21a..64e9e1aab706 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XDebuggerTreeNode.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XDebuggerTreeNode.java @@ -1,5 +1,5 @@ /* - * Copyright 2000-2009 JetBrains s.r.o. + * Copyright 2000-2016 JetBrains s.r.o. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -175,7 +175,7 @@ public abstract class XDebuggerTreeNode implements TreeNode, TreeSpeedSearch.Pat return myPath; } - @Nullable + @NotNull public abstract List getLoadedChildren(); public abstract void clearChildren(); diff --git a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValueContainerNode.java b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValueContainerNode.java index 2148fb4c2b3a..7538e676065b 100644 --- a/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValueContainerNode.java +++ b/platform/xdebugger-impl/src/com/intellij/xdebugger/impl/ui/tree/nodes/XValueContainerNode.java @@ -234,7 +234,7 @@ public abstract class XValueContainerNode> getLoadedChildren() { List> empty = Collections.emptyList(); return ContainerUtil.concat(ObjectUtils.notNull(myTopGroups, empty),