package com.sysdeo.eclipse.tomcat;
/*
* (c) Copyright Sysdeo SA 2001, 2002.
* All Rights Reserved.
*/
import java.io.IOException;
import java.lang.reflect.InvocationTargetException;
import java.net.MalformedURLException;
import java.net.URL;
import org.eclipse.core.resources.IWorkspaceRoot;
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.IProgressMonitor;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.internal.ui.JavaPlugin;
import org.eclipse.jdt.internal.ui.util.ExceptionHandler;
import org.eclipse.jdt.internal.ui.wizards.NewElementWizard;
import org.eclipse.jdt.internal.ui.wizards.NewWizardMessages;
import org.eclipse.jdt.ui.wizards.NewJavaProjectWizardPage;
import org.eclipse.jface.operation.IRunnableWithProgress;
import org.eclipse.jface.resource.ImageDescriptor;
import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.ui.actions.WorkspaceModifyDelegatingOperation;
import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
import org.eclipse.ui.wizards.newresource.BasicNewProjectResourceWizard;
public class TomcatProjectCreationWizard extends NewElementWizard implements IExecutableExtension, TomcatPluginResources {
public static final String NEW_PROJECT_WIZARD_ID = "org.eclipse.jdt.ui.wizards.NewProjectCreationWizard"; //$NON-NLS-1$
private NewTomcatProjectWizardPage fTomcatPage;
private NewJavaProjectWizardPage fJavaPage;
private WizardNewProjectCreationPage fMainPage;
private IConfigurationElement fConfigElement;
public TomcatProjectCreationWizard() {
super();
TomcatLauncherPlugin.checkTomcatSettingsAndWarn();
ImageDescriptor banner = this.getBannerImg();
if (banner != null)
setDefaultPageImageDescriptor(banner);
setDialogSettings(JavaPlugin.getDefault().getDialogSettings());
setWindowTitle(WIZARD_PROJECT_TITLE);
}
public boolean canFinish() {
return TomcatLauncherPlugin.isTomcatConfigured();
}
private ImageDescriptor getBannerImg() {
try {
URL prefix = new URL(TomcatLauncherPlugin.getDefault().getDescriptor().getInstallURL(), "icons/");
return ImageDescriptor.createFromURL(new URL(prefix, "newjprj_wiz.gif"));
} catch (MalformedURLException e) {
return null;
}
}
/*
* @see Wizard#addPages
*/
public void addPages() {
super.addPages();
fMainPage = new WizardNewProjectCreationPage("Page 1");
fMainPage.setTitle(WIZARD_PROJECT_MAINPAGE_TITLE);
fMainPage.setDescription(WIZARD_PROJECT_MAINPAGE_DESCRIPTION);
addPage(fMainPage);
fTomcatPage = new NewTomcatProjectWizardPage(this, "NewTomcatProjectPage");
fTomcatPage.setTitle(WIZARD_PROJECT_TOMCATPAGE_TITLE);
fTomcatPage.setDescription(WIZARD_PROJECT_TOMCATPAGE_DESCRIPTION);
addPage(fTomcatPage);
IWorkspaceRoot root = ResourcesPlugin.getWorkspace().getRoot();
fJavaPage = new NewJavaProjectWizardPage(root, fMainPage);
// addPage(fJavaPage);
}
/*
* @see Wizard#performFinish
*/
public boolean performFinish() {
IRunnableWithProgress op = new WorkspaceModifyDelegatingOperation(fJavaPage.getRunnable());
try {
getContainer().run(false, true, op);
TomcatProject.addTomcatNature(fJavaPage.getNewJavaProject());
TomcatProject tomcatPrj = TomcatProject.create(fJavaPage.getNewJavaProject());
tomcatPrj.setWebPath(fTomcatPage.getWebpath());
tomcatPrj.setUpdateXml(fTomcatPage.getUpdateXml());
tomcatPrj.setRootDir(fTomcatPage.getRootDir());
tomcatPrj.saveProperties();
tomcatPrj.fullConfiguration();
} catch (InvocationTargetException e) {
String title = NewWizardMessages.JavaProjectWizard_op_error_title; //$NON-NLS-1$
String message = NewWizardMessages.JavaProjectWizard_op_error_create_message; //$NON-NLS-1$
ExceptionHandler.handle(e, getShell(), title, message);
return false;
} catch (InterruptedException e) {
return false;
} catch (CoreException e) {
return false;
} catch (IOException e) {
return false;
}
BasicNewProjectResourceWizard.updatePerspective(fConfigElement);
selectAndReveal(fJavaPage.getNewJavaProject().getProject());
return true;
}
/*
* Stores the configuration element for the wizard. The config element will be used
* in <code>performFinish</code> to set the result perspective.
*/
public void setInitializationData(IConfigurationElement cfig, String propertyName, Object data) {
fConfigElement = cfig;
}
/*
* @see IWizard#getNextPage(IWizardPage)
*/
public IWizardPage getNextPage(IWizardPage page) {
// initialize Tomcat Wizard page webpath field
// Default value is / + projectName
if (page instanceof WizardNewProjectCreationPage) {
if (!fTomcatPage.wasDisplayedOnce()) {
fTomcatPage.setWebpath("/" + fMainPage.getProjectName());
}
}
return super.getNextPage(page);
}
/* (non-Javadoc)
* @see org.eclipse.jdt.internal.ui.wizards.NewElementWizard#finishPage(org.eclipse.core.runtime.IProgressMonitor)
*/
protected void finishPage(IProgressMonitor monitor) throws InterruptedException, CoreException {
// for Eclipse 3.0 compatibility
}
/**
* Getters for subclasses
*/
protected IConfigurationElement getFConfigElement() {
return fConfigElement;
}
protected NewJavaProjectWizardPage getFJavaPage() {
return fJavaPage;
}
protected WizardNewProjectCreationPage getFMainPage() {
return fMainPage;
}
protected NewTomcatProjectWizardPage getFTomcatPage() {
return fTomcatPage;
}
public IJavaElement getCreatedElement() {
// TODO Auto-generated method stub
return null;
}
}