1 package org
.argeo
.slc
.client
.ui
.model
;
4 import javax
.jcr
.Property
;
5 import javax
.jcr
.RepositoryException
;
7 import org
.argeo
.eclipse
.ui
.TreeParent
;
8 import org
.argeo
.slc
.SlcException
;
9 import org
.argeo
.slc
.jcr
.SlcNames
;
10 import org
.argeo
.slc
.jcr
.SlcTypes
;
11 import org
.eclipse
.jface
.viewers
.Viewer
;
12 import org
.eclipse
.jface
.viewers
.ViewerComparator
;
14 /** Enable specific sorting of the ResultTreeView */
15 public class ResultItemsComparator
extends ViewerComparator
{
18 public int category(Object element
) {
19 if (element
instanceof SingleResultNode
) {
23 // folder always first
28 public int compare(Viewer viewer
, Object e1
, Object e2
) {
29 int cat1
= category(e1
);
30 int cat2
= category(e2
);
38 if (e1
instanceof TreeParent
&& ((TreeParent
) e1
).getParent() == null) {
39 // preserve predefined order on UI root items
43 if (e1
instanceof SingleResultNode
&& e2
instanceof SingleResultNode
) {
44 Node an
= ((SingleResultNode
) e1
).getNode();
45 Node bn
= ((SingleResultNode
) e2
).getNode();
47 // Order is different if we are under my Result or )in the
48 // rest of the tree structure
49 if (an
.getParent().isNodeType(
50 SlcTypes
.SLC_MY_RESULT_ROOT_FOLDER
)
52 .isNodeType(SlcTypes
.SLC_RESULT_FOLDER
)) {
53 result
= super.compare(viewer
, e1
, e2
);
54 // Specific case of two result with same name
57 .getProperty(SlcNames
.SLC_COMPLETED
)
60 bn
.getProperty(SlcNames
.SLC_COMPLETED
)
65 .getProperty(Property
.JCR_CREATED
)
68 bn
.getProperty(Property
.JCR_CREATED
)
70 result
= result
* -1; // last are displayed first
72 } catch (RepositoryException e
) {
73 throw new SlcException("Unable to compare date created", e
);
76 // only remaining objects for the time being
77 // NT_UNSTRUCTURED that display all result tree structures
78 // We want the newest folders first
79 result
= super.compare(viewer
, e1
, e2
) * -1;