diff --git a/platform/core-impl/src/com/intellij/openapi/editor/ex/DisposableIterator.java b/platform/core-impl/src/com/intellij/openapi/editor/ex/MarkupIterator.java similarity index 90% rename from platform/core-impl/src/com/intellij/openapi/editor/ex/DisposableIterator.java rename to platform/core-impl/src/com/intellij/openapi/editor/ex/MarkupIterator.java index 8d93bddb8fe9..c900e6350be0 100644 --- a/platform/core-impl/src/com/intellij/openapi/editor/ex/DisposableIterator.java +++ b/platform/core-impl/src/com/intellij/openapi/editor/ex/MarkupIterator.java @@ -22,10 +22,10 @@ import java.util.NoSuchElementException; /** * An iterator you must to {@link #dispose()} after use */ -public interface DisposableIterator extends PeekableIterator { +public interface MarkupIterator extends PeekableIterator { void dispose(); - DisposableIterator EMPTY = new DisposableIterator() { + MarkupIterator EMPTY = new MarkupIterator() { @Override public void dispose() { } diff --git a/platform/core-impl/src/com/intellij/openapi/editor/impl/DocumentImpl.java b/platform/core-impl/src/com/intellij/openapi/editor/impl/DocumentImpl.java index 0aa46081b164..f1487c08e5d6 100644 --- a/platform/core-impl/src/com/intellij/openapi/editor/impl/DocumentImpl.java +++ b/platform/core-impl/src/com/intellij/openapi/editor/impl/DocumentImpl.java @@ -1047,7 +1047,7 @@ public class DocumentImpl extends UserDataHolderBase implements DocumentEx { @Override public boolean processRangeMarkersOverlappingWith(int start, int end, @NotNull Processor processor) { TextRangeInterval interval = new TextRangeInterval(start, end); - DisposableIterator iterator = IntervalTreeImpl + MarkupIterator iterator = IntervalTreeImpl .mergingOverlappingIterator(myRangeMarkers, interval, myPersistentRangeMarkers, interval, RangeMarker.BY_START_OFFSET); try { return ContainerUtil.process(iterator, processor); diff --git a/platform/core-impl/src/com/intellij/openapi/editor/impl/IntervalTreeImpl.java b/platform/core-impl/src/com/intellij/openapi/editor/impl/IntervalTreeImpl.java index 24481496ef06..3233e3359ea3 100644 --- a/platform/core-impl/src/com/intellij/openapi/editor/impl/IntervalTreeImpl.java +++ b/platform/core-impl/src/com/intellij/openapi/editor/impl/IntervalTreeImpl.java @@ -15,7 +15,7 @@ */ package com.intellij.openapi.editor.impl; -import com.intellij.openapi.editor.ex.DisposableIterator; +import com.intellij.openapi.editor.ex.MarkupIterator; import com.intellij.openapi.util.Getter; import com.intellij.util.IncorrectOperationException; import com.intellij.util.Processor; @@ -564,7 +564,7 @@ abstract class IntervalTreeImpl extends RedBlackTree< } @NotNull - private DisposableIterator overlappingIterator(@NotNull final TextRangeInterval rangeInterval) { + private MarkupIterator overlappingIterator(@NotNull final TextRangeInterval rangeInterval) { l.readLock().lock(); try { @@ -574,13 +574,13 @@ abstract class IntervalTreeImpl extends RedBlackTree< if (firstOverlap == null) { l.readLock().unlock(); //noinspection unchecked - return DisposableIterator.EMPTY; + return MarkupIterator.EMPTY; } final int firstOverlapDelta = firstOverlap.computeDeltaUpToRoot(); final int firstOverlapStart = firstOverlap.intervalStart() + firstOverlapDelta; final int modCountBefore = modCount; - return new DisposableIterator() { + return new MarkupIterator() { private IntervalNode currentNode = firstOverlap; private int deltaUpToRootExclusive = firstOverlapDelta-firstOverlap.delta; private int indexInCurrentList; @@ -1365,21 +1365,21 @@ abstract class IntervalTreeImpl extends RedBlackTree< // combines iterators for two trees in one using specified comparator @NotNull - static DisposableIterator mergingOverlappingIterator(@NotNull IntervalTreeImpl tree1, - @NotNull TextRangeInterval tree1Range, - @NotNull IntervalTreeImpl tree2, - @NotNull TextRangeInterval tree2Range, - @NotNull Comparator comparator) { - DisposableIterator exact = tree1.overlappingIterator(tree1Range); - DisposableIterator lines = tree2.overlappingIterator(tree2Range); + static MarkupIterator mergingOverlappingIterator(@NotNull IntervalTreeImpl tree1, + @NotNull TextRangeInterval tree1Range, + @NotNull IntervalTreeImpl tree2, + @NotNull TextRangeInterval tree2Range, + @NotNull Comparator comparator) { + MarkupIterator exact = tree1.overlappingIterator(tree1Range); + MarkupIterator lines = tree2.overlappingIterator(tree2Range); return mergeIterators(exact, lines, comparator); } @NotNull - static DisposableIterator mergeIterators(@NotNull final DisposableIterator iterator1, - @NotNull final DisposableIterator iterator2, - @NotNull final Comparator comparator) { - return new DisposableIterator() { + static MarkupIterator mergeIterators(@NotNull final MarkupIterator iterator1, + @NotNull final MarkupIterator iterator2, + @NotNull final Comparator comparator) { + return new MarkupIterator() { @Override public void dispose() { iterator1.dispose(); @@ -1397,7 +1397,7 @@ abstract class IntervalTreeImpl extends RedBlackTree< } @NotNull - private DisposableIterator choose() { + private MarkupIterator choose() { T t1 = iterator1.hasNext() ? iterator1.peek() : null; T t2 = iterator2.hasNext() ? iterator2.peek() : null; if (t1 == null) { diff --git a/platform/editor-ui-ex/src/com/intellij/injected/editor/MarkupModelWindow.java b/platform/editor-ui-ex/src/com/intellij/injected/editor/MarkupModelWindow.java index 2f9d331f8a13..f95c47e6b998 100644 --- a/platform/editor-ui-ex/src/com/intellij/injected/editor/MarkupModelWindow.java +++ b/platform/editor-ui-ex/src/com/intellij/injected/editor/MarkupModelWindow.java @@ -18,7 +18,7 @@ package com.intellij.injected.editor; import com.intellij.openapi.Disposable; import com.intellij.openapi.editor.Document; -import com.intellij.openapi.editor.ex.DisposableIterator; +import com.intellij.openapi.editor.ex.MarkupIterator; import com.intellij.openapi.editor.ex.MarkupModelEx; import com.intellij.openapi.editor.ex.RangeHighlighterEx; import com.intellij.openapi.editor.impl.event.MarkupModelListener; @@ -145,7 +145,7 @@ public class MarkupModelWindow extends UserDataHolderBase implements MarkupModel @NotNull @Override - public DisposableIterator overlappingIterator(int startOffset, int endOffset) { + public MarkupIterator overlappingIterator(int startOffset, int endOffset) { // todo convert return myHostModel.overlappingIterator(startOffset, endOffset); } diff --git a/platform/editor-ui-ex/src/com/intellij/openapi/editor/ex/MarkupModelEx.java b/platform/editor-ui-ex/src/com/intellij/openapi/editor/ex/MarkupModelEx.java index e80652347ca6..6b848f40e0b2 100644 --- a/platform/editor-ui-ex/src/com/intellij/openapi/editor/ex/MarkupModelEx.java +++ b/platform/editor-ui-ex/src/com/intellij/openapi/editor/ex/MarkupModelEx.java @@ -58,7 +58,7 @@ public interface MarkupModelEx extends MarkupModel { boolean processRangeHighlightersOutside(int start, int end, @NotNull Processor processor); @NotNull - DisposableIterator overlappingIterator(int startOffset, int endOffset); + MarkupIterator overlappingIterator(int startOffset, int endOffset); // optimization: creates highlighter and fires only one event: highlighterCreated @NotNull diff --git a/platform/editor-ui-ex/src/com/intellij/openapi/editor/impl/EmptyMarkupModel.java b/platform/editor-ui-ex/src/com/intellij/openapi/editor/impl/EmptyMarkupModel.java index a87dc9aeaa93..17a19df56ca9 100644 --- a/platform/editor-ui-ex/src/com/intellij/openapi/editor/impl/EmptyMarkupModel.java +++ b/platform/editor-ui-ex/src/com/intellij/openapi/editor/impl/EmptyMarkupModel.java @@ -17,7 +17,7 @@ package com.intellij.openapi.editor.impl; import com.intellij.openapi.Disposable; import com.intellij.openapi.editor.Document; -import com.intellij.openapi.editor.ex.DisposableIterator; +import com.intellij.openapi.editor.ex.MarkupIterator; import com.intellij.openapi.editor.ex.MarkupModelEx; import com.intellij.openapi.editor.ex.RangeHighlighterEx; import com.intellij.openapi.editor.impl.event.MarkupModelListener; @@ -139,8 +139,8 @@ public class EmptyMarkupModel implements MarkupModelEx { @NotNull @Override - public DisposableIterator overlappingIterator(int startOffset, int endOffset) { - return DisposableIterator.EMPTY; + public MarkupIterator overlappingIterator(int startOffset, int endOffset) { + return MarkupIterator.EMPTY; } @Override diff --git a/platform/editor-ui-ex/src/com/intellij/openapi/editor/impl/MarkupModelImpl.java b/platform/editor-ui-ex/src/com/intellij/openapi/editor/impl/MarkupModelImpl.java index 039b3918bd66..d5a0d8795fa2 100644 --- a/platform/editor-ui-ex/src/com/intellij/openapi/editor/impl/MarkupModelImpl.java +++ b/platform/editor-ui-ex/src/com/intellij/openapi/editor/impl/MarkupModelImpl.java @@ -29,7 +29,7 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.diagnostic.Logger; import com.intellij.openapi.editor.Document; import com.intellij.openapi.editor.ex.DocumentEx; -import com.intellij.openapi.editor.ex.DisposableIterator; +import com.intellij.openapi.editor.ex.MarkupIterator; import com.intellij.openapi.editor.ex.MarkupModelEx; import com.intellij.openapi.editor.ex.RangeHighlighterEx; import com.intellij.openapi.editor.impl.event.MarkupModelListener; @@ -259,7 +259,7 @@ public class MarkupModelImpl extends UserDataHolderBase implements MarkupModelEx @Override public boolean processRangeHighlightersOverlappingWith(int start, int end, @NotNull Processor processor) { - DisposableIterator iterator = overlappingIterator(start, end); + MarkupIterator iterator = overlappingIterator(start, end); try { while (iterator.hasNext()) { if (!processor.process(iterator.next())) { @@ -281,7 +281,7 @@ public class MarkupModelImpl extends UserDataHolderBase implements MarkupModelEx @Override @NotNull - public DisposableIterator overlappingIterator(int startOffset, int endOffset) { + public MarkupIterator overlappingIterator(int startOffset, int endOffset) { startOffset = Math.max(0,startOffset); endOffset = Math.max(startOffset, endOffset); return IntervalTreeImpl diff --git a/platform/lang-impl/src/com/intellij/openapi/editor/richcopy/TextWithMarkupProcessor.java b/platform/lang-impl/src/com/intellij/openapi/editor/richcopy/TextWithMarkupProcessor.java index c9ad612753a7..85d4cec00abb 100644 --- a/platform/lang-impl/src/com/intellij/openapi/editor/richcopy/TextWithMarkupProcessor.java +++ b/platform/lang-impl/src/com/intellij/openapi/editor/richcopy/TextWithMarkupProcessor.java @@ -26,7 +26,7 @@ import com.intellij.openapi.editor.*; import com.intellij.openapi.editor.colors.EditorColorsScheme; import com.intellij.openapi.editor.colors.FontPreferences; import com.intellij.openapi.editor.colors.TextAttributesKey; -import com.intellij.openapi.editor.ex.DisposableIterator; +import com.intellij.openapi.editor.ex.MarkupIterator; import com.intellij.openapi.editor.ex.MarkupModelEx; import com.intellij.openapi.editor.ex.RangeHighlighterEx; import com.intellij.openapi.editor.ex.util.EditorUtil; @@ -126,11 +126,11 @@ public class TextWithMarkupProcessor extends CopyPastePostProcessor myIterator; + private final MarkupIterator myIterator; private int myCurrentStart; private int myCurrentEnd; diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorFilteringMarkupModelEx.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorFilteringMarkupModelEx.java index 0a73ac9f66d0..778aafc10be5 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorFilteringMarkupModelEx.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorFilteringMarkupModelEx.java @@ -17,7 +17,7 @@ package com.intellij.openapi.editor.impl; import com.intellij.openapi.Disposable; import com.intellij.openapi.editor.Document; -import com.intellij.openapi.editor.ex.DisposableIterator; +import com.intellij.openapi.editor.ex.MarkupIterator; import com.intellij.openapi.editor.ex.EditorEx; import com.intellij.openapi.editor.ex.MarkupModelEx; import com.intellij.openapi.editor.ex.RangeHighlighterEx; @@ -78,7 +78,7 @@ public class EditorFilteringMarkupModelEx implements MarkupModelEx { @Override @NotNull - public DisposableIterator overlappingIterator(int startOffset, int endOffset) { + public MarkupIterator overlappingIterator(int startOffset, int endOffset) { return new MyFilteringIterator(myDelegate.overlappingIterator(startOffset, endOffset)); } @@ -94,10 +94,10 @@ public class EditorFilteringMarkupModelEx implements MarkupModelEx { } private class MyFilteringIterator extends FilteringIterator - implements DisposableIterator { - private DisposableIterator myDelegate; + implements MarkupIterator { + private MarkupIterator myDelegate; - public MyFilteringIterator(@NotNull DisposableIterator delegate) { + public MyFilteringIterator(@NotNull MarkupIterator delegate) { super(delegate, IS_AVAILABLE); myDelegate = delegate; } diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorGutterComponentImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorGutterComponentImpl.java index 3953539e7ff2..6a7edc01bce1 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorGutterComponentImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorGutterComponentImpl.java @@ -562,8 +562,8 @@ class EditorGutterComponentImpl extends EditorGutterComponentEx implements Mouse private void processRangeHighlighters(int startOffset, int endOffset, @NotNull RangeHighlighterProcessor processor) { Document document = myEditor.getDocument(); // we limit highlighters to process to between line starting at startOffset and line ending at endOffset - DisposableIterator docHighlighters = myEditor.getFilteredDocumentMarkupModel().overlappingIterator(startOffset, endOffset); - DisposableIterator editorHighlighters = myEditor.getMarkupModel().overlappingIterator(startOffset, endOffset); + MarkupIteratordocHighlighters = myEditor.getFilteredDocumentMarkupModel().overlappingIterator(startOffset, endOffset); + MarkupIterator editorHighlighters = myEditor.getMarkupModel().overlappingIterator(startOffset, endOffset); try { RangeHighlighterEx lastDocHighlighter = null; diff --git a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorMarkupModelImpl.java b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorMarkupModelImpl.java index 410695eaa1a5..11266fa6278b 100644 --- a/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorMarkupModelImpl.java +++ b/platform/platform-impl/src/com/intellij/openapi/editor/impl/EditorMarkupModelImpl.java @@ -735,9 +735,9 @@ public class EditorMarkupModelImpl extends MarkupModelImpl implements EditorMark final int[] thinYStart = new int[1]; // in range 0..yStart all spots are drawn final int[] wideYStart = new int[1]; // in range 0..yStart all spots are drawn - DisposableIterator iterator1 = markup1.overlappingIterator(startOffset, endOffset); - DisposableIterator iterator2 = markup2.overlappingIterator(startOffset, endOffset); - DisposableIterator iterator = + MarkupIterator iterator1 = markup1.overlappingIterator(startOffset, endOffset); + MarkupIterator iterator2 = markup2.overlappingIterator(startOffset, endOffset); + MarkupIterator iterator = IntervalTreeImpl.mergeIterators(iterator1, iterator2, RangeHighlighterEx.BY_AFFECTED_START_OFFSET); try { ContainerUtil.process(iterator, new Processor() {