mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
[merge] refactoring: make FragmentSide to be enum
* Make some DRY. * Use IllegalArgumentException to a not-public InvalidParameterException
This commit is contained in:
@@ -482,7 +482,7 @@ public class DiffPanelImpl implements DiffPanelEx, ContentChangeListener, TwoSid
|
||||
return myLeftSide;
|
||||
}
|
||||
if (side == FragmentSide.SIDE2) return myRightSide;
|
||||
throw new InvalidParameterException(String.valueOf(side));
|
||||
throw new IllegalArgumentException(String.valueOf(side));
|
||||
}
|
||||
|
||||
public LineBlocks getLineBlocks() { return myLineBlocks; }
|
||||
|
||||
@@ -42,7 +42,7 @@ public class InlineFragment implements Fragment {
|
||||
public TextRange getRange(FragmentSide side) {
|
||||
if (side == FragmentSide.SIDE1) return myRange1;
|
||||
if (side == FragmentSide.SIDE2) return myRange2;
|
||||
throw new InvalidParameterException(String.valueOf(side));
|
||||
throw new IllegalArgumentException(String.valueOf(side));
|
||||
}
|
||||
|
||||
public Fragment shift(TextRange range1, TextRange range2, int startingLine1, int startingLine2) {
|
||||
|
||||
@@ -21,7 +21,6 @@ import com.intellij.openapi.diff.impl.util.TextDiffTypeEnum;
|
||||
import com.intellij.openapi.util.Condition;
|
||||
import com.intellij.openapi.util.TextRange;
|
||||
|
||||
import java.security.InvalidParameterException;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Iterator;
|
||||
|
||||
@@ -55,7 +54,7 @@ public class LineFragment extends LineBlock implements Fragment {
|
||||
public TextRange getRange(FragmentSide side) {
|
||||
if (side == FragmentSide.SIDE1) return myRange1;
|
||||
if (side == FragmentSide.SIDE2) return myRange2;
|
||||
throw new InvalidParameterException(String.valueOf(side));
|
||||
throw new IllegalArgumentException(String.valueOf(side));
|
||||
}
|
||||
|
||||
public Fragment shift(TextRange range1, TextRange range2, int startingLine1, int startingLine2) {
|
||||
|
||||
@@ -17,84 +17,94 @@ package com.intellij.openapi.diff.impl.highlighting;
|
||||
|
||||
import com.intellij.openapi.diagnostic.Logger;
|
||||
import com.intellij.openapi.diff.ex.DiffFragment;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
import java.security.InvalidParameterException;
|
||||
public enum FragmentSide {
|
||||
|
||||
SIDE1(0, 0) {
|
||||
@Override
|
||||
public String getText(DiffFragment fragment) {
|
||||
return fragment.getText1();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected DiffFragment createDiffFragment(String text, String otherText) {
|
||||
return new DiffFragment(text, otherText);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FragmentSide otherSide() {
|
||||
return SIDE2;
|
||||
}
|
||||
},
|
||||
|
||||
SIDE2(1, 2) {
|
||||
@Override
|
||||
public String getText(DiffFragment fragment) {
|
||||
return fragment.getText2();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected DiffFragment createDiffFragment(String text, String otherText) {
|
||||
return new DiffFragment(otherText, text);
|
||||
}
|
||||
|
||||
@Override
|
||||
public FragmentSide otherSide() {
|
||||
return SIDE1;
|
||||
}
|
||||
};
|
||||
|
||||
private static final Logger LOG = Logger.getInstance(FragmentSide.class);
|
||||
|
||||
private final int myIndex;
|
||||
private final int myMergeIndex;
|
||||
|
||||
FragmentSide(int index, int mergeIndex) {
|
||||
myIndex = index;
|
||||
myMergeIndex = mergeIndex;
|
||||
}
|
||||
|
||||
public DiffFragment createFragment(String text, String otherText, boolean modified) {
|
||||
DiffFragment fragment = createDiffFragment(text, otherText);
|
||||
if (!fragment.isOneSide()) fragment.setModified(modified);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
public abstract class FragmentSide {
|
||||
private static final Logger LOG = Logger.getInstance("#com.intellij.openapi.diff.impl.highlighting.FragmentSide");
|
||||
public abstract String getText(DiffFragment fragment);
|
||||
public abstract DiffFragment createFragment(String text, String otherText, boolean modified);
|
||||
public abstract FragmentSide otherSide();
|
||||
public abstract int getIndex();
|
||||
public abstract int getMergeIndex();
|
||||
protected abstract DiffFragment createDiffFragment(String text, String otherText);
|
||||
|
||||
public int getIndex() {
|
||||
return myIndex;
|
||||
}
|
||||
|
||||
public int getMergeIndex() {
|
||||
return myMergeIndex;
|
||||
}
|
||||
|
||||
public String getOtherText(DiffFragment fragment) {
|
||||
return otherSide().getText(fragment);
|
||||
}
|
||||
|
||||
public InvalidParameterException invalidException() {
|
||||
return new InvalidParameterException(String.valueOf(this));
|
||||
public IllegalArgumentException invalidException() {
|
||||
return new IllegalArgumentException(String.valueOf(this));
|
||||
}
|
||||
|
||||
public static final FragmentSide SIDE1 = new FragmentSide() {
|
||||
public String getText(DiffFragment fragment) {
|
||||
return fragment.getText1();
|
||||
}
|
||||
|
||||
public DiffFragment createFragment(String text, String otherText, boolean modified) {
|
||||
DiffFragment fragment = new DiffFragment(text, otherText);
|
||||
if (!fragment.isOneSide()) fragment.setModified(modified);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
public FragmentSide otherSide() {
|
||||
return SIDE2;
|
||||
}
|
||||
|
||||
public int getIndex() {
|
||||
return 0;
|
||||
}
|
||||
|
||||
public int getMergeIndex() {
|
||||
return 0;
|
||||
}
|
||||
};
|
||||
|
||||
public static final FragmentSide SIDE2 = new FragmentSide() {
|
||||
public String getText(DiffFragment fragment) {
|
||||
return fragment.getText2();
|
||||
}
|
||||
|
||||
public DiffFragment createFragment(String text, String otherText, boolean modified) {
|
||||
DiffFragment fragment = new DiffFragment(otherText, text);
|
||||
if (!fragment.isOneSide()) fragment.setModified(modified);
|
||||
return fragment;
|
||||
}
|
||||
|
||||
public FragmentSide otherSide() {
|
||||
return SIDE1;
|
||||
}
|
||||
|
||||
public int getIndex() {
|
||||
return 1;
|
||||
}
|
||||
|
||||
public int getMergeIndex() {
|
||||
return 2;
|
||||
}
|
||||
};
|
||||
|
||||
public static FragmentSide chooseSide(DiffFragment oneSide) {
|
||||
LOG.assertTrue(oneSide.isOneSide());
|
||||
LOG.assertTrue(oneSide.getText1() != oneSide.getText2());
|
||||
return oneSide.getText1() == null ? SIDE2 : SIDE1;
|
||||
}
|
||||
|
||||
@NotNull
|
||||
public static FragmentSide fromIndex(int index) {
|
||||
switch (index) {
|
||||
case 0: return SIDE1;
|
||||
case 1: return SIDE2;
|
||||
default: throw new InvalidParameterException(String.valueOf(index));
|
||||
for (FragmentSide side : FragmentSide.values()) {
|
||||
if (side.getIndex() == index) {
|
||||
return side;
|
||||
}
|
||||
}
|
||||
throw new IllegalArgumentException(String.valueOf(index));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user