| /*******************************************************************************
|
| * Copyright (c) 2009, 2019 Mia-Software and others.
|
| * All rights reserved. This program and the accompanying materials
|
| * are made available under the terms of the Eclipse Public License v2.0
|
| * which accompanies this distribution, and is available at
|
| * http://www.eclipse.org/legal/epl-v20.html
|
| *
|
| * Contributors:
|
| * Fabien Giquel (Mia-Software) - initial implementation
|
| * Gregoire DUPE (Mia-Software)
|
| *******************************************************************************/ |
| package org.eclipse.modisco.infra.common.ui.internal.wizards;
|
|
|
| import java.lang.reflect.InvocationTargetException;
|
|
|
| import org.eclipse.core.resources.IProject;
|
| import org.eclipse.core.resources.IProjectDescription;
|
| import org.eclipse.core.runtime.CoreException;
|
| import org.eclipse.core.runtime.IPath;
|
| import org.eclipse.core.runtime.IProgressMonitor;
|
| import org.eclipse.core.runtime.Platform;
|
| import org.eclipse.modisco.infra.common.core.internal.MoDiscoProject;
|
| import org.eclipse.modisco.infra.common.core.internal.utils.ProjectUtils;
|
| import org.eclipse.modisco.infra.common.core.logging.MoDiscoLogger;
|
| import org.eclipse.modisco.infra.common.ui.internal.Messages;
|
| import org.eclipse.modisco.infra.common.ui.internal.MoDiscoCommonUIPlugin;
|
| import org.eclipse.ui.actions.WorkspaceModifyOperation;
|
|
|
| /**
|
| * This operation creates a new project with MoDisco, Java and Plugin natures.
|
| * It initializes the Classpath and plugin configuration files with default
|
| * values.
|
| *
|
| */
|
| public class NewProjectCreationOperation extends WorkspaceModifyOperation {
|
| private IPath projectLocation = null;
|
| private IProject project = null;
|
|
|
| public NewProjectCreationOperation(final IPath projectLocation, final IProject projectToCreate) {
|
| this.projectLocation = projectLocation;
|
| this.project = projectToCreate;
|
| }
|
|
|
| @Override
|
| protected void execute(final IProgressMonitor monitor) throws CoreException,
|
| InvocationTargetException, InterruptedException {
|
| monitor.beginTask(Messages.NewProjectCreationOperation_MoDiscoProjectCreation,
|
| IProgressMonitor.UNKNOWN);
|
| if (!this.project.exists()) {
|
| IProjectDescription description = this.project.getWorkspace().newProjectDescription(
|
| this.project.getName());
|
| if (!Platform.getLocation().equals(this.projectLocation)) {
|
| description.setLocation(this.projectLocation);
|
| }
|
| this.project.create(monitor);
|
| this.project.open(monitor);
|
| monitor.subTask(Messages.NewProjectCreationOperation_AddingJavaNature);
|
| ProjectUtils.configureAsJavaProject(this.project, monitor);
|
| monitor.subTask(Messages.NewProjectCreationOperation_AddingPluginNature);
|
| ProjectUtils.configureAsPluginProject(this.project);
|
| ProjectUtils.addNature(this.project, monitor, MoDiscoProject.NATURE_ID);
|
| ProjectUtils.createBuildProperties(this.project);
|
| } else {
|
| MoDiscoLogger.logWarning("MoDisco project creation aborted: the project already exists", //$NON-NLS-1$
|
| MoDiscoCommonUIPlugin.getDefault());
|
| }
|
| monitor.done();
|
| }
|
| }
|