X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=server%2Fplugins%2Forg.argeo.jcr.ui.explorer%2Fsrc%2Fmain%2Fjava%2Forg%2Fargeo%2Fjcr%2Fui%2Fexplorer%2Fviews%2FGenericJcrBrowser.java;h=9ae1b0b6302ab21c2141b0401be91e7569d66e3c;hb=3baeb167c9a92d1f915904bb956632c0aff65b2b;hp=da015010f9e0fe1d32c7d3a66371b96c017d7ce6;hpb=82e079d95c38d7136944d79394b9efd82a2864dd;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 da015010f..9ae1b0b63 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,16 +1,33 @@ +/* + * Copyright (C) 2007-2012 Mathieu Baudier + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ 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.RepositoryException; -import javax.jcr.Session; +import javax.jcr.RepositoryFactory; +import javax.jcr.Value; import javax.jcr.observation.Event; import javax.jcr.observation.EventListener; import javax.jcr.observation.ObservationManager; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.argeo.ArgeoException; import org.argeo.eclipse.ui.TreeParent; import org.argeo.eclipse.ui.jcr.AsyncUiEventListener; @@ -18,6 +35,7 @@ import org.argeo.eclipse.ui.jcr.utils.NodeViewerComparer; import org.argeo.eclipse.ui.jcr.views.AbstractJcrBrowser; 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; @@ -49,12 +67,14 @@ import org.eclipse.swt.widgets.Menu; */ public class GenericJcrBrowser extends AbstractJcrBrowser { - // private final static Log log = - // LogFactory.getLog(GenericJcrBrowser.class); + private final static Log log = LogFactory.getLog(GenericJcrBrowser.class); + public final static String ID = JcrExplorerPlugin.ID + ".browserView"; + private boolean sortChildNodes = false; /* DEPENDENCY INJECTION */ private JcrKeyring jcrKeyring; private RepositoryRegister repositoryRegister; + private RepositoryFactory repositoryFactory; // This page widgets private TreeViewer nodesViewer; @@ -64,15 +84,14 @@ public class GenericJcrBrowser extends AbstractJcrBrowser { // Manage documents // private JcrFileProvider jcrFileProvider; - // private FileHandler fileHandler; @Override public void createPartControl(Composite parent) { // look for session - Session nodeSession = jcrKeyring != null ? jcrKeyring.getSession() - : null; + // Session nodeSession = jcrKeyring != null ? jcrKeyring.getSession() + // : null; // if (nodeSession == null) { // Repository nodeRepository = JcrUtils.getRepositoryByAlias( // repositoryRegister, ArgeoJcrConstants.ALIAS_NODE); @@ -80,7 +99,6 @@ public class GenericJcrBrowser extends AbstractJcrBrowser { // try { // nodeSession = nodeRepository.login(); // // TODO : enhance that to enable multirepository listener. - // session = nodeSession; // } catch (RepositoryException e1) { // throw new ArgeoException("Cannot login to node repository"); // } @@ -104,7 +122,7 @@ public class GenericJcrBrowser extends AbstractJcrBrowser { top.setLayout(gl); nodeContentProvider = new NodeContentProvider(jcrKeyring, - repositoryRegister); + repositoryRegister, repositoryFactory, sortChildNodes); // nodes viewer nodesViewer = createNodeViewer(top, nodeContentProvider); @@ -122,59 +140,7 @@ public class GenericJcrBrowser extends AbstractJcrBrowser { // Create the property viewer on the bottom Composite bottom = new Composite(sashForm, SWT.NONE); bottom.setLayout(new GridLayout(1, false)); - propertiesViewer = new TableViewer(bottom); - propertiesViewer.getTable().setLayoutData( - new GridData(SWT.FILL, SWT.FILL, true, true)); - propertiesViewer.getTable().setHeaderVisible(true); - propertiesViewer.setContentProvider(new PropertiesContentProvider()); - TableViewerColumn col = new TableViewerColumn(propertiesViewer, - SWT.NONE); - col.getColumn().setText("Name"); - col.getColumn().setWidth(200); - col.setLabelProvider(new ColumnLabelProvider() { - public String getText(Object element) { - try { - return ((Property) element).getName(); - } catch (RepositoryException e) { - throw new ArgeoException( - "Unexpected exception in label provider", e); - } - } - }); - col = new TableViewerColumn(propertiesViewer, SWT.NONE); - col.getColumn().setText("Value"); - col.getColumn().setWidth(400); - col.setLabelProvider(new ColumnLabelProvider() { - public String getText(Object element) { - try { - Property property = (Property) element; - if (property.getType() == PropertyType.BINARY) - return ""; - else if (property.isMultiple()) - return Arrays.asList(property.getValues()).toString(); - else - return property.getValue().getString(); - } catch (RepositoryException e) { - throw new ArgeoException( - "Unexpected exception in label provider", e); - } - } - }); - col = new TableViewerColumn(propertiesViewer, SWT.NONE); - col.getColumn().setText("Type"); - col.getColumn().setWidth(200); - col.setLabelProvider(new ColumnLabelProvider() { - public String getText(Object element) { - try { - return PropertyType.nameFromValue(((Property) element) - .getType()); - } catch (RepositoryException e) { - throw new ArgeoException( - "Unexpected exception in label provider", e); - } - } - }); - propertiesViewer.setInput(getViewSite()); + propertiesViewer = createPropertiesViewer(bottom); sashForm.setWeights(getWeights()); nodesViewer.setComparer(new NodeViewerComparer()); @@ -217,6 +183,7 @@ public class GenericJcrBrowser extends AbstractJcrBrowser { resultsObserver = new TreeObserver(tmpNodeViewer.getTree().getDisplay()); if (jcrKeyring != null) try { + log.debug("userID=" + jcrKeyring.getSession().getUserID()); ObservationManager observationManager = jcrKeyring.getSession() .getWorkspace().getObservationManager(); observationManager.addEventListener(resultsObserver, @@ -232,6 +199,76 @@ public class GenericJcrBrowser extends AbstractJcrBrowser { return tmpNodeViewer; } + protected TableViewer createPropertiesViewer(Composite parent) { + propertiesViewer = new TableViewer(parent); + propertiesViewer.getTable().setLayoutData( + new GridData(SWT.FILL, SWT.FILL, true, true)); + propertiesViewer.getTable().setHeaderVisible(true); + propertiesViewer.setContentProvider(new PropertiesContentProvider()); + TableViewerColumn col = new TableViewerColumn(propertiesViewer, + SWT.NONE); + col.getColumn().setText("Name"); + col.getColumn().setWidth(200); + col.setLabelProvider(new ColumnLabelProvider() { + public String getText(Object element) { + try { + return ((Property) element).getName(); + } catch (RepositoryException e) { + throw new ArgeoException( + "Unexpected exception in label provider", e); + } + } + }); + col = new TableViewerColumn(propertiesViewer, SWT.NONE); + col.getColumn().setText("Value"); + col.getColumn().setWidth(400); + col.setLabelProvider(new ColumnLabelProvider() { + public String getText(Object element) { + try { + Property property = (Property) element; + if (property.getType() == PropertyType.BINARY) + return ""; + 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( + "Unexpected exception in label provider", e); + } + } + }); + col = new TableViewerColumn(propertiesViewer, SWT.NONE); + col.getColumn().setText("Type"); + col.getColumn().setWidth(200); + col.setLabelProvider(new ColumnLabelProvider() { + public String getText(Object element) { + try { + return PropertyType.nameFromValue(((Property) element) + .getType()); + } catch (RepositoryException e) { + throw new ArgeoException( + "Unexpected exception in label provider", e); + } + } + }); + propertiesViewer.setInput(getViewSite()); + return propertiesViewer; + } + + @Override + public void dispose() { + super.dispose(); + } + @Override protected TreeViewer getNodeViewer() { return nodesViewer; @@ -285,6 +322,14 @@ 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; @@ -294,4 +339,8 @@ public class GenericJcrBrowser extends AbstractJcrBrowser { this.jcrKeyring = jcrKeyring; } + public void setRepositoryFactory(RepositoryFactory repositoryFactory) { + this.repositoryFactory = repositoryFactory; + } + }