]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/views/DistributionsView.java
Improve dist UI
[gpl/argeo-slc.git] / plugins / org.argeo.slc.client.ui.dist / src / main / java / org / argeo / slc / client / ui / dist / views / DistributionsView.java
index c401bb1113562217c9fd207affa22ca8e01cb2f2..633f5df390462e73691923846690ec531d6e00b8 100644 (file)
@@ -20,9 +20,13 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+import javax.jcr.Credentials;
+import javax.jcr.GuestCredentials;
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
+import javax.jcr.RepositoryFactory;
 import javax.jcr.Session;
+import javax.jcr.SimpleCredentials;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
@@ -67,6 +71,7 @@ public class DistributionsView extends ViewPart implements SlcNames {
        public final static String ID = DistPlugin.ID + ".distributionsView";
 
        private Repository repository;
+       private RepositoryFactory repositoryFactory;
 
        private TreeViewer viewer;
 
@@ -107,7 +112,31 @@ public class DistributionsView extends ViewPart implements SlcNames {
 
                // Initializes repositories
                // TODO make it more generic, with remote repositories etc.
-               repositories.add(new RepositoryElem("java", repository));
+               repositories.add(new RepositoryElem("java", repository, null));
+
+               // Remote
+               String uri = null;
+               Credentials credentials = null;
+               Repository remoteRepository = null;
+
+               uri = "http://dev.argeo.org/org.argeo.jcr.webapp/pub/java";
+               credentials = new GuestCredentials();
+               remoteRepository = JcrUtils.getRepositoryByUri(repositoryFactory, uri);
+               repositories.add(new RepositoryElem("anonymous@dev.argeo.org//java",
+                               remoteRepository, credentials));
+
+               uri = "http://localhost:7070/org.argeo.jcr.webapp/pub/java";
+               credentials = new GuestCredentials();
+               remoteRepository = JcrUtils.getRepositoryByUri(repositoryFactory, uri);
+               repositories.add(new RepositoryElem("anonymous@localhost//java",
+                               remoteRepository, credentials));
+
+               uri = "http://localhost:7070/org.argeo.jcr.webapp/remoting/java";
+               credentials = new SimpleCredentials(System.getProperty("user.name"),
+                               "".toCharArray());
+               remoteRepository = JcrUtils.getRepositoryByUri(repositoryFactory, uri);
+               repositories.add(new RepositoryElem("@localhost//java",
+                               remoteRepository, credentials));
 
                viewer.setInput(getSite());
 
@@ -129,6 +158,10 @@ public class DistributionsView extends ViewPart implements SlcNames {
                this.repository = repository;
        }
 
+       public void setRepositoryFactory(RepositoryFactory repositoryFactory) {
+               this.repositoryFactory = repositoryFactory;
+       }
+
        /** Programatically configure the context menu */
        protected void contextMenuAboutToShow(IMenuManager menuManager) {
                IWorkbenchWindow window = DistPlugin.getDefault().getWorkbench()
@@ -200,19 +233,21 @@ public class DistributionsView extends ViewPart implements SlcNames {
 
        }
 
+       /** Wraps a repository **/
        private static class RepositoryElem extends TreeParent {
                // private final Repository repository;
                private Session defaultSession;
 
-               public RepositoryElem(String name, Repository repository) {
+               public RepositoryElem(String name, Repository repository,
+                               Credentials credentials) {
                        super(name);
-                       // this.repository = repository;
                        try {
-                               defaultSession = repository.login();
+                               defaultSession = repository.login(credentials);
                                String[] workspaceNames = defaultSession.getWorkspace()
                                                .getAccessibleWorkspaceNames();
                                for (String workspace : workspaceNames)
-                                       addChild(new DistributionElem(repository, workspace));
+                                       addChild(new DistributionElem(repository, workspace,
+                                                       credentials));
                        } catch (RepositoryException e) {
                                ErrorFeedback.show("Cannot log to repository", e);
                        }
@@ -230,11 +265,14 @@ public class DistributionsView extends ViewPart implements SlcNames {
        private static class DistributionElem extends TreeParent {
                private final String workspaceName;
                private final Repository repository;
+               private final Credentials credentials;
 
-               public DistributionElem(Repository repository, String workspaceName) {
+               public DistributionElem(Repository repository, String workspaceName,
+                               Credentials credentials) {
                        super(workspaceName);
                        this.workspaceName = workspaceName;
                        this.repository = repository;
+                       this.credentials = credentials;
                }
 
                public String getWorkspaceName() {
@@ -244,6 +282,10 @@ public class DistributionsView extends ViewPart implements SlcNames {
                public Repository getRepository() {
                        return repository;
                }
+
+               public Credentials getCredentials() {
+                       return credentials;
+               }
        }
 
        @Override
@@ -263,8 +305,10 @@ public class DistributionsView extends ViewPart implements SlcNames {
                        if (obj instanceof DistributionElem) {
                                DistributionElem distributionElem = (DistributionElem) obj;
                                DistributionEditorInput dei = new DistributionEditorInput(
+                                               distributionElem.getName(),
                                                distributionElem.getRepository(),
-                                               distributionElem.getWorkspaceName());
+                                               distributionElem.getWorkspaceName(),
+                                               distributionElem.getCredentials());
                                try {
                                        DistPlugin.getDefault().getWorkbench()
                                                        .getActiveWorkbenchWindow().getActivePage()