package org.argeo.slc.client.ui.dist.controllers;
import org.argeo.slc.client.ui.dist.model.DistParentElem;
-import org.argeo.slc.client.ui.dist.model.GroupElem;
+import org.argeo.slc.client.ui.dist.model.ModularDistVersionElem;
import org.argeo.slc.client.ui.dist.model.RepoElem;
+import org.argeo.slc.client.ui.dist.model.WkspGroupElem;
import org.argeo.slc.client.ui.dist.model.WorkspaceElem;
+import org.argeo.slc.client.ui.dist.utils.NameVersionComparator;
+import org.argeo.slc.client.ui.dist.utils.VersionComparator;
import org.eclipse.jface.viewers.Viewer;
import org.eclipse.jface.viewers.ViewerComparator;
-/** Specific behaviour to enhence Distribution tree browsers */
+/** Specific comparator to enhance Distribution tree browsers */
public class DistTreeComparator extends ViewerComparator {
+ private VersionComparator vc = new VersionComparator();
+ private NameVersionComparator nvc = new NameVersionComparator();
+
public int category(Object element) {
if (element instanceof RepoElem)
if (((RepoElem) element).inHome())
return 2;
else
return 5;
- else if (element instanceof GroupElem)
+ else if (element instanceof WkspGroupElem)
return 10;
else if (element instanceof WorkspaceElem)
return 15;
String s1, s2;
if (e1 instanceof DistParentElem) {
- s1 = ((DistParentElem) e1).getLabel();
- s2 = ((DistParentElem) e2).getLabel();
+ s1 = ((DistParentElem) e1).getName();
+ s2 = ((DistParentElem) e2).getName();
} else {
s1 = e1.toString();
s2 = e2.toString();
}
if (e1 instanceof WorkspaceElem)
+ // Reverse order for nameversions
+ return nvc.compare(viewer, s2, s1);
+ else if (e1 instanceof ModularDistVersionElem)
// Reverse order for versions
- return s2.compareTo(s1);
+ return vc.compare(viewer, s2, s1);
else
return s1.compareTo(s2);
}