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=937290c341d255322e7bc4381461db10359252b1;hb=a753fd2278254345bc114cf146a034ad8d3df7aa;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..937290c34 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,22 @@ +/* + * Copyright (C) 2007-2012 Mathieu Baudier + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ 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 +24,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 +54,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 +72,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 +88,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) { }