first version of 'Code Assist" template engine
[phpeclipse.git] / net.sourceforge.phpeclipse / src / net / sourceforge / phpdt / internal / corext / textmanipulation / TextEditNodeComparator.java
1 /*
2  * (c) Copyright IBM Corp. 2000, 2001.
3  * All Rights Reserved.
4  */
5 package net.sourceforge.phpdt.internal.corext.textmanipulation;
6
7 import java.util.Comparator;
8
9
10 /**
11  * A special comparator to comapre <code>TextRange</code>s.
12  */
13 /* package */ class TextEditNodeComparator  implements Comparator {
14         public int compare(Object o1, Object o2) {
15                 TextEditNode node1= (TextEditNode)o1;
16                 TextEditNode node2= (TextEditNode)o2;
17                 TextRange pos1= node1.getTextRange();
18                 TextRange pos2= node2.getTextRange();
19                 
20                 int offset1= pos1.fOffset;
21                 int offset2= pos2.fOffset;
22                 if (offset1 < offset2)
23                         return -1;
24                 if (offset1 > offset2)
25                         return 1;
26
27                 // same offset
28                 int length1= pos1.fLength;
29                 int length2= pos2.fLength;
30                 
31                 // insertion points come before anything else at the same position.
32                 if (length1 == 0 && length2 != 0)
33                         return -1;
34                 if (length1 != 0 && length2 == 0)
35                         return 1;
36                 
37                 // Longer edits come before shorter edits
38                 if (length1 <  length2)
39                         return 1;
40                 if (length1 > length2)
41                         return -1;
42                 
43                 if (node1.fEdit.index < node2.fEdit.index)
44                         return -1;
45                 return 1;       
46         }       
47 }
48