summaryrefslogtreecommitdiff
path: root/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/Range.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/vcs-impl/src/com/intellij/openapi/vcs/ex/Range.java')
-rw-r--r--platform/vcs-impl/src/com/intellij/openapi/vcs/ex/Range.java84
1 files changed, 38 insertions, 46 deletions
diff --git a/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/Range.java b/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/Range.java
index e166acd30fec..e788b1849ce3 100644
--- a/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/Range.java
+++ b/platform/vcs-impl/src/com/intellij/openapi/vcs/ex/Range.java
@@ -31,29 +31,28 @@ public class Range {
public static final byte INSERTED = 2;
public static final byte DELETED = 3;
- // offset1/offset2 - line numbers
// (2,3) - modified 2nd line
// (2,2) - empty range between 1 and 2 lines
// index of first line is 0
- private int myOffset1;
- private int myOffset2;
- private final int myUpToDateOffset1;
- private final int myUpToDateOffset2;
+ private int myLine1;
+ private int myLine2;
+ private final int myVcsLine1;
+ private final int myVcsLine2;
private final byte myType;
@Nullable private RangeHighlighter myRangeHighlighter;
private boolean myValid = true;
- public static Range createOn(@NotNull Diff.Change change, int shift, int upToDateShift) {
+ public static Range createOn(@NotNull Diff.Change change, int shift, int vcsShift) {
byte type = getChangeTypeFrom(change);
- int offset1 = shift + change.line1;
- int offset2 = offset1 + change.inserted;
+ int line1 = shift + change.line1;
+ int line2 = line1 + change.inserted;
- int uOffset1 = upToDateShift + change.line0;
- int uOffset2 = uOffset1 + change.deleted;
+ int vcsLine1 = vcsShift + change.line0;
+ int vcsLine2 = vcsLine1 + change.deleted;
- return new Range(offset1, offset2, uOffset1, uOffset2, type);
+ return new Range(line1, line2, vcsLine1, vcsLine2, type);
}
private static byte getChangeTypeFrom(@NotNull Diff.Change change) {
@@ -64,31 +63,35 @@ public class Range {
return 0;
}
- public Range(int offset1, int offset2, int uOffset1, int uOffset2, byte type) {
- myOffset1 = offset1;
- myOffset2 = offset2;
- myUpToDateOffset1 = uOffset1;
- myUpToDateOffset2 = uOffset2;
+ public Range(@NotNull Range range) {
+ this(range.getLine1(), range.getLine2(), range.getVcsLine1(), range.getVcsLine2(), range.getType());
+ }
+
+ public Range(int line1, int line2, int vcsLine1, int vcsLine2, byte type) {
+ myLine1 = line1;
+ myLine2 = line2;
+ myVcsLine1 = vcsLine1;
+ myVcsLine2 = vcsLine2;
myType = type;
}
public int hashCode() {
- return myUpToDateOffset1 ^ myUpToDateOffset2 ^ myType ^ myOffset1 ^ myOffset2;
+ return myVcsLine1 ^ myVcsLine2 ^ myType ^ myLine1 ^ myLine2;
}
public boolean equals(Object object) {
if (!(object instanceof Range)) return false;
Range other = (Range)object;
return
- (myUpToDateOffset1 == other.myUpToDateOffset1)
- && (myUpToDateOffset2 == other.myUpToDateOffset2)
- && (myOffset1 == other.myOffset1)
- && (myOffset2 == other.myOffset2)
+ (myVcsLine1 == other.myVcsLine1)
+ && (myVcsLine2 == other.myVcsLine2)
+ && (myLine1 == other.myLine1)
+ && (myLine2 == other.myLine2)
&& (myType == other.myType);
}
public String toString() {
- return String.format("%s, %s, %s, %s, %s", myOffset1, myOffset2, myUpToDateOffset1, myUpToDateOffset2, getTypeName());
+ return String.format("%s, %s, %s, %s, %s", myLine1, myLine2, myVcsLine1, myVcsLine2, getTypeName());
}
@NonNls
@@ -109,43 +112,32 @@ public class Range {
}
public int getUpToDateRangeLength() {
- return myUpToDateOffset2 - myUpToDateOffset1;
+ return myVcsLine2 - myVcsLine1;
}
public void shift(int shift) {
- myOffset1 += shift;
- myOffset2 += shift;
- }
-
- public int getOffset1() {
- return myOffset1;
- }
-
- public int getOffset2() {
- return myOffset2;
+ myLine1 += shift;
+ myLine2 += shift;
}
- public int getUOffset1() {
- return myUpToDateOffset1;
+ public int getLine1() {
+ return myLine1;
}
- public int getUOffset2() {
- return myUpToDateOffset2;
+ public int getLine2() {
+ return myLine2;
}
- public boolean canBeMergedWith(@NotNull Range range) {
- return myOffset2 == range.myOffset1;
+ public int getVcsLine1() {
+ return myVcsLine1;
}
- @NotNull
- public Range mergeWith(@NotNull Range range) {
- return new Range(myOffset1, range.myOffset2, myUpToDateOffset1, range.myUpToDateOffset2, mergedStatusWith(range));
+ public int getVcsLine2() {
+ return myVcsLine2;
}
- private byte mergedStatusWith(@NotNull Range range) {
- byte type = myType;
- if (myType != range.myType) type = MODIFIED;
- return type;
+ public boolean rightBefore(@NotNull Range range) {
+ return myLine2 == range.myLine1;
}
public boolean hasHighlighter() {