]> git.argeo.org Git - lgpl/argeo-commons.git/blobdiff - eclipse/runtime/org.argeo.eclipse.ui.jcr/src/main/java/org/argeo/eclipse/ui/jcr/browser/NodeContentProvider.java
Introduce OSGi Explorer
[lgpl/argeo-commons.git] / eclipse / runtime / org.argeo.eclipse.ui.jcr / src / main / java / org / argeo / eclipse / ui / jcr / browser / NodeContentProvider.java
index f8a5de98f17a4f1eedb7787cbb84de0417961410..3e5bc1d8dd0fe0b1d879bc7e62d02caf43671cfe 100644 (file)
@@ -12,6 +12,7 @@ import javax.jcr.RepositoryException;
 import javax.jcr.Session;
 
 import org.argeo.ArgeoException;
+import org.argeo.jcr.JcrUtils;
 import org.argeo.jcr.RepositoryRegister;
 import org.eclipse.jface.viewers.ITreeContentProvider;
 import org.eclipse.jface.viewers.Viewer;
@@ -19,8 +20,23 @@ import org.eclipse.jface.viewers.Viewer;
 public class NodeContentProvider implements ITreeContentProvider {
        private ItemComparator itemComparator = new ItemComparator();
 
+       private RepositoryRegister repositoryRegister;
+       private Session userSession;
+
+       public NodeContentProvider(Session userSession,
+                       RepositoryRegister repositoryRegister) {
+               this.userSession = userSession;
+               this.repositoryRegister = repositoryRegister;
+       }
+
+       /** Sends back the first level of the Tree. Independent from inputElement that can be null*/
        public Object[] getElements(Object inputElement) {
-               return getChildren(inputElement);
+               List<Object> objs = new ArrayList<Object>();
+               if (userSession != null)
+                       objs.add(JcrUtils.getUserHome(userSession));
+               if (repositoryRegister != null)
+                       objs.add(repositoryRegister);
+               return objs.toArray();
        }
 
        public Object[] getChildren(Object parentElement) {
@@ -57,7 +73,10 @@ public class NodeContentProvider implements ITreeContentProvider {
                try {
                        if (element instanceof Node) {
                                Node node = (Node) element;
+                               if(!node.getPath().equals("/"))
                                return node.getParent();
+                               else
+                                       return null;
                        }
                        return null;
                } catch (RepositoryException e) {
@@ -73,6 +92,8 @@ public class NodeContentProvider implements ITreeContentProvider {
                                return ((RepositoryNode) element).hasChildren();
                        } else if (element instanceof WorkspaceNode) {
                                return ((WorkspaceNode) element).getSession() != null;
+                       } else if (element instanceof RepositoryRegister) {
+                               return ((RepositoryRegister) element).getRepositories().size() > 0;
                        }
                        return false;
                } catch (RepositoryException e) {