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;
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;
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
// 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
GridLayout gl = new GridLayout(1, false);
top.setLayout(gl);
- nodeContentProvider = new NodeContentProvider(nodeSession,
+ nodeContentProvider = new NodeContentProvider(jcrKeyring,
repositoryRegister);
// nodes viewer
Property property = (Property) element;
if (property.getType() == PropertyType.BINARY)
return "<binary>";
- 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(
});
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(
}
+ 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;
}
}