From d15a44808fe24fe245478f4d121c9158992ba3f4 Mon Sep 17 00:00:00 2001 From: "Vladislav.Soroka" Date: Mon, 25 Mar 2019 17:32:22 +0300 Subject: [PATCH] Build tool window: hide filtered messages group nodes IDEA-209459 --- .../intellij/build/BuildTreeConsoleView.java | 5 ++- .../src/com/intellij/build/ExecutionNode.java | 39 +++++++++---------- 2 files changed, 22 insertions(+), 22 deletions(-) diff --git a/platform/lang-impl/src/com/intellij/build/BuildTreeConsoleView.java b/platform/lang-impl/src/com/intellij/build/BuildTreeConsoleView.java index 86702f4ac47d..abe12718187c 100644 --- a/platform/lang-impl/src/com/intellij/build/BuildTreeConsoleView.java +++ b/platform/lang-impl/src/com/intellij/build/BuildTreeConsoleView.java @@ -266,8 +266,11 @@ public class BuildTreeConsoleView implements ConsoleView, DataProvider, BuildCon @Override public void setFilter(@Nullable Predicate executionTreeFilter) { myExecutionTreeFilter = executionTreeFilter; + ExecutionNode buildProgressRootNode = getBuildProgressRootNode(); ExecutionNode rootElement = getRootElement(); - rootElement.setFilter(executionTreeFilter); + Predicate predicate = executionTreeFilter == null ? null : + node -> node == buildProgressRootNode || executionTreeFilter.test(node); + rootElement.setFilter(predicate); scheduleUpdate(rootElement); } diff --git a/platform/lang-impl/src/com/intellij/build/ExecutionNode.java b/platform/lang-impl/src/com/intellij/build/ExecutionNode.java index 8d8220d885c4..e0574537fb78 100644 --- a/platform/lang-impl/src/com/intellij/build/ExecutionNode.java +++ b/platform/lang-impl/src/com/intellij/build/ExecutionNode.java @@ -69,6 +69,8 @@ public class ExecutionNode extends CachingSimpleNode { }; private final Collection myChildrenList = new ConcurrentLinkedDeque<>(); //ContainerUtil.newSmartList(); + private final AtomicInteger myErrors = new AtomicInteger(); + private final AtomicInteger myWarnings = new AtomicInteger(); private long startTime; private long endTime; @Nullable @@ -84,8 +86,6 @@ public class ExecutionNode extends CachingSimpleNode { private Navigatable myNavigatable; @Nullable private NullableLazyValue myPreferredIconValue; - private final AtomicInteger myErrors = new AtomicInteger(); - private final AtomicInteger myWarnings = new AtomicInteger(); @Nullable private Predicate myFilter; private volatile boolean myVisible = true; @@ -221,11 +221,8 @@ public class ExecutionNode extends CachingSimpleNode { myFilter = filter; for (ExecutionNode node : myChildrenList) { node.setFilter(myFilter); - node.cleanUpCache(); - } - if (getParent() != null) { - cleanUpCache(); } + cleanUpCache(); } public void setVisible(boolean visible) { @@ -238,14 +235,6 @@ public class ExecutionNode extends CachingSimpleNode { } } - public static boolean isFailed(@Nullable EventResult result) { - return result instanceof FailureResult; - } - - public static boolean isSkipped(@Nullable EventResult result) { - return result instanceof SkippedResult; - } - public boolean isRunning() { return endTime <= 0 && !isSkipped(myResult) && !isFailed(myResult); } @@ -256,6 +245,11 @@ public class ExecutionNode extends CachingSimpleNode { (myResult instanceof MessageEventResult && ((MessageEventResult)myResult).getKind() == MessageEvent.Kind.ERROR); } + @Nullable + public EventResult getResult() { + return myResult; + } + public void setResult(@Nullable EventResult result) { myResult = result; if (myFilter != null) { @@ -263,14 +257,9 @@ public class ExecutionNode extends CachingSimpleNode { } } - @Nullable - public EventResult getResult() { - return myResult; - } - @Override public boolean isAutoExpandNode() { - return myAutoExpandNode || isRunning() || isFailed() ; + return myAutoExpandNode || (myFilter != null && (isRunning() || isFailed())); } public void setAutoExpandNode(boolean autoExpandNode) { @@ -290,7 +279,7 @@ public class ExecutionNode extends CachingSimpleNode { if (myResult instanceof FailureResult) { List result = new SmartList<>(); - for (Failure failure: ((FailureResult)myResult).getFailures()) { + for (Failure failure : ((FailureResult)myResult).getFailures()) { ContainerUtil.addIfNotNull(result, failure.getNavigatable()); } return result; @@ -378,6 +367,14 @@ public class ExecutionNode extends CachingSimpleNode { } } + public static boolean isFailed(@Nullable EventResult result) { + return result instanceof FailureResult; + } + + public static boolean isSkipped(@Nullable EventResult result) { + return result instanceof SkippedResult; + } + public static Icon getEventResultIcon(@Nullable EventResult result) { if (result == null) { return NODE_ICON_RUNNING;