From 62b3260962bcf889a12da9d2accaf7882aefd93b Mon Sep 17 00:00:00 2001 From: anna Date: Thu, 16 Feb 2012 20:21:07 +0100 Subject: [PATCH] console filters: provide update message --- .../filters/ExceptionExFilterFactory.java | 5 +++++ .../VcsContentAnnotationExceptionFilter.java | 5 +++++ .../execution/filters/CompositeFilter.java | 18 ++++++++++++++++++ .../execution/filters/FilterMixin.java | 2 ++ .../execution/impl/ConsoleViewImpl.java | 2 +- 5 files changed, 31 insertions(+), 1 deletion(-) diff --git a/java/execution/openapi/src/com/intellij/execution/filters/ExceptionExFilterFactory.java b/java/execution/openapi/src/com/intellij/execution/filters/ExceptionExFilterFactory.java index dc16ba61fd1f..e28c2a3041ef 100644 --- a/java/execution/openapi/src/com/intellij/execution/filters/ExceptionExFilterFactory.java +++ b/java/execution/openapi/src/com/intellij/execution/filters/ExceptionExFilterFactory.java @@ -98,5 +98,10 @@ public class ExceptionExFilterFactory implements ExceptionFilterFactory { }); } } + + @Override + public String getUpdateMessage() { + return "Checking try/finally blocks"; + } } } diff --git a/java/java-impl/src/com/intellij/openapi/vcs/contentAnnotation/VcsContentAnnotationExceptionFilter.java b/java/java-impl/src/com/intellij/openapi/vcs/contentAnnotation/VcsContentAnnotationExceptionFilter.java index 58d30f1bd1ea..d5e3705b9b3d 100644 --- a/java/java-impl/src/com/intellij/openapi/vcs/contentAnnotation/VcsContentAnnotationExceptionFilter.java +++ b/java/java-impl/src/com/intellij/openapi/vcs/contentAnnotation/VcsContentAnnotationExceptionFilter.java @@ -164,6 +164,11 @@ public class VcsContentAnnotationExceptionFilter implements Filter, FilterMixin } } + @Override + public String getUpdateMessage() { + return "Checking recent changes..."; + } + private static class LocalChangesCorrector { private final Map myRecentlyChanged; private final Project myProject; diff --git a/platform/lang-api/src/com/intellij/execution/filters/CompositeFilter.java b/platform/lang-api/src/com/intellij/execution/filters/CompositeFilter.java index 4c77cbbf99ee..2cff2aaf6291 100644 --- a/platform/lang-api/src/com/intellij/execution/filters/CompositeFilter.java +++ b/platform/lang-api/src/com/intellij/execution/filters/CompositeFilter.java @@ -77,6 +77,24 @@ public class CompositeFilter implements Filter, FilterMixin { } } + @Override + public String getUpdateMessage() { + final boolean dumb = myDumbService.isDumb(); + List filters = myFilters; + final List updateMessage = new ArrayList(); + int count = filters.size(); + //noinspection ForLoopReplaceableByForEach + for (int i = 0; i < count; i++) { + Filter filter = filters.get(i); + + if (!(filter instanceof FilterMixin) || !((FilterMixin)filter).shouldRunHeavy()) continue; + if (!dumb || DumbService.isDumbAware(filter)) { + updateMessage.add(((FilterMixin)filter).getUpdateMessage()); + } + } + return updateMessage.size() == 1 ? updateMessage.get(0) : "Updating..."; + } + public boolean isEmpty() { return myFilters.isEmpty(); } diff --git a/platform/lang-api/src/com/intellij/execution/filters/FilterMixin.java b/platform/lang-api/src/com/intellij/execution/filters/FilterMixin.java index 4e10ba654fbe..b84d43e4cec3 100644 --- a/platform/lang-api/src/com/intellij/execution/filters/FilterMixin.java +++ b/platform/lang-api/src/com/intellij/execution/filters/FilterMixin.java @@ -31,6 +31,8 @@ public interface FilterMixin { @Nullable void applyHeavyFilter(Document copiedFragment, int startOffset, int startLineNumber, Consumer consumer); + String getUpdateMessage(); + abstract class AdditionalHighlight { private final int myStart; private final int myEnd; diff --git a/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java b/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java index 88b7b7841c0e..1bf96058fb08 100644 --- a/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java +++ b/platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java @@ -400,7 +400,7 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo public JComponent getComponent() { if (myMainPanel == null) { myMainPanel = new JPanel(new BorderLayout()); - myJLayeredPane = new MyDiffContainer(myMainPanel, "Checking recent changes..."); + myJLayeredPane = new MyDiffContainer(myMainPanel, myPredefinedMessageFilter.getUpdateMessage()); add(myJLayeredPane, BorderLayout.CENTER); }