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;
}