Added optimization checks before running hyperlinks highlighting code. Add possibilit...
authorDmitry Trofimov <dmitry.trofimov@jetbrains.com>
Mon, 11 Apr 2011 17:43:56 +0000 (21:43 +0400)
committerDmitry Trofimov <dmitry.trofimov@jetbrains.com>
Mon, 11 Apr 2011 17:54:28 +0000 (21:54 +0400)
platform/lang-api/src/com/intellij/execution/filters/CompositeFilter.java
platform/lang-impl/src/com/intellij/execution/impl/ConsoleViewImpl.java

index cabd514745e2525123938ee46daec1d1809984dd..8812aea617f91b7c39ba3c06fa05f24e804bef29 100644 (file)
@@ -17,6 +17,7 @@ package com.intellij.execution.filters;
 
 import com.intellij.openapi.project.DumbService;
 import com.intellij.openapi.project.Project;
+import org.jetbrains.annotations.Nullable;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -29,6 +30,7 @@ public class CompositeFilter implements Filter {
     myDumbService = DumbService.getInstance(project);
   }
 
+  @Nullable
   public Result applyFilter(final String line, final int entireLength) {
     final boolean dumb = myDumbService.isDumb();
     List<Filter> filters = myFilters;
@@ -45,6 +47,10 @@ public class CompositeFilter implements Filter {
     return null;
   }
 
+  public boolean isEmpty() {
+    return myFilters.isEmpty();
+  }
+
   public void addFilter(final Filter filter) {
     myFilters.add(filter);
   }
index 2b6345156e859582fd541d669e7dc9a34e90ae40..65b1863c735cbeba2493a4de5ec02f9cd5846e1e 100644 (file)
@@ -131,6 +131,7 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo
   private final CopyOnWriteArraySet<ChangeListener> myListeners = new CopyOnWriteArraySet<ChangeListener>();
   private final ArrayList<AnAction> customActions = new ArrayList<AnAction>();
   private final ConsoleBuffer myBuffer = new ConsoleBuffer();
+  private boolean myUpdateFoldingsEnabled = true;
 
   @TestOnly
   public Editor getEditor() {
@@ -707,6 +708,10 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo
     myHelpId = helpId;
   }
 
+  public void setUpdateFoldingsEnabled(boolean updateFoldingsEnabled) {
+    myUpdateFoldingsEnabled = updateFoldingsEnabled;
+  }
+
   public void addMessageFilter(final Filter filter) {
     myCustomFilter.addFilter(filter);
   }
@@ -999,10 +1004,19 @@ public class ConsoleViewImpl extends JPanel implements ConsoleView, ObservableCo
   }
 
   private void highlightHyperlinksAndFoldings(final int line1, final int endLine) {
+    boolean canHighlightHyperlinks = !myCustomFilter.isEmpty() || !myPredefinedMessageFilter.isEmpty();
+
+    if (!canHighlightHyperlinks && myUpdateFoldingsEnabled) {
+      return;
+    }
     ApplicationManager.getApplication().assertIsDispatchThread();
     PsiDocumentManager.getInstance(myProject).commitAllDocuments();
-    highlightHyperlinks(myEditor, myHyperlinks, myCustomFilter, myPredefinedMessageFilter, line1, endLine);
-    updateFoldings(line1, endLine, true);
+    if (canHighlightHyperlinks) {
+      highlightHyperlinks(myEditor, myHyperlinks, myCustomFilter, myPredefinedMessageFilter, line1, endLine);
+    }
+    if (myUpdateFoldingsEnabled) {
+      updateFoldings(line1, endLine, true);
+    }
   }
 
   private void updateFoldings(final int line1, final int endLine, boolean immediately) {