import org.jetbrains.annotations.NotNull;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.Iterator;
+import java.util.List;
public abstract class SimpleDiffPanelState implements Disposable {
protected ComparisonPolicy myComparisonPolicy = ComparisonPolicy.DEFAULT;
public void dispose() {
}
- private LineBlocks addMarkup(final ArrayList<LineFragment> lines) {
+ private LineBlocks addMarkup(final List<LineFragment> lines) {
ApplicationManager.getApplication().runWriteAction(new Runnable() {
public void run() {
final FragmentHighlighterImpl fragmentHighlighter = new FragmentHighlighterImpl(myAppender1, myAppender2);
return LineBlocks.EMPTY;
}
- if (myHighlightMode == HighlightMode.NO_HIGHLIGHTING) {
- return LineBlocks.fromLineFragments(Collections.<LineFragment>emptyList());
- }
-
- return addMarkup(new TextCompareProcessor(myComparisonPolicy, myDiffPolicy, myHighlightMode == HighlightMode.BY_WORD)
- .process(myAppender1.getText(), myAppender2.getText()));
+ return addMarkup(
+ new TextCompareProcessor(myComparisonPolicy, myDiffPolicy, myHighlightMode).process(myAppender1.getText(), myAppender2.getText()));
}
public Project getProject() { return myProject; }
package com.intellij.openapi.diff.impl.processing;
import com.intellij.openapi.diagnostic.Logger;
-import com.intellij.openapi.diff.impl.string.DiffString;
import com.intellij.openapi.diff.ex.DiffFragment;
import com.intellij.openapi.diff.impl.ComparisonPolicy;
import com.intellij.openapi.diff.impl.fragments.Fragment;
import com.intellij.openapi.diff.impl.highlighting.FragmentSide;
import com.intellij.openapi.diff.impl.highlighting.LineBlockDivider;
import com.intellij.openapi.diff.impl.highlighting.Util;
+import com.intellij.openapi.diff.impl.string.DiffString;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.util.diff.FilesTooBigForDiffException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.ArrayList;
+import java.util.Collections;
+import java.util.List;
public class TextCompareProcessor {
private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.diff.impl.processing.Processor");
private final DiffPolicy myDiffPolicy;
@NotNull private final ComparisonPolicy myComparisonPolicy;
- private final boolean mySearchForSubFragments;
+ @NotNull private final HighlightMode myHighlightMode;
public TextCompareProcessor(@NotNull ComparisonPolicy comparisonPolicy,
- final DiffPolicy diffPolicy,
- boolean searchForSubFragments) {
+ @NotNull DiffPolicy diffPolicy,
+ @NotNull HighlightMode highlightMode) {
myComparisonPolicy = comparisonPolicy;
myDiffPolicy = diffPolicy;
- mySearchForSubFragments = searchForSubFragments;
- }
-
- public TextCompareProcessor(@NotNull ComparisonPolicy comparisonPolicy, final DiffPolicy diffPolicy) {
- this(comparisonPolicy, diffPolicy, true);
+ myHighlightMode = highlightMode;
}
public TextCompareProcessor(@NotNull ComparisonPolicy comparisonPolicy) {
- this(comparisonPolicy, DiffPolicy.LINES_WO_FORMATTING);
+ this(comparisonPolicy, DiffPolicy.LINES_WO_FORMATTING, HighlightMode.BY_WORD);
}
- public ArrayList<LineFragment> process(@Nullable String text1, @Nullable String text2) throws FilesTooBigForDiffException {
+ public List<LineFragment> process(@Nullable String text1, @Nullable String text2) throws FilesTooBigForDiffException {
+ if (myHighlightMode == HighlightMode.NO_HIGHLIGHTING) {
+ return Collections.emptyList();
+ }
+
text1 = StringUtil.notNullize(text1);
text2 = StringUtil.notNullize(text2);
if (text1.isEmpty() || text2.isEmpty()) {
ArrayList<LineFragment> lineBlocks = new DiffFragmentsProcessor().process(step1lineFragments);
int badLinesCount = 0;
- if (mySearchForSubFragments) {
+ if (myHighlightMode == HighlightMode.BY_WORD) {
for (LineFragment lineBlock : lineBlocks) {
if (lineBlock.isOneSide() || lineBlock.isEqual()) continue;
try {
import com.intellij.util.diff.FilesTooBigForDiffException;
import junit.framework.TestCase;
-import java.util.ArrayList;
+import java.util.List;
public class TextCompareProcessorTest extends TestCase {
public void testIgnoreWrappingEqualText() throws FilesTooBigForDiffException {
TextCompareProcessor processor = new TextCompareProcessor(ComparisonPolicy.IGNORE_SPACE);
- ArrayList<LineFragment> lineFragments = processor.process("f(a, b)\n", "f(a,\nb)\n");
+ List<LineFragment> lineFragments = processor.process("f(a, b)\n", "f(a,\nb)\n");
assertTrue(lineFragments.size() == 1);
assertNull(lineFragments.get(0).getType());
}