blob: 3f13b339427157b7b3f3d447b653ba85c91e542a [file] [log] [blame]
/*******************************************************************************
* Copyright (c) 2002, 2006 IBM Corporation and others.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* IBM Corporation - initial API and implementation
* Jens Lukowski/Innoopract - initial renaming/restructuring
*
*******************************************************************************/
package org.eclipse.wst.xml.ui.internal.wizards;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IConfigurationElement;
import org.eclipse.jface.wizard.IWizard;
import org.eclipse.jface.wizard.IWizardPage;
import org.eclipse.ui.dialogs.WizardNewProjectCreationPage;
public class ExampleProjectCreationWizardPage extends WizardNewProjectCreationPage {
private IConfigurationElement configurationElement;
public ExampleProjectCreationWizardPage(int pageNumber, IConfigurationElement elem) {
super("page" + pageNumber); //$NON-NLS-1$
configurationElement = elem;
String name = getAttribute(elem, "name"); //$NON-NLS-1$
setInitialProjectName(calculateInitialProjectName(name));
setDescription(getAttribute(configurationElement, "pagedescription")); //$NON-NLS-1$
setTitle(getAttribute(configurationElement, "pagetitle")); //$NON-NLS-1$
}
/*
* Set the default project name that is to appear on the initialPage page
* of this wizard.
*/
protected String calculateInitialProjectName(String projectName) {
IProject projectHandle = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName);
if (!projectHandle.exists()) {
return projectName;
}
// Change the name until it doesn't exists. Try 9 times and then
// give up.
for (int i = 1; i < 10; i++) {
projectHandle = ResourcesPlugin.getWorkspace().getRoot().getProject(projectName + i);
if (!projectHandle.exists()) {
return projectName + i;
}
}
return projectName + "9"; //$NON-NLS-1$
}
private String getAttribute(IConfigurationElement elem, String tag) {
String res = elem.getAttribute(tag);
if (res == null) {
return '!' + tag + '!';
}
return res;
}
/**
* Returns the configuration element of this page.
*
* @return Returns a IConfigurationElement
*/
public IConfigurationElement getConfigurationElement() {
return configurationElement;
}
/**
* @see org.eclipse.ui.dialogs.WizardNewProjectCreationPage#validatePage()
*/
protected boolean validatePage() {
if (!super.validatePage()) {
return false;
}
String projectName = getProjectName();
if (projectName == null) {
return false;
}
IWizard wizard = getWizard();
if (wizard instanceof ExampleProjectCreationWizard) {
IWizardPage[] pages = wizard.getPages();
for (int i = 0; i < pages.length; i++) {
if ((pages[i] != this) && (pages[i] instanceof ExampleProjectCreationWizardPage)) {
if (projectName.equals(((ExampleProjectCreationWizardPage) pages[i]).getProjectName())) {
setErrorMessage(XMLWizardsMessages.ExampleProjectCreationWizardPage_error_alreadyexists);
return false;
}
}
}
}
return true;
}
}