]>
git.argeo.org Git - gpl/argeo-slc.git/blob - plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/utils/AkbItemsComparator.java
1 package org
.argeo
.slc
.akb
.ui
.utils
;
4 import javax
.jcr
.Property
;
5 import javax
.jcr
.RepositoryException
;
7 import org
.argeo
.slc
.akb
.AkbException
;
8 import org
.argeo
.slc
.akb
.AkbTypes
;
9 import org
.argeo
.slc
.akb
.ui
.providers
.ActiveTreeItem
;
10 import org
.argeo
.slc
.akb
.utils
.AkbJcrUtils
;
11 import org
.eclipse
.jface
.viewers
.Viewer
;
12 import org
.eclipse
.jface
.viewers
.ViewerComparator
;
14 /** Enable specific sorting of the ResultTreeView */
15 public class AkbItemsComparator
extends ViewerComparator
{
18 public int category(Object element
) {
20 if (element
instanceof ActiveTreeItem
)
21 currNode
= ((ActiveTreeItem
) element
).getNode();
22 else if (element
instanceof Node
)
23 currNode
= (Node
) element
;
24 else if (element
instanceof String
)
25 // TODO why do we have strings
28 throw new AkbException("Unsupported tree item element type "
32 if (currNode
.isNodeType(AkbTypes
.AKB_ITEM_FOLDER
))
33 // folder always first
35 } catch (RepositoryException e
) {
36 throw new AkbException("Cannot retrieve category for item", e
);
42 public int compare(Viewer viewer
, Object e1
, Object e2
) {
43 int cat1
= category(e1
);
44 int cat2
= category(e2
);
50 // TODO we only check on one item, types are not mixed for the time
54 if (e1
instanceof ActiveTreeItem
) {
55 an
= ((ActiveTreeItem
) e1
).getNode();
56 bn
= ((ActiveTreeItem
) e2
).getNode();
57 } else if (e1
instanceof Node
) {
61 throw new AkbException("Unsupported tree item element type " + e1
);
63 return super.compare(viewer
, AkbJcrUtils
.get(an
, Property
.JCR_TITLE
),
64 AkbJcrUtils
.get(bn
, Property
.JCR_TITLE
));