]> git.argeo.org Git - gpl/argeo-slc.git/blob - plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/controllers/DistTreeComparator.java
c5b17e089266ee529756a9cc8dddd611661595c0
[gpl/argeo-slc.git] / plugins / org.argeo.slc.client.ui.dist / src / main / java / org / argeo / slc / client / ui / dist / controllers / DistTreeComparator.java
1 package org.argeo.slc.client.ui.dist.controllers;
2
3 import org.argeo.slc.client.ui.dist.model.DistParentElem;
4 import org.argeo.slc.client.ui.dist.model.ModularDistVersionElem;
5 import org.argeo.slc.client.ui.dist.model.RepoElem;
6 import org.argeo.slc.client.ui.dist.model.WkspGroupElem;
7 import org.argeo.slc.client.ui.dist.model.WorkspaceElem;
8 import org.eclipse.jface.viewers.Viewer;
9 import org.eclipse.jface.viewers.ViewerComparator;
10
11 /** Specific comparator to enhance Distribution tree browsers */
12 public class DistTreeComparator extends ViewerComparator {
13
14 public int category(Object element) {
15 if (element instanceof RepoElem)
16 if (((RepoElem) element).inHome())
17 // Home repository always first
18 return 2;
19 else
20 return 5;
21 else if (element instanceof WkspGroupElem)
22 return 10;
23 else if (element instanceof WorkspaceElem)
24 return 15;
25 else
26 return 20;
27 }
28
29 public int compare(Viewer viewer, Object e1, Object e2) {
30 int cat1 = category(e1);
31 int cat2 = category(e2);
32
33 if (cat1 != cat2) {
34 return cat1 - cat2;
35 }
36
37 String s1, s2;
38
39 if (e1 instanceof DistParentElem) {
40 s1 = ((DistParentElem) e1).getName();
41 s2 = ((DistParentElem) e2).getName();
42 } else {
43 s1 = e1.toString();
44 s2 = e2.toString();
45 }
46
47 if (e1 instanceof WorkspaceElem || e1 instanceof ModularDistVersionElem)
48 // Reverse order for versions
49 return s2.compareTo(s1);
50 else
51 return s1.compareTo(s2);
52 }
53 }