+/*
+ * Copyright (C) 2007-2012 Argeo GmbH
+ *
+ * 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;
import javax.jcr.Property;
import javax.jcr.PropertyType;
+import javax.jcr.Repository;
import javax.jcr.RepositoryException;
+import javax.jcr.RepositoryFactory;
+import javax.jcr.Session;
import javax.jcr.Value;
import javax.jcr.observation.Event;
import javax.jcr.observation.EventListener;
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;
-import org.argeo.jcr.ui.explorer.model.SingleJcrNode;
+import org.argeo.jcr.ui.explorer.model.SingleJcrNodeElem;
import org.argeo.jcr.ui.explorer.utils.GenericNodeDoubleClickListener;
import org.argeo.jcr.ui.explorer.utils.JcrUiUtils;
+import org.argeo.util.security.Keyring;
import org.eclipse.jface.action.MenuManager;
import org.eclipse.jface.viewers.ColumnLabelProvider;
import org.eclipse.jface.viewers.ISelectionChangedListener;
* 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);
public final static String ID = JcrExplorerPlugin.ID + ".browserView";
- private boolean sortChildNodes = false;
+ private boolean sortChildNodes = true;
/* DEPENDENCY INJECTION */
- private JcrKeyring jcrKeyring;
+ private Keyring keyring;
private RepositoryRegister repositoryRegister;
+ private RepositoryFactory repositoryFactory;
+ private Repository nodeRepository;
+ /**
+ * A session of the logged in user on the default workspace of the node
+ * repository.
+ */
+ private Session userSession;
// This page widgets
private TreeViewer nodesViewer;
private TableViewer propertiesViewer;
private EventListener resultsObserver;
- // Manage documents
- // private JcrFileProvider jcrFileProvider;
- // private FileHandler fileHandler;
-
@Override
public void createPartControl(Composite parent) {
-
- // look for session
- // 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.
- // } catch (RepositoryException e1) {
- // throw new ArgeoException("Cannot login to node repository");
- // }
- // }
-
- // Instantiate the generic object that fits for
- // both RCP & RAP
- // Note that in RAP, it registers a service handler that provide the
- // access to the files.
- // jcrFileProvider = new JcrFileProvider();
- // fileHandler = new FileHandler(jcrFileProvider);
-
parent.setLayout(new FillLayout());
SashForm sashForm = new SashForm(parent, SWT.VERTICAL);
sashForm.setSashWidth(4);
GridLayout gl = new GridLayout(1, false);
top.setLayout(gl);
- nodeContentProvider = new NodeContentProvider(jcrKeyring,
- repositoryRegister, sortChildNodes);
+ try {
+ this.userSession = this.nodeRepository.login();
+ } catch (RepositoryException e) {
+ throw new ArgeoException("Cannot open user session", e);
+ }
+
+ nodeContentProvider = new NodeContentProvider(userSession, keyring,
+ repositoryRegister, repositoryFactory, sortChildNodes);
// nodes viewer
nodesViewer = createNodeViewer(top, nodeContentProvider);
IStructuredSelection sel = (IStructuredSelection) event
.getSelection();
Object firstItem = sel.getFirstElement();
- if (firstItem instanceof SingleJcrNode)
+ if (firstItem instanceof SingleJcrNodeElem)
propertiesViewer
- .setInput(((SingleJcrNode) firstItem)
+ .setInput(((SingleJcrNodeElem) firstItem)
.getNode());
} else {
propertiesViewer.setInput(getViewSite());
});
resultsObserver = new TreeObserver(tmpNodeViewer.getTree().getDisplay());
- if (jcrKeyring != null)
+ if (keyring != null)
try {
- ObservationManager observationManager = jcrKeyring.getSession()
+ ObservationManager observationManager = userSession
.getWorkspace().getObservationManager();
observationManager.addEventListener(resultsObserver,
Event.PROPERTY_ADDED | Event.PROPERTY_CHANGED, "/",
return nodesViewer;
}
+ /**
+ * Resets the tree content provider
+ *
+ * @param sortChildNodes
+ * if true the content provider will use a comparer to sort nodes
+ * that might slow down the display
+ * */
+ public void setSortChildNodes(boolean sortChildNodes) {
+ this.sortChildNodes = sortChildNodes;
+ ((NodeContentProvider) nodesViewer.getContentProvider())
+ .setSortChildren(sortChildNodes);
+ nodesViewer.setInput(getViewSite());
+ }
+
/** Notifies the current view that a node has been added */
public void nodeAdded(TreeParent parentNode) {
// insure that Ui objects have been correctly created:
getNodeViewer().expandToLevel(parentNode, 1);
}
- /** Notifies the current view that a node has been added */
+ /** Notifies the current view that a node has been removed */
public void nodeRemoved(TreeParent parentNode) {
IStructuredSelection newSel = new StructuredSelection(parentNode);
getNodeViewer().setSelection(newSel, true);
}
- public void setSortChildNodes(boolean sortChildNodes) {
- this.sortChildNodes = sortChildNodes;
- }
-
public boolean getSortChildNodes() {
return sortChildNodes;
}
this.repositoryRegister = repositoryRegister;
}
- public void setJcrKeyring(JcrKeyring jcrKeyring) {
- this.jcrKeyring = jcrKeyring;
+ public void setKeyring(Keyring keyring) {
+ this.keyring = keyring;
+ }
+
+ public void setRepositoryFactory(RepositoryFactory repositoryFactory) {
+ this.repositoryFactory = repositoryFactory;
+ }
+
+ public void setNodeRepository(Repository nodeRepository) {
+ this.nodeRepository = nodeRepository;
}
}