]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - plugins/org.argeo.slc.client.ui.dist/src/main/java/org/argeo/slc/client/ui/dist/editors/DistWkspBrowserPage.java
Adapt run as OSGi to felix Gogo console
[gpl/argeo-slc.git] / plugins / org.argeo.slc.client.ui.dist / src / main / java / org / argeo / slc / client / ui / dist / editors / DistWkspBrowserPage.java
index 1c3a9fd5c28acf1043f22a3c555f1565444e50ff..b04d1cf3dadbc5e2331d6c0e09a75ff9df94253a 100644 (file)
@@ -16,7 +16,9 @@
 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;
@@ -29,12 +31,12 @@ import javax.jcr.query.qom.QueryObjectModel;
 import javax.jcr.query.qom.QueryObjectModelFactory;
 import javax.jcr.query.qom.Selector;
 
-import org.argeo.ArgeoException;
+import org.argeo.eclipse.ui.utils.CommandUtils;
 import org.argeo.jcr.JcrUtils;
 import org.argeo.slc.SlcException;
 import org.argeo.slc.client.ui.dist.DistConstants;
 import org.argeo.slc.client.ui.dist.DistImages;
-import org.argeo.slc.client.ui.dist.DistPlugin;
+import org.argeo.slc.client.ui.dist.commands.OpenModuleEditor;
 import org.argeo.slc.jcr.SlcNames;
 import org.argeo.slc.jcr.SlcTypes;
 import org.argeo.slc.repo.RepoConstants;
@@ -51,7 +53,6 @@ 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.PartInitException;
 import org.eclipse.ui.forms.IManagedForm;
 import org.eclipse.ui.forms.editor.FormEditor;
 import org.eclipse.ui.forms.editor.FormPage;
@@ -85,41 +86,22 @@ public class DistWkspBrowserPage extends FormPage implements DistConstants,
                        ScrolledForm form = managedForm.getForm();
                        Composite parent = form.getBody();
                        parent.setLayout(new FillLayout());
-                       createExportPackageSection(parent);
+                       createMavenBrowserPart(parent);
                        getEditor().getSite().setSelectionProvider(artifactTreeViewer);
                } catch (RepositoryException e) {
                        throw new SlcException("Cannot create artifact browser page", e);
                }
        }
 
-       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();
-       }
-
-       /** Export Package Section */
-       private void createExportPackageSection(Composite parent)
+       /** 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, "Artifacts", SWT.LEFT, 300);
+               createColumn(tree, "Maven browser", SWT.LEFT, 450);
                tree.setLinesVisible(true);
                tree.setHeaderVisible(true);
 
@@ -242,35 +224,39 @@ public class DistWkspBrowserPage extends FormPage implements DistConstants,
                public void doubleClick(DoubleClickEvent event) {
                        Object obj = ((IStructuredSelection) event.getSelection())
                                        .getFirstElement();
-                       try {
-                               if (obj instanceof Node) {
-                                       Node node = (Node) obj;
+                       if (obj instanceof Node) {
+                               Node node = (Node) obj;
+                               try {
                                        if (node.isNodeType(SlcTypes.SLC_ARTIFACT_VERSION_BASE)) {
-                                               // TODO fix using QOM after jcr upgrade
-                                               NodeIterator ni = node.getNodes();
-                                               while (ni.hasNext()) {
-                                                       Node curr = ni.nextNode();
-                                                       if (curr.isNodeType(SlcTypes.SLC_BUNDLE_ARTIFACT)) {
-                                                               GenericBundleEditorInput gaei = new GenericBundleEditorInput(
-                                                                               curr);
-                                                               DistPlugin
-                                                                               .getDefault()
-                                                                               .getWorkbench()
-                                                                               .getActiveWorkbenchWindow()
-                                                                               .getActivePage()
-                                                                               .openEditor(gaei,
-                                                                                               GenericBundleEditor.ID);
+                                               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<String, String> params = new HashMap<String, String>();
+                                               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);
                                }
-                       } catch (RepositoryException re) {
-                               throw new ArgeoException(
-                                               "Repository error while getting node info", re);
-                       } catch (PartInitException pie) {
-                               throw new ArgeoException(
-                                               "Unexepected exception while opening artifact editor",
-                                               pie);
+
                        }
                }
        }
@@ -285,4 +271,25 @@ public class DistWkspBrowserPage extends FormPage implements DistConstants,
                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();
+       }
+
+       
 }