X-Git-Url: http://git.phpeclipse.com

diff --git a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/wizards/NewProjectCreationWizard.java b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/wizards/NewProjectCreationWizard.java
index cbeca0a..28ce603 100644
--- a/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/wizards/NewProjectCreationWizard.java
+++ b/net.sourceforge.phpeclipse/src/net/sourceforge/phpeclipse/wizards/NewProjectCreationWizard.java
@@ -1,19 +1,21 @@
 package net.sourceforge.phpeclipse.wizards;
 
 import java.lang.reflect.InvocationTargetException;
+import java.net.URI;
 
 import net.sourceforge.phpdt.core.JavaCore;
+import net.sourceforge.phpdt.ui.actions.OpenPHPPerspectiveAction;
 import net.sourceforge.phpeclipse.PHPeclipsePlugin;
 
 import org.eclipse.core.resources.IProject;
 import org.eclipse.core.resources.IProjectDescription;
+import org.eclipse.core.resources.IResource;
 import org.eclipse.core.resources.IWorkspace;
+import org.eclipse.core.resources.ResourcesPlugin;
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IConfigurationElement;
 import org.eclipse.core.runtime.IExecutableExtension;
-import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.core.runtime.Platform;
 import org.eclipse.core.runtime.SubProgressMonitor;
 import org.eclipse.jface.operation.IRunnableWithProgress;
 import org.eclipse.ui.INewWizard;
@@ -22,59 +24,75 @@ import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
 import org.eclipse.ui.wizards.newresource.BasicNewProjectResourceWizard;
 import org.eclipse.ui.wizards.newresource.BasicNewResourceWizard;
 
-public class NewProjectCreationWizard extends BasicNewResourceWizard implements INewWizard, IExecutableExtension {
+public class NewProjectCreationWizard extends BasicNewResourceWizard implements
+		INewWizard, IExecutableExtension {
 	protected WizardNewProjectCreationPage projectPage;
+
 	protected IConfigurationElement configurationElement;
+
 	protected IProject newProject;
-	
+
 	public NewProjectCreationWizard() {
-		setWindowTitle(PHPWizardMessages.getString("NewProjectCreationWizard.windowTitle"));
+		setWindowTitle(PHPWizardMessages
+				.getString("NewProjectCreationWizard.windowTitle"));
 	}
 
 	public boolean performFinish() {
-		IRunnableWithProgress projectCreationOperation = new WorkspaceModifyDelegatingOperation(getProjectCreationRunnable());
+		IRunnableWithProgress projectCreationOperation = new WorkspaceModifyDelegatingOperation(
+				getProjectCreationRunnable());
 
 		try {
 			getContainer().run(false, true, projectCreationOperation);
-		} catch (Exception e) { 
+		} catch (Exception e) {
 			PHPeclipsePlugin.log(e);
 			return false;
 		}
 
 		BasicNewProjectResourceWizard.updatePerspective(configurationElement);
 		selectAndReveal(newProject);
-
+		// open the PHP perspective
+		new OpenPHPPerspectiveAction().run();
 		return true;
 	}
 
 	protected IRunnableWithProgress getProjectCreationRunnable() {
 		return new IRunnableWithProgress() {
-			public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException {
+			public void run(IProgressMonitor monitor)
+					throws InvocationTargetException, InterruptedException {
 				int remainingWorkUnits = 10;
-				monitor.beginTask(PHPWizardMessages.getString("NewProjectCreationWizard.projectCreationMessage"), remainingWorkUnits);
+				monitor
+						.beginTask(
+								PHPWizardMessages
+										.getString("NewProjectCreationWizard.projectCreationMessage"),
+								remainingWorkUnits);
 
 				IWorkspace workspace = PHPeclipsePlugin.getWorkspace();
-				newProject = projectPage.getProjectHandle();
+				String projectName = projectPage.getProjectHandle().getName();
+				newProject = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
+				IProjectDescription description = workspace
+						.newProjectDescription(projectName);
 				
-				IProjectDescription description = workspace.newProjectDescription(newProject.getName());
-				IPath path = Platform.getLocation();
-				IPath customPath = projectPage.getLocationPath();
-				if (!path.equals(customPath)) {
-					path = customPath;
-					description.setLocation(path);
+				URI uriPath = (!projectPage.useDefaults()) ? projectPage
+		                .getLocationURI() : null;
+				if (uriPath != null) {				    
+					description.setLocationURI(uriPath);
 				}
 
 				try {
 					if (!newProject.exists()) {
-						newProject.create(description, new SubProgressMonitor(monitor, 1));
+						newProject.create(description, new SubProgressMonitor(
+								monitor, 1));
 						remainingWorkUnits--;
 					}
 					if (!newProject.isOpen()) {
-						newProject.open(new SubProgressMonitor(monitor, 1));
+					    newProject.open(IResource.BACKGROUND_REFRESH, new SubProgressMonitor(monitor, 1));
 						remainingWorkUnits--;
 					}
-					JavaCore.addPHPNature(newProject, new SubProgressMonitor(monitor, remainingWorkUnits));
+					JavaCore.addPHPNature(newProject, new SubProgressMonitor(
+							monitor, remainingWorkUnits));
+
 				} catch (CoreException e) {
+				    System.out.println(e);
 					throw new InvocationTargetException(e);
 				} finally {
 					monitor.done();
@@ -86,14 +104,18 @@ public class NewProjectCreationWizard extends BasicNewResourceWizard implements
 	public void addPages() {
 		super.addPages();
 
-		projectPage = new WizardNewProjectCreationPage(PHPWizardMessages.getString("WizardNewProjectCreationPage.pageName"));
-		projectPage.setTitle(PHPWizardMessages.getString("WizardNewProjectCreationPage.pageTitle"));
-		projectPage.setDescription(PHPWizardMessages.getString("WizardNewProjectCreationPage.pageDescription"));
+		projectPage = new WizardNewProjectCreationPage(PHPWizardMessages
+				.getString("WizardNewProjectCreationPage.pageName"));
+		projectPage.setTitle(PHPWizardMessages
+				.getString("WizardNewProjectCreationPage.pageTitle"));
+		projectPage.setDescription(PHPWizardMessages
+				.getString("WizardNewProjectCreationPage.pageDescription"));
 
 		addPage(projectPage);
 	}
 
-	public void setInitializationData(IConfigurationElement config, String propertyName, Object data) throws CoreException {
+	public void setInitializationData(IConfigurationElement config,
+			String propertyName, Object data) throws CoreException {
 		configurationElement = config;
 	}