X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;ds=sidebyside;f=server%2Fplugins%2Forg.argeo.jcr.ui.explorer%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fjcr%2Fui%2Fexplorer%2Fviews%2FGenericJcrBrowser.java;h=292fc816e00ffdc8ce2f3f89576b3fa699e49767;hb=8b8ee149b20e2578a55e17413fa5f7399ff7ba14;hp=ee28eb863ec6dfed819fd5cc5961574447b5998b;hpb=f8040c479e5c098c9ef1809baefd05c00dccdc63;p=lgpl%2Fargeo-commons.git diff --git a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/views/GenericJcrBrowser.java b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/views/GenericJcrBrowser.java index ee28eb863..292fc816e 100644 --- a/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/views/GenericJcrBrowser.java +++ b/server/plugins/org.argeo.jcr.ui.explorer/src/main/java/org/argeo/jcr/ui/explorer/views/GenericJcrBrowser.java @@ -1,13 +1,12 @@ package org.argeo.jcr.ui.explorer.views; -import java.util.Arrays; import java.util.List; import javax.jcr.Property; import javax.jcr.PropertyType; -import javax.jcr.Repository; import javax.jcr.RepositoryException; import javax.jcr.Session; +import javax.jcr.Value; import javax.jcr.observation.Event; import javax.jcr.observation.EventListener; import javax.jcr.observation.ObservationManager; @@ -17,9 +16,9 @@ import org.argeo.eclipse.ui.TreeParent; import org.argeo.eclipse.ui.jcr.AsyncUiEventListener; import org.argeo.eclipse.ui.jcr.utils.NodeViewerComparer; import org.argeo.eclipse.ui.jcr.views.AbstractJcrBrowser; -import org.argeo.jcr.ArgeoJcrConstants; -import org.argeo.jcr.JcrUtils; import org.argeo.jcr.RepositoryRegister; +import org.argeo.jcr.security.JcrKeyring; +import org.argeo.jcr.ui.explorer.JcrExplorerPlugin; import org.argeo.jcr.ui.explorer.browser.NodeContentProvider; import org.argeo.jcr.ui.explorer.browser.NodeLabelProvider; import org.argeo.jcr.ui.explorer.browser.PropertiesContentProvider; @@ -53,9 +52,11 @@ import org.eclipse.swt.widgets.Menu; public class GenericJcrBrowser extends AbstractJcrBrowser { // private final static Log log = // LogFactory.getLog(GenericJcrBrowser.class); + public final static String ID = JcrExplorerPlugin.ID + ".browserView"; + private boolean sortChildNodes = false; /* DEPENDENCY INJECTION */ - private Session session; + private JcrKeyring jcrKeyring; private RepositoryRegister repositoryRegister; // This page widgets @@ -66,26 +67,26 @@ public class GenericJcrBrowser extends AbstractJcrBrowser { // Manage documents // private JcrFileProvider jcrFileProvider; - // private FileHandler fileHandler; @Override public void createPartControl(Composite parent) { // look for session - Session nodeSession = session; - if (nodeSession == null) { - Repository nodeRepository = JcrUtils.getRepositoryByAlias( - repositoryRegister, ArgeoJcrConstants.ALIAS_NODE); - if (nodeRepository != null) - try { - nodeSession = nodeRepository.login(); - // TODO : enhance that to enable multirepository listener. - session = nodeSession; - } catch (RepositoryException e1) { - throw new ArgeoException("Cannot login to node repository"); - } - } + Session nodeSession = jcrKeyring != null ? jcrKeyring.getSession() + : null; + // if (nodeSession == null) { + // Repository nodeRepository = JcrUtils.getRepositoryByAlias( + // repositoryRegister, ArgeoJcrConstants.ALIAS_NODE); + // if (nodeRepository != null) + // try { + // nodeSession = nodeRepository.login(); + // // TODO : enhance that to enable multirepository listener. + // session = nodeSession; + // } catch (RepositoryException e1) { + // throw new ArgeoException("Cannot login to node repository"); + // } + // } // Instantiate the generic object that fits for // both RCP & RAP @@ -104,7 +105,7 @@ public class GenericJcrBrowser extends AbstractJcrBrowser { GridLayout gl = new GridLayout(1, false); top.setLayout(gl); - nodeContentProvider = new NodeContentProvider(nodeSession, + nodeContentProvider = new NodeContentProvider(jcrKeyring, repositoryRegister); // nodes viewer @@ -151,9 +152,17 @@ public class GenericJcrBrowser extends AbstractJcrBrowser { Property property = (Property) element; if (property.getType() == PropertyType.BINARY) return ""; - else if (property.isMultiple()) - return Arrays.asList(property.getValues()).toString(); - else + else if (property.isMultiple()) { + StringBuffer buf = new StringBuffer("["); + Value[] values = property.getValues(); + for (int i = 0; i < values.length; i++) { + if (i != 0) + buf.append(", "); + buf.append(values[i].getString()); + } + buf.append(']'); + return buf.toString(); + } else return property.getValue().getString(); } catch (RepositoryException e) { throw new ArgeoException( @@ -216,15 +225,16 @@ public class GenericJcrBrowser extends AbstractJcrBrowser { }); resultsObserver = new TreeObserver(tmpNodeViewer.getTree().getDisplay()); - try { - ObservationManager observationManager = session.getWorkspace() - .getObservationManager(); - observationManager.addEventListener(resultsObserver, - Event.PROPERTY_ADDED | Event.PROPERTY_CHANGED, "/", true, - null, null, false); - } catch (RepositoryException e) { - throw new ArgeoException("Cannot register listeners", e); - } + if (jcrKeyring != null) + try { + ObservationManager observationManager = jcrKeyring.getSession() + .getWorkspace().getObservationManager(); + observationManager.addEventListener(resultsObserver, + Event.PROPERTY_ADDED | Event.PROPERTY_CHANGED, "/", + true, null, null, false); + } catch (RepositoryException e) { + throw new ArgeoException("Cannot register listeners", e); + } tmpNodeViewer .addDoubleClickListener(new GenericNodeDoubleClickListener( @@ -285,13 +295,21 @@ public class GenericJcrBrowser extends AbstractJcrBrowser { } + public void setSortChildNodes(boolean sortChildNodes) { + this.sortChildNodes = sortChildNodes; + } + + public boolean getSortChildNodes() { + return sortChildNodes; + } + /* DEPENDENCY INJECTION */ public void setRepositoryRegister(RepositoryRegister repositoryRegister) { this.repositoryRegister = repositoryRegister; } - public void setSession(Session session) { - this.session = session; + public void setJcrKeyring(JcrKeyring jcrKeyring) { + this.jcrKeyring = jcrKeyring; } }