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;
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;
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);
nodesViewer.getTree().setMenu(menu);
getSite().registerContextMenu(menuManager, nodesViewer);
getSite().setSelectionProvider(nodesViewer);
+
nodesViewer.setInput(getViewSite());
// Create the property viewer on the bottom
// 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) {
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());
}
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);
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) {
protected Boolean willProcessInUiThread(List<Event> 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;
}