499979: Deployment of nested plans fails 

UI improvements:
- add plan file name validation
- open newly created plan file in editor when wizard closes


Task-Url: https://bugs.eclipse.org/bugs/show_bug.cgi?id=499979
diff --git a/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/core/CreatePlanProjectOperation.java b/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/core/CreatePlanProjectOperation.java
index bb83491..f16308c 100644
--- a/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/core/CreatePlanProjectOperation.java
+++ b/org.eclipse.virgo.ide.facet.core/src/org/eclipse/virgo/ide/facet/core/CreatePlanProjectOperation.java
@@ -68,6 +68,8 @@
 
     private final String planName;
 
+    private IFile planFile;
+
     /**
      * Creates a new instance
      *
@@ -143,7 +145,7 @@
             if (!"plan".equals(p.getFileExtension())) {
                 p = p.addFileExtension("plan");
             }
-            IFile planFile = sourceFolder.getFile(p);
+            planFile = sourceFolder.getFile(p);
             try {
                 planFile.create(new ByteArrayInputStream(content.getBytes(UTF_8)), true, null);
             } catch (UnsupportedEncodingException e) {
@@ -156,4 +158,13 @@
         monitor.done();
     }
 
+    /**
+     * Returns the plan file created by this operation, or null if no plan file has been created.
+     * 
+     * @return plan file or null
+     */
+    public IFile getPlanFile() {
+        return planFile;
+    }
+
 }
diff --git a/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/NewPlanProjectFilePage.java b/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/NewPlanProjectFilePage.java
index a07565f..0bb4ec3 100644
--- a/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/NewPlanProjectFilePage.java
+++ b/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/NewPlanProjectFilePage.java
@@ -11,8 +11,9 @@
 
 package org.eclipse.virgo.ide.ui.wizards;
 
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Status;
 import org.eclipse.jface.layout.GridDataFactory;
 import org.eclipse.jface.wizard.WizardPage;
 import org.eclipse.swt.SWT;
@@ -103,11 +104,12 @@
         planName = null;
 
         String name = planNameText.getText();
-        IStatus status = Status.OK_STATUS;// validator.validateContextRoot(name);
 
-        if (!status.isOK()) {
+        IStatus nameStatus = ResourcesPlugin.getWorkspace().validateName(name, IResource.FILE);
+
+        if (!nameStatus.isOK()) {
+            setErrorMessage(nameStatus.getMessage());
             setPageComplete(false);
-            setErrorMessage(status.getMessage());
             return;
         }
 
diff --git a/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/NewPlanProjectWizard.java b/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/NewPlanProjectWizard.java
index 0f81125..59ee936 100644
--- a/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/NewPlanProjectWizard.java
+++ b/org.eclipse.virgo.ide.ui/src/org/eclipse/virgo/ide/ui/wizards/NewPlanProjectWizard.java
@@ -14,6 +14,7 @@
 import java.lang.reflect.InvocationTargetException;
 import java.net.URI;
 
+import org.eclipse.core.resources.IFile;
 import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IProgressMonitor;
@@ -21,7 +22,11 @@
 import org.eclipse.core.runtime.Status;
 import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.pde.internal.ui.wizards.NewWizard;
+import org.eclipse.ui.IEditorDescriptor;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
 import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
+import org.eclipse.ui.part.FileEditorInput;
 import org.eclipse.ui.statushandlers.StatusManager;
 import org.eclipse.virgo.ide.facet.core.CreatePlanProjectOperation;
 import org.eclipse.virgo.ide.ui.ServerIdeUiPlugin;
@@ -84,6 +89,16 @@
             StatusManager.getManager().handle(s, StatusManager.LOG | StatusManager.SHOW);
         }
 
+        
+        IFile file = operation.getPlanFile();
+        if (file!=null) {
+            IEditorDescriptor editorDesc = PlatformUI.getWorkbench().getEditorRegistry().getDefaultEditor(file.getName());
+            try {
+                PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().openEditor(new FileEditorInput(file), editorDesc.getId());
+            } catch (PartInitException e) {
+                // ignore
+            }
+        }
         return true;
     }