/* * (c) Copyright IBM Corp. 2000, 2001. * All Rights Reserved. */ package net.sourceforge.phpdt.internal.corext.textmanipulation; import java.util.Comparator; /** * A special comparator to comapre TextRanges. */ /* package */class TextEditNodeComparator implements Comparator { public int compare(Object o1, Object o2) { TextEditNode node1 = (TextEditNode) o1; TextEditNode node2 = (TextEditNode) o2; TextRange pos1 = node1.getTextRange(); TextRange pos2 = node2.getTextRange(); int offset1 = pos1.fOffset; int offset2 = pos2.fOffset; if (offset1 < offset2) return -1; if (offset1 > offset2) return 1; // same offset int length1 = pos1.fLength; int length2 = pos2.fLength; // insertion points come before anything else at the same position. if (length1 == 0 && length2 != 0) return -1; if (length1 != 0 && length2 == 0) return 1; // Longer edits come before shorter edits if (length1 < length2) return 1; if (length1 > length2) return -1; if (node1.fEdit.index < node2.fEdit.index) return -1; return 1; } }