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=292fc816e00ffdc8ce2f3f89576b3fa699e49767;hpb=8b8ee149b20e2578a55e17413fa5f7399ff7ba14;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 292fc816e..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,3 +1,18 @@ +/* + * 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.List; @@ -5,12 +20,14 @@ 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; @@ -50,14 +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; @@ -73,8 +90,8 @@ public class GenericJcrBrowser extends AbstractJcrBrowser { 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); @@ -82,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"); // } @@ -106,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); @@ -124,7 +140,67 @@ 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 = createPropertiesViewer(bottom); + + sashForm.setWeights(getWeights()); + nodesViewer.setComparer(new NodeViewerComparer()); + } + + /** + * To be overridden to adapt size of form and result frames. + */ + protected int[] getWeights() { + return new int[] { 70, 30 }; + } + + protected TreeViewer createNodeViewer(Composite parent, + final ITreeContentProvider nodeContentProvider) { + + final TreeViewer tmpNodeViewer = new TreeViewer(parent, SWT.MULTI); + + tmpNodeViewer.getTree().setLayoutData( + new GridData(SWT.FILL, SWT.FILL, true, true)); + + tmpNodeViewer.setContentProvider(nodeContentProvider); + tmpNodeViewer.setLabelProvider(new NodeLabelProvider()); + tmpNodeViewer + .addSelectionChangedListener(new ISelectionChangedListener() { + public void selectionChanged(SelectionChangedEvent event) { + if (!event.getSelection().isEmpty()) { + IStructuredSelection sel = (IStructuredSelection) event + .getSelection(); + Object firstItem = sel.getFirstElement(); + if (firstItem instanceof SingleJcrNode) + propertiesViewer + .setInput(((SingleJcrNode) firstItem) + .getNode()); + } else { + propertiesViewer.setInput(getViewSite()); + } + } + }); + + 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, + Event.PROPERTY_ADDED | Event.PROPERTY_CHANGED, "/", + true, null, null, false); + } catch (RepositoryException e) { + throw new ArgeoException("Cannot register listeners", e); + } + + tmpNodeViewer + .addDoubleClickListener(new GenericNodeDoubleClickListener( + tmpNodeViewer)); + 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); @@ -185,61 +261,12 @@ public class GenericJcrBrowser extends AbstractJcrBrowser { } }); propertiesViewer.setInput(getViewSite()); - - sashForm.setWeights(getWeights()); - nodesViewer.setComparer(new NodeViewerComparer()); + return propertiesViewer; } - /** - * To be overridden to adapt size of form and result frames. - */ - protected int[] getWeights() { - return new int[] { 70, 30 }; - } - - protected TreeViewer createNodeViewer(Composite parent, - final ITreeContentProvider nodeContentProvider) { - - final TreeViewer tmpNodeViewer = new TreeViewer(parent, SWT.MULTI); - - tmpNodeViewer.getTree().setLayoutData( - new GridData(SWT.FILL, SWT.FILL, true, true)); - - tmpNodeViewer.setContentProvider(nodeContentProvider); - tmpNodeViewer.setLabelProvider(new NodeLabelProvider()); - tmpNodeViewer - .addSelectionChangedListener(new ISelectionChangedListener() { - public void selectionChanged(SelectionChangedEvent event) { - if (!event.getSelection().isEmpty()) { - IStructuredSelection sel = (IStructuredSelection) event - .getSelection(); - Object firstItem = sel.getFirstElement(); - if (firstItem instanceof SingleJcrNode) - propertiesViewer - .setInput(((SingleJcrNode) firstItem) - .getNode()); - } else { - propertiesViewer.setInput(getViewSite()); - } - } - }); - - resultsObserver = new TreeObserver(tmpNodeViewer.getTree().getDisplay()); - 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( - tmpNodeViewer)); - return tmpNodeViewer; + @Override + public void dispose() { + super.dispose(); } @Override @@ -312,4 +339,8 @@ public class GenericJcrBrowser extends AbstractJcrBrowser { this.jcrKeyring = jcrKeyring; } + public void setRepositoryFactory(RepositoryFactory repositoryFactory) { + this.repositoryFactory = repositoryFactory; + } + }