X-Git-Url: https://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=484a2d42c03f41ff6c434b9a127b70eec699947b;hb=c0b7b3f9d1781d074ab35d24017042fa9415e1e4;hp=d009a85fb2b4366870364cf6c0c219ae80917b96;hpb=c425aea5b318f0c291804cf3973b3059f923e9b5;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 d009a85fb..484a2d42c 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 @@ -15,6 +15,7 @@ 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; import org.argeo.eclipse.ui.jcr.utils.NodeViewerComparer; import org.argeo.eclipse.ui.jcr.views.AbstractJcrBrowser; @@ -25,14 +26,17 @@ import org.argeo.jcr.RepositoryRegister; import org.argeo.jcr.ui.explorer.browser.NodeContentProvider; import org.argeo.jcr.ui.explorer.browser.NodeLabelProvider; import org.argeo.jcr.ui.explorer.browser.PropertiesContentProvider; +import org.argeo.jcr.ui.explorer.model.SingleJcrNode; import org.argeo.jcr.ui.explorer.utils.GenericNodeDoubleClickListener; import org.argeo.jcr.ui.explorer.utils.JcrFileProvider; +import org.argeo.jcr.ui.explorer.utils.JcrUiUtils; import org.eclipse.jface.action.MenuManager; import org.eclipse.jface.viewers.ColumnLabelProvider; import org.eclipse.jface.viewers.ISelectionChangedListener; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.TableViewerColumn; import org.eclipse.jface.viewers.TreeViewer; @@ -45,6 +49,11 @@ import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; import org.eclipse.swt.widgets.Menu; +/** + * Basic View to display a sash form to browse a JCR compliant multirepository + * environment + */ + public class GenericJcrBrowser extends AbstractJcrBrowser { private final static Log log = LogFactory.getLog(GenericJcrBrowser.class); @@ -109,6 +118,7 @@ public class GenericJcrBrowser extends AbstractJcrBrowser { nodesViewer.getTree().setMenu(menu); getSite().registerContextMenu(menuManager, nodesViewer); getSite().setSelectionProvider(nodesViewer); + nodesViewer.setInput(getViewSite()); // Create the property viewer on the bottom @@ -206,13 +216,13 @@ public class GenericJcrBrowser extends AbstractJcrBrowser { // nodesViewer.refresh(tmpSel.getFirstElement()); // } - private JcrFileProvider getJcrFileProvider() { - return jcrFileProvider; - } - - private FileHandler getFileHandler() { - return fileHandler; - } + // private JcrFileProvider getJcrFileProvider() { + // return jcrFileProvider; + // } + // + // private FileHandler getFileHandler() { + // return fileHandler; + // } protected TreeViewer createNodeViewer(Composite parent, final ITreeContentProvider nodeContentProvider) { @@ -230,7 +240,11 @@ public class GenericJcrBrowser extends AbstractJcrBrowser { if (!event.getSelection().isEmpty()) { IStructuredSelection sel = (IStructuredSelection) event .getSelection(); - propertiesViewer.setInput(sel.getFirstElement()); + Object firstItem = sel.getFirstElement(); + if (firstItem instanceof SingleJcrNode) + propertiesViewer + .setInput(((SingleJcrNode) firstItem) + .getNode()); } else { propertiesViewer.setInput(getViewSite()); } @@ -241,7 +255,6 @@ public class GenericJcrBrowser extends AbstractJcrBrowser { try { ObservationManager observationManager = session.getWorkspace() .getObservationManager(); - // FIXME Will not be notified if empty result is deleted observationManager.addEventListener(resultsObserver, Event.PROPERTY_ADDED | Event.PROPERTY_CHANGED, "/", true, null, null, false); @@ -260,6 +273,24 @@ public class GenericJcrBrowser extends AbstractJcrBrowser { return nodesViewer; } + /** Notifies the current view that a node has been added */ + public void nodeAdded(TreeParent parentNode) { + // insure that Ui objects have been correctly created: + JcrUiUtils.forceRefreshIfNeeded(parentNode); + getNodeViewer().refresh(parentNode); + getNodeViewer().expandToLevel(parentNode, 1); + } + + /** Notifies the current view that a node has been added */ + public void nodeRemoved(TreeParent parentNode) { + IStructuredSelection newSel = new StructuredSelection(parentNode); + getNodeViewer().setSelection(newSel, true); + // Force refresh + IStructuredSelection tmpSel = (IStructuredSelection) getNodeViewer() + .getSelection(); + getNodeViewer().refresh(tmpSel.getFirstElement()); + } + class TreeObserver extends AsyncUiEventListener { public TreeObserver(Display display) { @@ -270,11 +301,13 @@ public class GenericJcrBrowser extends AbstractJcrBrowser { protected Boolean willProcessInUiThread(List events) throws RepositoryException { for (Event event : events) { - getLog().debug("Received event " + event); + if (getLog().isTraceEnabled()) + getLog().debug("Received event " + event); String path = event.getPath(); int index = path.lastIndexOf('/'); String propertyName = path.substring(index + 1); - getLog().debug("Concerned property " + propertyName); + if (getLog().isTraceEnabled()) + getLog().debug("Concerned property " + propertyName); } return false; }