| /********************************************************************* |
| * Copyright (c) 2016 GianMaria Romanato |
| * |
| * This program and the accompanying materials are made |
| * available under the terms of the Eclipse Public License 2.0 |
| * which is available at https://www.eclipse.org/legal/epl-2.0/ |
| * |
| * SPDX-License-Identifier: EPL-2.0 |
| **********************************************************************/ |
| |
| package org.eclipse.virgo.ide.ui.internal.actions; |
| |
| import org.eclipse.core.resources.IProject; |
| import org.eclipse.core.resources.IProjectDescription; |
| import org.eclipse.core.runtime.CoreException; |
| import org.eclipse.core.runtime.IProgressMonitor; |
| import org.eclipse.core.runtime.IStatus; |
| import org.eclipse.core.runtime.Status; |
| import org.eclipse.jface.dialogs.MessageDialog; |
| import org.eclipse.ui.IObjectActionDelegate; |
| import org.eclipse.ui.statushandlers.StatusManager; |
| import org.eclipse.virgo.ide.facet.core.FacetCorePlugin; |
| import org.eclipse.virgo.ide.pde.core.internal.Constants; |
| import org.eclipse.virgo.ide.ui.ServerIdeUiPlugin; |
| |
| /** |
| * ConvertPlugInProject is a contextual menu action in the Virgo submenu for migrating PDE Plug-in projects to the |
| * official Virgo tools support for PDE. |
| * |
| * The migration consists in adding project natures. |
| */ |
| public class ConvertPlugInProject extends AbstractConvertAction implements IObjectActionDelegate { |
| |
| private static final String PDE_NATURE = "org.eclipse.pde.PluginNature"; //$NON-NLS-1$ |
| |
| @Override |
| protected String getNature() { |
| return PDE_NATURE; |
| } |
| |
| @Override |
| protected void migrate(IProgressMonitor monitor, IProject project) { |
| monitor.beginTask("", 1); //$NON-NLS-1$ |
| try { |
| IProjectDescription description = project.getDescription(); |
| String[] natures = description.getNatureIds(); |
| |
| String[] newNatures = new String[natures.length + 3]; |
| System.arraycopy(natures, 0, newNatures, 0, natures.length); |
| newNatures[natures.length] = "org.eclipse.wst.common.project.facet.core.nature"; //$NON-NLS-1$ |
| newNatures[natures.length + 1] = FacetCorePlugin.BUNDLE_NATURE_ID; |
| newNatures[natures.length + 2] = Constants.NATURE_ID; |
| |
| description.setNatureIds(newNatures); |
| |
| project.setDescription(description, monitor); |
| } catch (CoreException e) { |
| Status s = new Status(IStatus.ERROR, ServerIdeUiPlugin.PLUGIN_ID, e.getMessage()); |
| StatusManager.getManager().handle(s, StatusManager.SHOW); |
| } finally { |
| monitor.done(); |
| } |
| } |
| |
| @Override |
| protected boolean showConfirmationDialog() { |
| return MessageDialog.openQuestion(this.part.getSite().getShell(), Messages.ConvertPlugInProject_title, Messages.ConvertPlugInProject_message); |
| } |
| |
| } |