|
Lines 10-25
Link Here
|
| 10 |
*******************************************************************************/ |
10 |
*******************************************************************************/ |
| 11 |
package org.eclipse.compare.structuremergeviewer; |
11 |
package org.eclipse.compare.structuremergeviewer; |
| 12 |
|
12 |
|
| 13 |
import java.util.Comparator; |
|
|
| 14 |
import java.util.Iterator; |
13 |
import java.util.Iterator; |
| 15 |
import java.util.ResourceBundle; |
14 |
import java.util.ResourceBundle; |
| 16 |
import java.util.regex.Pattern; |
|
|
| 17 |
|
15 |
|
| 18 |
import org.eclipse.compare.*; |
16 |
import org.eclipse.compare.*; |
| 19 |
import org.eclipse.compare.internal.Utilities; |
17 |
import org.eclipse.compare.internal.Utilities; |
|
|
18 |
import org.eclipse.compare.internal.patch.DiffViewerComparator; |
| 20 |
import org.eclipse.jface.action.*; |
19 |
import org.eclipse.jface.action.*; |
| 21 |
import org.eclipse.jface.util.IPropertyChangeListener; |
20 |
import org.eclipse.jface.util.IPropertyChangeListener; |
| 22 |
import org.eclipse.jface.util.Policy; |
|
|
| 23 |
import org.eclipse.jface.util.PropertyChangeEvent; |
21 |
import org.eclipse.jface.util.PropertyChangeEvent; |
| 24 |
import org.eclipse.jface.viewers.*; |
22 |
import org.eclipse.jface.viewers.*; |
| 25 |
import org.eclipse.swt.SWT; |
23 |
import org.eclipse.swt.SWT; |
|
Lines 41-83
Link Here
|
| 41 |
*/ |
39 |
*/ |
| 42 |
public class DiffTreeViewer extends TreeViewer { |
40 |
public class DiffTreeViewer extends TreeViewer { |
| 43 |
|
41 |
|
| 44 |
static class DiffViewerComparator extends ViewerComparator { |
|
|
| 45 |
|
| 46 |
public boolean isSorterProperty(Object element, Object property) { |
| 47 |
return false; |
| 48 |
} |
| 49 |
|
| 50 |
public int category(Object node) { |
| 51 |
if (node instanceof DiffNode) { |
| 52 |
Object o= ((DiffNode) node).getId(); |
| 53 |
if (o instanceof DocumentRangeNode) |
| 54 |
return ((DocumentRangeNode) o).getTypeCode(); |
| 55 |
} |
| 56 |
return 0; |
| 57 |
} |
| 58 |
|
| 59 |
protected Comparator getComparator() { |
| 60 |
return new Comparator() { |
| 61 |
public int compare(Object arg0, Object arg1) { |
| 62 |
String label0 = arg0 == null ? "" : arg0.toString(); //$NON-NLS-1$ |
| 63 |
String label1 = arg1 == null ? "" : arg1.toString(); //$NON-NLS-1$ |
| 64 |
|
| 65 |
// see org.eclipse.compare.internal.patch.Hunk.getDescription() |
| 66 |
String pattern = "\\d+,\\d+ -> \\d+,\\d+.*"; //$NON-NLS-1$ |
| 67 |
|
| 68 |
if (Pattern.matches(pattern, label0) |
| 69 |
&& Pattern.matches(pattern, label1)) { |
| 70 |
int oldStart0 = Integer.parseInt(label0.split(",")[0]); //$NON-NLS-1$ |
| 71 |
int oldStart1 = Integer.parseInt(label1.split(",")[0]); //$NON-NLS-1$ |
| 72 |
|
| 73 |
return oldStart0 - oldStart1; |
| 74 |
} |
| 75 |
return Policy.getComparator().compare(arg0, arg1); |
| 76 |
} |
| 77 |
}; |
| 78 |
} |
| 79 |
} |
| 80 |
|
| 81 |
class DiffViewerContentProvider implements ITreeContentProvider { |
42 |
class DiffViewerContentProvider implements ITreeContentProvider { |
| 82 |
|
43 |
|
| 83 |
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { |
44 |
public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { |