1 package org.vaadin.aceeditor.client; 2 3 import org.vaadin.aceeditor.client.TransportDiff.TransportRangeDiff; 4 5 public class RangeDiff { 6 private final int drow1; 7 private final int dcol1; 8 private final int drow2; 9 private final int dcol2; 10 11 public RangeDiff(int drow1, int dcol1, int drow2, int dcol2) { 12 this.drow1 = drow1; 13 this.dcol1 = dcol1; 14 this.drow2 = drow2; 15 this.dcol2 = dcol2; 16 } 17 18 public static RangeDiff diff(AceRange r1, AceRange r2) { 19 return new RangeDiff( 20 r2.getStartRow() - r1.getStartRow(), 21 r2.getStartCol() - r1.getStartCol(), 22 r2.getEndRow() - r1.getEndRow(), 23 r2.getEndCol() - r1.getEndCol()); 24 } 25 26 public boolean isIdentity() { 27 return drow1==0 && dcol1==0 && drow2==0 && dcol2==0; 28 } 29 30 public AceRange applyTo(AceRange r) { 31 return new AceRange( 32 r.getStartRow() + drow1, 33 r.getStartCol() + dcol1, 34 r.getEndRow() + drow2, 35 r.getEndCol() + dcol2); 36 } 37 38 @Override 39 public String toString() { 40 return "(("+drow1+","+dcol1+"), ("+drow2+","+dcol2+"))"; 41 } 42 43 public TransportRangeDiff asTransport() { 44 return new TransportRangeDiff(drow1, dcol1, drow2, dcol2); 45 } 46 47 public static RangeDiff fromTransport(TransportRangeDiff trd) { 48 return new RangeDiff(trd.drow1, trd.dcol1, trd.drow2, trd.dcol2); 49 } 50 51 }