1 package org
.argeo
.slc
.client
.ui
.dist
.controllers
;
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
.argeo
.slc
.client
.ui
.dist
.utils
.NameVersionComparator
;
9 import org
.argeo
.slc
.client
.ui
.dist
.utils
.VersionComparator
;
10 import org
.eclipse
.jface
.viewers
.Viewer
;
11 import org
.eclipse
.jface
.viewers
.ViewerComparator
;
13 /** Specific comparator to enhance Distribution tree browsers */
14 public class DistTreeComparator
extends ViewerComparator
{
16 private VersionComparator vc
= new VersionComparator();
17 private NameVersionComparator nvc
= new NameVersionComparator();
19 public int category(Object element
) {
20 if (element
instanceof RepoElem
)
21 if (((RepoElem
) element
).inHome())
22 // Home repository always first
26 else if (element
instanceof WkspGroupElem
)
28 else if (element
instanceof WorkspaceElem
)
34 public int compare(Viewer viewer
, Object e1
, Object e2
) {
35 int cat1
= category(e1
);
36 int cat2
= category(e2
);
44 if (e1
instanceof DistParentElem
) {
45 s1
= ((DistParentElem
) e1
).getName();
46 s2
= ((DistParentElem
) e2
).getName();
52 if (e1
instanceof WorkspaceElem
)
53 // Reverse order for nameversions
54 return nvc
.compare(viewer
, s2
, s1
);
55 else if (e1
instanceof ModularDistVersionElem
)
56 // Reverse order for versions
57 return vc
.compare(viewer
, s2
, s1
);
59 return s1
.compareTo(s2
);