lst: remove unnecessary field

This commit is contained in:
Aleksey Pivovarov
2015-05-18 18:54:07 +03:00
parent 5040aa3d83
commit 12c3d7f006
5 changed files with 63 additions and 91 deletions
@@ -526,10 +526,10 @@ public class LineStatusTracker {
return Collections.emptyList();
}
if (changedLine1 == changedLine2) {
return Collections.singletonList(new Range(changedLine1, changedLine2, vcsLine1, vcsLine2, Range.DELETED));
return Collections.singletonList(new Range(changedLine1, changedLine2, vcsLine1, vcsLine2));
}
if (vcsLine1 == vcsLine2) {
return Collections.singletonList(new Range(changedLine1, changedLine2, vcsLine1, vcsLine2, Range.INSERTED));
return Collections.singletonList(new Range(changedLine1, changedLine2, vcsLine1, vcsLine2));
}
List<String> lines = new DocumentWrapper(myDocument).getLines(changedLine1, changedLine2 - 1);
@@ -18,16 +18,11 @@ package com.intellij.openapi.vcs.ex;
import com.intellij.diff.util.DiffUtil;
import com.intellij.openapi.diagnostic.Logger;
import com.intellij.openapi.editor.markup.RangeHighlighter;
import com.intellij.util.diff.Diff;
import org.jetbrains.annotations.NonNls;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.List;
/**
* author: lesya
*/
public class Range {
private static final Logger LOG = Logger.getInstance(Range.class);
public static final byte EQUAL = 0;
@@ -42,81 +37,64 @@ public class Range {
private int myLine2;
private final int myVcsLine1;
private final int myVcsLine2;
private final byte myType;
@Nullable private RangeHighlighter myRangeHighlighter;
@Nullable private final List<InnerRange> myInnerRanges;
@Nullable private RangeHighlighter myRangeHighlighter;
private boolean myValid = true;
public Range(@NotNull Range range) {
this(range.getLine1(), range.getLine2(), range.getVcsLine1(), range.getVcsLine2(), range.getType());
this(range.getLine1(), range.getLine2(), range.getVcsLine1(), range.getVcsLine2());
}
public Range(int line1, int line2, int vcsLine1, int vcsLine2, byte type) {
this(line1, line2, vcsLine1, vcsLine2, type, null);
public Range(int line1, int line2, int vcsLine1, int vcsLine2) {
this(line1, line2, vcsLine1, vcsLine2, null);
}
public Range(int line1, int line2, int vcsLine1, int vcsLine2, byte type, @Nullable List<InnerRange> innerRanges) {
public Range(int line1, int line2, int vcsLine1, int vcsLine2, @Nullable List<InnerRange> innerRanges) {
assert line1 != line2 || vcsLine1 != vcsLine2;
myLine1 = line1;
myLine2 = line2;
myVcsLine1 = vcsLine1;
myVcsLine2 = vcsLine2;
myType = type;
myInnerRanges = innerRanges;
}
public int hashCode() {
return myVcsLine1 ^ myVcsLine2 ^ myType ^ myLine1 ^ myLine2;
return myVcsLine1 ^ myVcsLine2 ^ myLine1 ^ myLine2;
}
public boolean equals(Object object) {
if (!(object instanceof Range)) return false;
Range other = (Range)object;
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
if (myInnerRanges != null) {
if (other.myInnerRanges == null) return false;
if (myInnerRanges.size() != other.myInnerRanges.size()) return false;
Range range = (Range)o;
for (int i = 0; i < myInnerRanges.size(); i++) {
if (!myInnerRanges.get(i).equals(other.myInnerRanges.get(i))) return false;
}
}
else {
if (other.myInnerRanges != null) return false;
if (myLine1 != range.myLine1) return false;
if (myLine2 != range.myLine2) return false;
if (myVcsLine1 != range.myVcsLine1) return false;
if (myVcsLine2 != range.myVcsLine2) return false;
if (myInnerRanges == null) return range.myInnerRanges == null;
if (range.myInnerRanges == null) return false;
if (myInnerRanges.size() != range.myInnerRanges.size()) return false;
for (int i = 0; i < myInnerRanges.size(); i++) {
if (!myInnerRanges.get(i).equals(range.myInnerRanges.get(i))) return false;
}
return
(myVcsLine1 == other.myVcsLine1)
&& (myVcsLine2 == other.myVcsLine2)
&& (myLine1 == other.myLine1)
&& (myLine2 == other.myLine2)
&& (myType == other.myType);
return true;
}
public String toString() {
return String.format("%s, %s, %s, %s, %s", myLine1, myLine2, myVcsLine1, myVcsLine2, getTypeName());
}
@NonNls
private String getTypeName() {
switch (myType) {
case MODIFIED:
return "MODIFIED";
case INSERTED:
return "INSERTED";
case DELETED:
return "DELETED";
}
return "UNKNOWN";
return String.format("%s, %s, %s, %s", myLine1, myLine2, myVcsLine1, myVcsLine2);
}
public byte getType() {
return myType;
}
public int getUpToDateRangeLength() {
return myVcsLine2 - myVcsLine1;
if (myLine1 == myLine2) return DELETED;
if (myVcsLine1 == myVcsLine2) return INSERTED;
return MODIFIED;
}
public void shift(int shift) {
@@ -151,15 +129,11 @@ public class Range {
return myVcsLine2;
}
public boolean rightBefore(@NotNull Range range) {
return myLine2 == range.myLine1;
}
public boolean hasHighlighter() {
return myRangeHighlighter != null;
}
public void setHighlighter(RangeHighlighter highlighter) {
public void setHighlighter(@Nullable RangeHighlighter highlighter) {
myRangeHighlighter = highlighter;
}
@@ -211,8 +185,8 @@ public class Range {
InnerRange range = (InnerRange)o;
if (myLine2 != range.myLine2) return false;
if (myLine1 != range.myLine1) return false;
if (myLine2 != range.myLine2) return false;
if (myType != range.myType) return false;
return true;
@@ -227,22 +201,7 @@ public class Range {
}
public String toString() {
return String.format("%s, %s, %s", myLine1, myLine2, getTypeName());
}
@NonNls
private String getTypeName() {
switch (myType) {
case MODIFIED:
return "MODIFIED";
case INSERTED:
return "INSERTED";
case DELETED:
return "DELETED";
case EQUAL:
return "EQUAL";
}
return "UNKNOWN";
return String.format("%s, %s, %s", myLine1, myLine2, getTypeName(myType));
}
}
@@ -252,4 +211,19 @@ public class Range {
public boolean isSelectedByLine(int line) {
return DiffUtil.isSelectedByLine(line, myLine1, myLine2);
}
@NotNull
private static String getTypeName(byte type) {
switch (type) {
case MODIFIED:
return "MODIFIED";
case INSERTED:
return "INSERTED";
case DELETED:
return "DELETED";
case EQUAL:
return "EQUAL";
}
return "UNKNOWN(" + type + ")";
}
}
@@ -101,15 +101,13 @@ public class RangesBuilder {
}
private static Range createOn(@NotNull Diff.Change change, int shift, int vcsShift) {
byte type = getChangeType(change);
int offset1 = shift + change.line1;
int offset2 = offset1 + change.inserted;
int uOffset1 = vcsShift + change.line0;
int uOffset2 = uOffset1 + change.deleted;
return new Range(offset1, offset2, uOffset1, uOffset2, type);
return new Range(offset1, offset2, uOffset1, uOffset2);
}
private static Range createOnSmart(@NotNull Diff.Change change,
@@ -126,7 +124,7 @@ public class RangesBuilder {
int uOffset2 = uOffset1 + change.deleted;
if (type != Range.MODIFIED) {
return new Range(offset1, offset2, uOffset1, uOffset2, type, Collections.singletonList(new Range.InnerRange(offset1, offset2, type)));
return new Range(offset1, offset2, uOffset1, uOffset2, Collections.singletonList(new Range.InnerRange(offset1, offset2, type)));
}
LineWrapper[] lines1 = new LineWrapper[change.deleted];
@@ -169,7 +167,7 @@ public class RangesBuilder {
inner.add(new Range.InnerRange(innerStart, innerEnd, innerType));
}
return new Range(offset1, offset2, uOffset1, uOffset2, type, inner);
return new Range(offset1, offset2, uOffset1, uOffset2, inner);
}
private static byte getChangeType(@NotNull Diff.Change change) {
@@ -80,6 +80,6 @@ public class ShowLineStatusRangeDiffAction extends BaseLineStatusRangeAction {
int uOffset1 = range.getVcsLine1() - (canExpandBefore ? 1 : 0);
int offset2 = range.getLine2() + (canExpandAfter ? 1 : 0);
int uOffset2 = range.getVcsLine2() + (canExpandAfter ? 1 : 0);
return new Range(offset1, offset2, uOffset1, uOffset2, range.getType());
return new Range(offset1, offset2, uOffset1, uOffset2);
}
}
@@ -44,7 +44,7 @@ public class UpToDateLineNumberProviderImpl implements UpToDateLineNumberProvide
}
return calcLineNumber(tracker, currentNumber);
}
public boolean isRangeChanged(final int start, final int end) {
LineStatusTracker tracker = LineStatusTrackerManager.getInstance(myProject).getLineStatusTracker(myDocument);
if (tracker == null) {
@@ -60,7 +60,7 @@ public class UpToDateLineNumberProviderImpl implements UpToDateLineNumberProvide
}
return false;
}
private static boolean lineInRange(final Range range, final int currentNumber) {
return range.getLine1() <= currentNumber && range.getLine2() >= currentNumber;
}
@@ -106,23 +106,23 @@ public class UpToDateLineNumberProviderImpl implements UpToDateLineNumberProvide
private static int calcLineNumber(LineStatusTracker tracker, int currentNumber){
if (tracker == null) return -1;
List ranges = tracker.getRanges();
List<Range> ranges = tracker.getRanges();
int result = currentNumber;
for (final Object range1 : ranges) {
Range range = (Range)range1;
int startOffset = range.getLine1();
int endOffset = range.getLine2();
for (final Range range : ranges) {
int startLine = range.getLine1();
int endLine = range.getLine2();
if ((startOffset <= currentNumber) && (endOffset > currentNumber)) {
if ((startLine <= currentNumber) && (endLine > currentNumber)) {
return ABSENT_LINE_NUMBER;
}
if (endOffset > currentNumber) return result;
if (endLine > currentNumber) return result;
int currentRangeLength = endOffset - startOffset;
int currentRangeLength = endLine - startLine;
int vcsRangeLength = range.getVcsLine2() - range.getVcsLine1();
result += range.getUpToDateRangeLength() - currentRangeLength;
result += vcsRangeLength - currentRangeLength;
}
return result;