]> git.argeo.org Git - gpl/argeo-slc.git/blobdiff - plugins/org.argeo.slc.akb.ui/src/main/java/org/argeo/slc/akb/ui/commands/OpenAkbNodeEditor.java
Work on items editors
[gpl/argeo-slc.git] / plugins / org.argeo.slc.akb.ui / src / main / java / org / argeo / slc / akb / ui / commands / OpenAkbNodeEditor.java
index 46de0c3d16377fc2fab8478e16f9581e12b18128..527033e191aa0750ba9a4b2ad80433202d5d8ef8 100644 (file)
@@ -1,6 +1,7 @@
 package org.argeo.slc.akb.ui.commands;
 
 import javax.jcr.Node;
+import javax.jcr.Property;
 import javax.jcr.Repository;
 import javax.jcr.RepositoryException;
 import javax.jcr.Session;
@@ -11,12 +12,17 @@ import org.argeo.slc.akb.AkbException;
 import org.argeo.slc.akb.AkbService;
 import org.argeo.slc.akb.AkbTypes;
 import org.argeo.slc.akb.ui.AkbUiPlugin;
-import org.argeo.slc.akb.ui.editors.AkbConnectorAliasEditor;
-import org.argeo.slc.akb.ui.editors.AkbEnvTemplateEditor;
+import org.argeo.slc.akb.ui.dialogs.AddItemDialog;
 import org.argeo.slc.akb.ui.editors.AkbNodeEditorInput;
+import org.argeo.slc.akb.ui.editors.ConnectorAliasEditor;
+import org.argeo.slc.akb.ui.editors.EnvTemplateEditor;
+import org.argeo.slc.akb.ui.editors.JdbcQueryTemplateEditor;
+import org.argeo.slc.akb.ui.editors.SshCommandTemplateEditor;
+import org.argeo.slc.akb.ui.editors.SshFileTemplateEditor;
 import org.eclipse.core.commands.AbstractHandler;
 import org.eclipse.core.commands.ExecutionEvent;
 import org.eclipse.core.commands.ExecutionException;
+import org.eclipse.swt.widgets.Display;
 import org.eclipse.ui.IWorkbenchPage;
 import org.eclipse.ui.PartInitException;
 import org.eclipse.ui.handlers.HandlerUtil;
@@ -74,7 +80,7 @@ public class OpenAkbNodeEditor extends AbstractHandler {
 
                        String editorId = getEditorForNode(node);
 
-                       // no editor has been found, return
+                       // no editor has been found, return silently
                        if (editorId == null)
                                return null;
 
@@ -98,17 +104,25 @@ public class OpenAkbNodeEditor extends AbstractHandler {
        private Node createNewNode(Session session, String nodeType,
                        String parentNodeJcrId) throws RepositoryException {
                Node node = null;
-               if (AkbTypes.AKB_ENV_TEMPLATE.equals(nodeType)) {
-                       String name = SingleValue.ask("Template name",
-                                       "Please give a name to the template to create");
-                       if (name != null)
+
+               if (AkbTypes.AKB_ITEM.equals(nodeType)) {
+                       Node parNode = session.getNodeByIdentifier(parentNodeJcrId);
+                       AddItemDialog dialog = new AddItemDialog(Display.getDefault()
+                                       .getActiveShell(), "Add new item", parNode);
+                       dialog.open();
+                       node = dialog.getNewNode();
+               } else {
+                       String name = SingleValue.ask("New name", "Create AKB item");
+                       if (name == null)
+                               return null;
+                       if (AkbTypes.AKB_ENV_TEMPLATE.equals(nodeType)) {
                                node = akbService.createAkbTemplate(
                                                session.getNodeByIdentifier(parentNodeJcrId), name);
-                       else
-                               return null;
-               } else {
-                       Node parentNode = session.getNodeByIdentifier(parentNodeJcrId);
-                       node = parentNode.addNode("new", nodeType);
+                       } else {
+                               Node parentNode = session.getNodeByIdentifier(parentNodeJcrId);
+                               node = parentNode.addNode(name, nodeType);
+                               node.setProperty(Property.JCR_TITLE, name);
+                       }
                }
                // corresponding node is saved but not checked in, in order to ease
                // cancel actions.
@@ -119,11 +133,17 @@ public class OpenAkbNodeEditor extends AbstractHandler {
        private String getEditorForNode(Node node) throws RepositoryException {
                String editorId = null;
                if (node.isNodeType(AkbTypes.AKB_CONNECTOR_ALIAS))
-                       editorId = AkbConnectorAliasEditor.ID;
+                       editorId = ConnectorAliasEditor.ID;
                else if (node.isNodeType(AkbTypes.AKB_ENV_TEMPLATE))
-                       editorId = AkbEnvTemplateEditor.ID;
-               else
-                       throw new AkbException("Editor is undefined for node " + node);
+                       editorId = EnvTemplateEditor.ID;
+               else if (node.isNodeType(AkbTypes.AKB_SSH_FILE))
+                       editorId = SshFileTemplateEditor.ID;
+               else if (node.isNodeType(AkbTypes.AKB_SSH_COMMAND))
+                       editorId = SshCommandTemplateEditor.ID;
+               else if (node.isNodeType(AkbTypes.AKB_JDBC_QUERY))
+                       editorId = JdbcQueryTemplateEditor.ID;
+               // else
+               // throw new AkbException("Editor is undefined for node " + node);
                return editorId;
        }