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
{
15 private static final long serialVersionUID
= -7386716562202568704L;
17 private VersionComparator vc
= new VersionComparator();
18 private NameVersionComparator nvc
= new NameVersionComparator();
20 public int category(Object element
) {
21 if (element
instanceof RepoElem
)
22 if (((RepoElem
) element
).inHome())
23 // Home repository always first
27 else if (element
instanceof WkspGroupElem
)
29 else if (element
instanceof WorkspaceElem
)
35 public int compare(Viewer viewer
, Object e1
, Object e2
) {
36 int cat1
= category(e1
);
37 int cat2
= category(e2
);
45 if (e1
instanceof DistParentElem
) {
46 s1
= ((DistParentElem
) e1
).getName();
47 s2
= ((DistParentElem
) e2
).getName();
53 if (e1
instanceof WorkspaceElem
)
54 // Reverse order for nameversions
55 return nvc
.compare(viewer
, s2
, s1
);
56 else if (e1
instanceof ModularDistVersionElem
)
57 // Reverse order for versions
58 return vc
.compare(viewer
, s2
, s1
);
60 return s1
.compareTo(s2
);