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;
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) {
try {
if (element instanceof Node) {
Node node = (Node) element;
+ if(!node.getPath().equals("/"))
return node.getParent();
+ else
+ return null;
}
return null;
} catch (RepositoryException e) {
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) {