X-Git-Url: http://git.argeo.org/?a=blobdiff_plain;f=org.argeo.slc.client.ui.dist%2Fsrc%2Forg%2Fargeo%2Fslc%2Fclient%2Fui%2Fdist%2Feditors%2FDistWkspBrowserPage.java;fp=org.argeo.slc.client.ui.dist%2Fsrc%2Forg%2Fargeo%2Fslc%2Fclient%2Fui%2Fdist%2Feditors%2FDistWkspBrowserPage.java;h=0000000000000000000000000000000000000000;hb=ecc22e604e47533c79de9cecdcdeacbc752cbff1;hp=e377b53c8d58c934bcc7826d760ea5e0bf2c146e;hpb=e07ded4632e53f8b8869763bc1f1f4091361e76e;p=gpl%2Fargeo-slc.git diff --git a/org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/editors/DistWkspBrowserPage.java b/org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/editors/DistWkspBrowserPage.java deleted file mode 100644 index e377b53c8..000000000 --- a/org.argeo.slc.client.ui.dist/src/org/argeo/slc/client/ui/dist/editors/DistWkspBrowserPage.java +++ /dev/null @@ -1,283 +0,0 @@ -package org.argeo.slc.client.ui.dist.editors; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.jcr.Node; -import javax.jcr.NodeIterator; -import javax.jcr.RepositoryException; -import javax.jcr.Session; -import javax.jcr.query.QueryManager; -import javax.jcr.query.QueryResult; -import javax.jcr.query.qom.Ordering; -import javax.jcr.query.qom.QueryObjectModel; -import javax.jcr.query.qom.QueryObjectModelFactory; -import javax.jcr.query.qom.Selector; - -import org.argeo.cms.ui.workbench.util.CommandUtils; -import org.argeo.jcr.JcrUtils; -import org.argeo.slc.SlcException; -import org.argeo.slc.SlcNames; -import org.argeo.slc.SlcTypes; -import org.argeo.slc.client.ui.dist.DistConstants; -import org.argeo.slc.client.ui.dist.DistImages; -import org.argeo.slc.client.ui.dist.commands.OpenModuleEditor; -import org.argeo.slc.repo.RepoConstants; -import org.eclipse.jface.viewers.ColumnLabelProvider; -import org.eclipse.jface.viewers.DoubleClickEvent; -import org.eclipse.jface.viewers.IDoubleClickListener; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.jface.viewers.ITreeContentProvider; -import org.eclipse.jface.viewers.TreeViewer; -import org.eclipse.jface.viewers.Viewer; -import org.eclipse.swt.SWT; -import org.eclipse.swt.graphics.Image; -import org.eclipse.swt.layout.FillLayout; -import org.eclipse.swt.widgets.Composite; -import org.eclipse.swt.widgets.Tree; -import org.eclipse.swt.widgets.TreeColumn; -import org.eclipse.ui.forms.IManagedForm; -import org.eclipse.ui.forms.editor.FormEditor; -import org.eclipse.ui.forms.editor.FormPage; -import org.eclipse.ui.forms.widgets.ScrolledForm; - -/** - * Expose Maven artifacts of a given workspace as a tree. Artifacts are grouped - * by Maven group. - */ -public class DistWkspBrowserPage extends FormPage implements DistConstants, - RepoConstants { - // private final static Log log = LogFactory - // .getLog(ArtifactsBrowserPage.class); - - final static String PAGE_ID = "artifactsBrowserPage"; - - // Business object - private Session session; - - // This page widgets - private TreeViewer artifactTreeViewer; - - public DistWkspBrowserPage(FormEditor editor, String title, Session session) { - super(editor, PAGE_ID, title); - this.session = session; - } - - @Override - protected void createFormContent(IManagedForm managedForm) { - try { - ScrolledForm form = managedForm.getForm(); - Composite parent = form.getBody(); - parent.setLayout(new FillLayout()); - createMavenBrowserPart(parent); - getEditor().getSite().setSelectionProvider(artifactTreeViewer); - } catch (RepositoryException e) { - throw new SlcException("Cannot create artifact browser page", e); - } - } - - /** Aether specific browser for the current workspace */ - private void createMavenBrowserPart(Composite parent) - throws RepositoryException { - - int style = SWT.SINGLE | SWT.H_SCROLL | SWT.V_SCROLL - | SWT.FULL_SELECTION | SWT.BORDER; - - Tree tree = new Tree(parent, style); - createColumn(tree, "Maven browser", SWT.LEFT, 450); - tree.setLinesVisible(true); - tree.setHeaderVisible(true); - - artifactTreeViewer = new TreeViewer(tree); - - artifactTreeViewer.setLabelProvider(new ColumnLabelProvider() { - private static final long serialVersionUID = 2648269889876058461L; - - @Override - public String getText(Object element) { - Node node = (Node) element; - try { - if (node.isNodeType(SlcTypes.SLC_GROUP_BASE)) - return JcrUtils.get((Node) element, - SlcNames.SLC_GROUP_BASE_ID); - else if (node.isNodeType(SlcTypes.SLC_ARTIFACT_BASE)) - return JcrUtils.get((Node) element, - SlcNames.SLC_ARTIFACT_ID); - else - return node.getName(); - } catch (RepositoryException e) { - throw new SlcException("Cannot browse artifacts", e); - } - } - - @Override - public Image getImage(Object element) { - Node node = (Node) element; - try { - - if (node.isNodeType(SlcTypes.SLC_GROUP_BASE)) - return DistImages.IMG_GROUP_BASE; - else if (node.isNodeType(SlcTypes.SLC_ARTIFACT_BASE)) - return DistImages.IMG_ARTIFACT_BASE; - else if (node - .isNodeType(SlcTypes.SLC_ARTIFACT_VERSION_BASE)) - return DistImages.IMG_ARTIFACT_VERSION_BASE; - else - return null; - } catch (RepositoryException e) { - throw new SlcException("Cannot get images for artifacts", e); - } - } - }); - - artifactTreeViewer.setContentProvider(new ITreeContentProvider() { - private static final long serialVersionUID = -2381555428857519326L; - - public void dispose() { - } - - public void inputChanged(Viewer viewer, Object oldInput, - Object newInput) { - } - - public Object[] getElements(Object inputElement) { - try { - List nodes = JcrUtils.nodeIteratorToList(listNodes( - SlcTypes.SLC_GROUP_BASE, SlcNames.SLC_NAME)); - return nodes.toArray(); - } catch (RepositoryException e) { - throw new SlcException("Cannot list children Nodes", e); - } - } - - public Object[] getChildren(Object parentElement) { - // Only 3 levels for the time being - try { - Node pNode = (Node) parentElement; - if (pNode.isNodeType(SlcTypes.SLC_GROUP_BASE)) { - return getArtifactBase(pNode, - SlcTypes.SLC_ARTIFACT_BASE); - } else if (pNode.isNodeType(SlcTypes.SLC_ARTIFACT_BASE)) { - return getArtifactBase(pNode, - SlcTypes.SLC_ARTIFACT_VERSION_BASE); - } - return null; - } catch (RepositoryException e) { - throw new SlcException("Cannot list children Nodes", e); - } - } - - // Helper to get children because current version of Jackrabbit is - // buggy in remote - private Object[] getArtifactBase(Node parent, String nodeType) - throws RepositoryException { - List nodes = new ArrayList(); - NodeIterator ni = parent.getNodes(); - while (ni.hasNext()) { - Node node = ni.nextNode(); - if (node.isNodeType(nodeType)) - nodes.add(node); - } - return nodes.toArray(); - } - - public Object getParent(Object element) { - return null; - } - - public boolean hasChildren(Object element) { - try { - Node pNode = (Node) element; - if (pNode.isNodeType(SlcTypes.SLC_GROUP_BASE) - || pNode.isNodeType(SlcTypes.SLC_ARTIFACT_BASE)) { - // might return true even if there is no "valid" child - return pNode.hasNodes(); - } else - return false; - } catch (RepositoryException e) { - throw new SlcException("Cannot check children Nodes", e); - } - } - }); - - artifactTreeViewer.addDoubleClickListener(new DoubleClickListener()); - - artifactTreeViewer.setInput("Initialize"); - } - - private class DoubleClickListener implements IDoubleClickListener { - - public void doubleClick(DoubleClickEvent event) { - Object obj = ((IStructuredSelection) event.getSelection()) - .getFirstElement(); - if (obj instanceof Node) { - Node node = (Node) obj; - try { - if (node.isNodeType(SlcTypes.SLC_ARTIFACT_VERSION_BASE)) { - NodeIterator nit = node.getNodes(); - while (nit.hasNext()) { - Node curr = nit.nextNode(); - if (curr.isNodeType(SlcTypes.SLC_ARTIFACT)) { - node = curr; - break; - } - } - } - - if (node.isNodeType(SlcTypes.SLC_ARTIFACT)) { - DistWkspEditorInput dwip = (DistWkspEditorInput) getEditorInput(); - Map params = new HashMap(); - params.put(OpenModuleEditor.PARAM_REPO_NODE_PATH, - dwip.getRepoNodePath()); - params.put(OpenModuleEditor.PARAM_REPO_URI, - dwip.getUri()); - params.put(OpenModuleEditor.PARAM_WORKSPACE_NAME, - dwip.getWorkspaceName()); - String path = node.getPath(); - params.put(OpenModuleEditor.PARAM_MODULE_PATH, path); - CommandUtils.callCommand(OpenModuleEditor.ID, params); - } - } catch (RepositoryException re) { - throw new SlcException("Cannot get path for node " + node - + " while setting parameters for " - + "command OpenModuleEditor", re); - } - - } - } - } - - private static TreeColumn createColumn(Tree parent, String name, int style, - int width) { - TreeColumn result = new TreeColumn(parent, style); - result.setText(name); - result.setWidth(width); - result.setMoveable(true); - result.setResizable(true); - return result; - } - - private NodeIterator listNodes(String nodeType, String orderBy) - throws RepositoryException { - QueryManager queryManager = session.getWorkspace().getQueryManager(); - QueryObjectModelFactory factory = queryManager.getQOMFactory(); - - final String nodeSelector = "nodes"; - Selector source = factory.selector(nodeType, nodeSelector); - - Ordering order = factory.ascending(factory.propertyValue(nodeSelector, - orderBy)); - Ordering[] orderings = { order }; - - QueryObjectModel query = factory.createQuery(source, null, orderings, - null); - - QueryResult result = query.execute(); - - return result.getNodes(); - } - - -}