X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=eclipse%2Fplugins%2Forg.argeo.slc.client.ui.dist%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fslc%2Fclient%2Fui%2Fdist%2Fproviders%2FArtifactsTreeContentProvider.java;h=ebc61d3428c3cbac60fdf284fc05631a97b71610;hb=534a425eef6e54fa59be071809dbfeac3139e2fb;hp=289fef5e038f5ca87ce23aafa329c818a441e8bc;hpb=49080f09ed17e6331c95594b012cf1dd5bded8f6;p=gpl%2Fargeo-slc.git diff --git a/eclipse/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/providers/ArtifactsTreeContentProvider.java b/eclipse/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/providers/ArtifactsTreeContentProvider.java index 289fef5e0..ebc61d342 100644 --- a/eclipse/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/providers/ArtifactsTreeContentProvider.java +++ b/eclipse/plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/providers/ArtifactsTreeContentProvider.java @@ -1,6 +1,7 @@ package org.argeo.slc.client.ui.dist.providers; import java.util.ArrayList; +import java.util.Arrays; import java.util.List; import javax.jcr.Node; @@ -8,10 +9,18 @@ import javax.jcr.NodeIterator; import javax.jcr.RepositoryException; import org.argeo.ArgeoException; +import org.argeo.eclipse.ui.jcr.utils.JcrItemsComparator; +import org.argeo.slc.jcr.SlcTypes; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; -public class ArtifactsTreeContentProvider implements ITreeContentProvider { +public class ArtifactsTreeContentProvider implements ITreeContentProvider, + SlcTypes { + + // Utils + private boolean sortChildren = true; + private JcrItemsComparator itemComparator = new JcrItemsComparator(); + public Object[] getElements(Object parent) { return getChildren(parent); } @@ -30,7 +39,14 @@ public class ArtifactsTreeContentProvider implements ITreeContentProvider { while (ni.hasNext()) { nodesList.add(ni.nextNode()); } - elements = nodesList.toArray(); + if (sortChildren) { + Node[] arr = (Node[]) nodesList.toArray(new Node[nodesList + .size()]); + Arrays.sort(arr, itemComparator); + return arr; + } else + return nodesList.toArray(); + } } catch (RepositoryException e) { throw new ArgeoException( @@ -41,8 +57,13 @@ public class ArtifactsTreeContentProvider implements ITreeContentProvider { public boolean hasChildren(Object parent) { try { - if (parent instanceof Node && ((Node) parent).hasNodes()) { - return true; + if (parent instanceof Node) { + Node curNode = (Node) parent; + // We manually stop digging at this level + if (curNode.isNodeType(SLC_ARTIFACT_VERSION_BASE)) + return false; + else if (curNode.hasNodes()) + return true; } } catch (RepositoryException e) { throw new ArgeoException( @@ -52,6 +73,14 @@ public class ArtifactsTreeContentProvider implements ITreeContentProvider { return false; } + public void setSortChildren(boolean sortChildren) { + this.sortChildren = sortChildren; + } + + public boolean getSortChildren() { + return sortChildren; + } + public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { }