+/*
+ * 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;
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;
/* DEPENDENCY INJECTION */
private JcrKeyring jcrKeyring;
private RepositoryRegister repositoryRegister;
+ private RepositoryFactory repositoryFactory;
// This page widgets
private TreeViewer nodesViewer;
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);
// try {
// nodeSession = nodeRepository.login();
// // TODO : enhance that to enable multirepository listener.
- // session = nodeSession;
// } catch (RepositoryException e1) {
// throw new ArgeoException("Cannot login to node repository");
// }
top.setLayout(gl);
nodeContentProvider = new NodeContentProvider(jcrKeyring,
- repositoryRegister);
+ repositoryRegister, repositoryFactory, sortChildNodes);
// nodes viewer
nodesViewer = createNodeViewer(top, nodeContentProvider);
// 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 {
+ 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);
}
});
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
this.jcrKeyring = jcrKeyring;
}
+ public void setRepositoryFactory(RepositoryFactory repositoryFactory) {
+ this.repositoryFactory = repositoryFactory;
+ }
+
}