You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sling.apache.org by st...@apache.org on 2014/06/13 15:09:33 UTC

svn commit: r1602417 - in /sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions: JcrNewNodeAction.java NewNodeDialog.java

Author: stefanegli
Date: Fri Jun 13 13:09:32 2014
New Revision: 1602417

URL: http://svn.apache.org/r1602417
Log:
SLING-3660 related : allow node creation when server was never started, but 'at own risk' (since node type checks and dependencies cannot be done properly)

Modified:
    sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNewNodeAction.java
    sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/NewNodeDialog.java

Modified: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNewNodeAction.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNewNodeAction.java?rev=1602417&r1=1602416&r2=1602417&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNewNodeAction.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/JcrNewNodeAction.java Fri Jun 13 13:09:32 2014
@@ -29,14 +29,17 @@ import org.eclipse.jface.action.IAction;
 import org.eclipse.jface.dialogs.MessageDialog;
 import org.eclipse.jface.viewers.ISelection;
 import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.swt.SWT;
 import org.eclipse.swt.widgets.Shell;
 import org.eclipse.ui.IObjectActionDelegate;
 import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.wst.server.ui.internal.Messages;
 
 public class JcrNewNodeAction implements IObjectActionDelegate {
 
 	private ISelection selection;
 	private Shell shell;
+    private boolean doNotAskAgain;
 
 	public JcrNewNodeAction() {
 	}
@@ -56,9 +59,27 @@ public class JcrNewNodeAction implements
         Repository repository = ServerUtil.getDefaultRepository(node.getProject());
         NodeTypeRegistry ntManager = (repository==null) ? null : repository.getNodeTypeRegistry();
         if (ntManager == null) {
-            MessageDialog.openWarning(null, "Unable to create a new node", "Unable to create a new node since project "
-                    + node.getProject().getName() + " is not associated with a server or the server is not started.");
-            return;
+            
+            if (!doNotAskAgain) {
+                MessageDialog dialog = new MessageDialog(null,  "Unable to validate node type", null,
+                        "Unable to validate node types since project " + node.getProject().getName() + " is not associated with a server or the server is not started.",
+                        MessageDialog.QUESTION_WITH_CANCEL, 
+                        new String[] {"Cancel", "Continue (do not ask again)", "Continue"}, 1) {
+                    @Override
+                    protected void configureShell(Shell shell) {
+                        super.configureShell(shell);
+                        setShellStyle(getShellStyle() | SWT.SHEET);
+                    }
+                };
+                int choice = dialog.open();
+                if (choice <= 0) {
+                    return;
+                }
+                if (choice==1) {
+                    doNotAskAgain = true;
+                }
+            }
+
         }
         final NodeType nodeType = node.getNodeType();
         if (nodeType!=null && nodeType.getName()!=null && nodeType.getName().equals("nt:file")) {

Modified: sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/NewNodeDialog.java
URL: http://svn.apache.org/viewvc/sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/NewNodeDialog.java?rev=1602417&r1=1602416&r2=1602417&view=diff
==============================================================================
--- sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/NewNodeDialog.java (original)
+++ sling/trunk/tooling/ide/eclipse-ui/src/org/apache/sling/ide/eclipse/ui/actions/NewNodeDialog.java Fri Jun 13 13:09:32 2014
@@ -31,6 +31,8 @@ import org.eclipse.swt.widgets.Shell;
 
 public class NewNodeDialog extends InputDialog {
 
+    private static String lastChosenNodeType = null;
+    
     private final String parentNodeType;
     private final NodeTypeRegistry ntManager;
     protected String comboSelection;
@@ -45,11 +47,13 @@ public class NewNodeDialog extends Input
                 "Enter name for new node under:\n path: "+node.getJcrPath(), "", null);
         this.parentNodeType = node.getPrimaryType();
         this.ntManager = ntManager;
-        final LinkedList<String> ac = new LinkedList<String>(ntManager.getAllowedPrimaryChildNodeTypes(parentNodeType));
-        final NodeType parentNt = ntManager.getNodeType(parentNodeType);
-        allChildNodeDefs = parentNt.getChildNodeDefinitions();
-        Collections.sort(ac);
-        this.allowedChildren = ac;
+        if (ntManager!=null) {
+            final LinkedList<String> ac = new LinkedList<String>(ntManager.getAllowedPrimaryChildNodeTypes(parentNodeType));
+            final NodeType parentNt = ntManager.getNodeType(parentNodeType);
+            allChildNodeDefs = parentNt.getChildNodeDefinitions();
+            Collections.sort(ac);
+            this.allowedChildren = ac;
+        }
     }
 
     @Override
@@ -76,7 +80,9 @@ public class NewNodeDialog extends Input
 
         combo = new Combo(composite, SWT.DROP_DOWN);
         combo.moveAbove(errorMessageText);
-        combo.setItems(allowedChildren.toArray(new String[0]));
+        if (allowedChildren!=null) {
+            combo.setItems(allowedChildren.toArray(new String[0]));
+        }
         combo.setLayoutData(new GridData(GridData.GRAB_HORIZONTAL
                 | GridData.HORIZONTAL_ALIGN_FILL));
         combo.addSelectionListener(new SelectionAdapter() {
@@ -123,10 +129,12 @@ public class NewNodeDialog extends Input
         // this variant opens auto-complete on each character
         proposalAdapter = new ContentProposalAdapter(combo, controlContentAdapter, proposalProvider, null, null);
         // this variant opens auto-complete only when invoking the auto-complete hotkey
-//        proposalAdapter = new ContentAssistCommandAdapter(combo, controlContentAdapter,
-//            proposalProvider, null, new char[0], true);
-        if (allowedChildren.size()==1) {
+        if (allowedChildren!=null && allowedChildren.size()==1) {
             combo.setText(allowedChildren.iterator().next());
+        } else if (allowedChildren!=null) {
+            if (allowedChildren.contains(lastChosenNodeType)) {
+                combo.setText(lastChosenNodeType);
+            }
         }
         
         return composite;
@@ -143,6 +151,7 @@ public class NewNodeDialog extends Input
     }
     
     public String getChosenNodeType() {
+        lastChosenNodeType = comboSelection;
         return comboSelection;
     }
 
@@ -152,6 +161,8 @@ public class NewNodeDialog extends Input
         try {
             if (secondInput==null || secondInput.length()==0) {
                 setErrorMessage("");
+            } else if (ntManager==null) {
+                setErrorMessage(null);
             } else if (ntManager.isAllowedPrimaryChildNodeType(parentNodeType, secondInput)) {
                 // also check on the name, not only the type
                 if (allChildNodeDefs==null) {