diff options
Diffstat (limited to 'plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers')
7 files changed, 163 insertions, 17 deletions
diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/AbstractAddFileHandler.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/AbstractAddFileHandler.java index d6b34ab1297..f065138362f 100644 --- a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/AbstractAddFileHandler.java +++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/AbstractAddFileHandler.java @@ -23,9 +23,13 @@ import org.eclipse.papyrus.eclipse.project.editors.project.ProjectEditor; import org.eclipse.swt.widgets.Display; +/** + * @since 1.2 + */ public abstract class AbstractAddFileHandler extends AbstractHandler { + @Override public Object execute(final ExecutionEvent event) { Job job = new Job(getJobName()) { @@ -46,6 +50,7 @@ public abstract class AbstractAddFileHandler extends AbstractHandler { public void done(final IJobChangeEvent event) { Display.getDefault().asyncExec(new Runnable() { + @Override public void run() { MessageDialog.openInformation(Display.getDefault().getActiveShell(), getJobName(), "Done."); } @@ -60,15 +65,15 @@ public abstract class AbstractAddFileHandler extends AbstractHandler { final IProject[] projects = ResourcesPlugin.getWorkspace().getRoot().getProjects(); URL sourceURL = getSourceURL(); - if(sourceURL == null) { + if (sourceURL == null) { MessageDialog.openError(Display.getCurrent().getActiveShell(), "Cannot find the source file", "The source file is invalid"); } String targetPath = getTargetPath(); monitor.beginTask(getJobName(), projects.length); - for(final IProject current : projects) { - if(current.isOpen() && isValidProject(current)) { + for (final IProject current : projects) { + if (current.isOpen() && isValidProject(current)) { try { addFile(current, sourceURL, targetPath); } catch (final CoreException e) { @@ -86,7 +91,7 @@ public abstract class AbstractAddFileHandler extends AbstractHandler { return Status.OK_STATUS; } - //Subclasses should override this + // Subclasses should override this protected String getJobName() { return "Add files"; } @@ -100,11 +105,11 @@ public abstract class AbstractAddFileHandler extends AbstractHandler { /** * * @param project - * the project + * the project * @param file - * the file to add + * the file to add * @param fileDestinationPath - * the path where add the file + * the path where add the file * @throws CoreException * @throws IOException */ diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/EnsureAPIAnalysisHandler.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/EnsureAPIAnalysisHandler.java new file mode 100644 index 00000000000..b72cb3663e2 --- /dev/null +++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/EnsureAPIAnalysisHandler.java @@ -0,0 +1,130 @@ +/***************************************************************************** + * Copyright (c) 2016 Christian W. Damus 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: + * Christian W. Damus - Initial API and implementation + * + *****************************************************************************/ + +package org.eclipse.papyrus.dev.project.management.handlers; + +import java.util.Arrays; +import java.util.Collections; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; +import java.util.stream.Stream; + +import org.eclipse.core.commands.AbstractHandler; +import org.eclipse.core.commands.ExecutionEvent; +import org.eclipse.core.commands.ExecutionException; +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.IProjectDescription; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.IStatus; +import org.eclipse.core.runtime.OperationCanceledException; +import org.eclipse.core.runtime.Status; +import org.eclipse.core.runtime.SubMonitor; +import org.eclipse.core.runtime.jobs.Job; +import org.eclipse.papyrus.dev.project.management.Activator; +import org.eclipse.papyrus.eclipse.project.editors.interfaces.IProjectEditor; +import org.eclipse.papyrus.eclipse.project.editors.interfaces.ProjectEditors; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.handlers.HandlerUtil; +import org.eclipse.ui.progress.IProgressService; +import org.eclipse.ui.statushandlers.StatusManager; + +/** + * Ensures that all projects that have the Oomph Version Management nature configured + * also have the PDE API Analysis nature configured. + * + * @since 1.2 + */ +public class EnsureAPIAnalysisHandler extends AbstractHandler { + + public EnsureAPIAnalysisHandler() { + super(); + } + + @Override + public Object execute(ExecutionEvent event) throws ExecutionException { + List<IProject> versionProjects = getAllVersionProjects(); + + Job updateJob = new Job("Ensure API Analysis") { + + { + setRule(ResourcesPlugin.getWorkspace().getRoot()); + } + + @Override + protected IStatus run(IProgressMonitor monitor) { + Set<String> naturesToAdd = Collections.singleton("org.eclipse.pde.api.tools.apiAnalysisNature"); + Set<String> buildersToAdd = Collections.singleton("org.eclipse.pde.api.tools.apiAnalysisBuilder"); + SubMonitor sub = SubMonitor.convert(monitor, "Updating projects...", versionProjects.size()); + + versionProjects.forEach(project -> { + try { + if (sub.isCanceled()) { + throw new OperationCanceledException(); + } + + IProjectEditor projectEditor = ProjectEditors.getProjectEditor(project); + if (projectEditor.hasNature("org.eclipse.oomph.version.VersionNature")) { + // Ensure the API Analysis nature and builder + projectEditor.addNatures(naturesToAdd); + projectEditor.addBuildCommands(buildersToAdd); + if (projectEditor.isDirty()) { + projectEditor.save(); + } + } + + sub.worked(1); + } catch (CoreException e) { + StatusManager.getManager().handle(e.getStatus(), StatusManager.SHOW); + } + }); + + sub.done(); + + return Status.OK_STATUS; + } + }; + updateJob.schedule(); + + IWorkbenchWindow window = HandlerUtil.getActiveWorkbenchWindow(event); + IProgressService progress = window.getWorkbench().getProgressService(); + progress.showInDialog(window.getShell(), updateJob); + + return null; + } + + List<IProject> getAllVersionProjects() { + return Stream.of(ResourcesPlugin.getWorkspace().getRoot().getProjects()) + .filter(this::hasVersionNature) + .collect(Collectors.toList()); + } + + boolean hasVersionNature(IProject project) { + boolean result = false; + + if (project.isAccessible()) { + try { + IProjectDescription desc = project.getDescription(); + List<String> natures = Arrays.asList(desc.getNatureIds()); + result = natures.contains("org.eclipse.oomph.version.VersionNature"); //$NON-NLS-1$ + } catch (CoreException e) { + // Guess it's not an interesting project + Activator.log.log(e.getStatus()); + } + } + + return result; + } +} diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/SyncManifestAndPOMVersions.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/SyncManifestAndPOMVersions.java index 8c1a3aa7e19..66772afd2c7 100644 --- a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/SyncManifestAndPOMVersions.java +++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/SyncManifestAndPOMVersions.java @@ -67,6 +67,8 @@ import org.w3c.dom.NodeList; /** * Ensures that <tt>pom.xml</tt> files have the same version number as their * corresponding <tt>MANIFEST.MF</tt> or <tt>feature.xml</tt> file. + * + * @since 1.2 */ public class SyncManifestAndPOMVersions extends AbstractHandler { private static final Pattern BUNDLE_VERSION = Pattern.compile("^Bundle-Version:\\s*(\\S+)\\s*$", Pattern.MULTILINE); //$NON-NLS-1$ @@ -141,7 +143,7 @@ public class SyncManifestAndPOMVersions extends AbstractHandler { .filter(this::hasPluginOrFeatureNature) .forEach(project -> { IFile pom = project.getFile("pom.xml"); //$NON-NLS-1$ - if (pom != null) { + if ((pom != null) && pom.isAccessible()) { IFile manifest = project.getFile("feature.xml"); if (!manifest.isAccessible()) { manifest = project.getFile("META-INF/MANIFEST.MF"); diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/features/SetCopyrightNoticeHandler.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/features/SetCopyrightNoticeHandler.java index 2b6947eac76..9e1c21f762e 100644 --- a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/features/SetCopyrightNoticeHandler.java +++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/features/SetCopyrightNoticeHandler.java @@ -31,6 +31,8 @@ import org.eclipse.swt.widgets.Display; * * set the Copyright and the URL only if it not yet set. * + * @since 1.2 + * */ public class SetCopyrightNoticeHandler extends AbstractHandler { @@ -38,13 +40,14 @@ public class SetCopyrightNoticeHandler extends AbstractHandler { final static String TEXT = "text"; + @Override public Object execute(final ExecutionEvent event) throws ExecutionException { Utils.getSelectedOpenProject(); final TwoInputDialog dialog = new TwoInputDialog(Display.getDefault().getActiveShell(), "Set Copyright Notice", "Licence url", "text", OPTIONAL_URL, TEXT, null); - if(dialog.open() == Window.OK) { + if (dialog.open() == Window.OK) { final String newVersion = dialog.getValue(); final List<IProject> featureProjects = Utils.getOpenedFeatureProject(); - for(final IProject current : featureProjects) { + for (final IProject current : featureProjects) { try { setCopyrightNotice(current, dialog.getValue(), dialog.getValue_2()); } catch (final Throwable e) { @@ -62,8 +65,8 @@ public class SetCopyrightNoticeHandler extends AbstractHandler { * @param text * @throws Throwable * - * TODO : doesn't erase existing value! - * TODO : add a checkbox in the dialog to erase existing value + * TODO : doesn't erase existing value! + * TODO : add a checkbox in the dialog to erase existing value */ protected void setCopyrightNotice(final IProject featureProject, final String url, final String text) throws Throwable { final IFeatureProjectEditor editor = new FeatureProjectEditor(featureProject); @@ -72,18 +75,18 @@ public class SetCopyrightNoticeHandler extends AbstractHandler { final String copyrightURL = editor.getCopyrightURL(); String settedURL = null; String settedText = null; - //TODO improve these tests - if((copyrightURL == null) || copyrightURL.equals("")) { + // TODO improve these tests + if ((copyrightURL == null) || copyrightURL.equals("")) { settedURL = url; } else { settedURL = copyrightURL; } - if((copyrirghtText == null) || copyrirghtText.equals("")) { + if ((copyrirghtText == null) || copyrirghtText.equals("")) { settedText = text; } - if(settedText.equals(copyrirghtText) && settedURL.equals(copyrightURL)) { - //do nothing + if (settedText.equals(copyrirghtText) && settedURL.equals(copyrightURL)) { + // do nothing } else { editor.setCopyright(settedURL, settedText); editor.save(); diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/OpenParentPOMHandler.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/OpenParentPOMHandler.java index 78408bf3f4b..a2de9c91a20 100644 --- a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/OpenParentPOMHandler.java +++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/OpenParentPOMHandler.java @@ -45,6 +45,8 @@ import org.xml.sax.helpers.DefaultHandler; /** * Handler for the "open parent POM" command. + * + * @since 1.2 */ public class OpenParentPOMHandler extends AbstractHandler { private final String POM_CONTENT_TYPE = "org.eclipse.m2e.core.pomFile"; //$NON-NLS-1$ diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/OptimizeDependenciesHandler.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/OptimizeDependenciesHandler.java index d9a501e25ea..6bca6f20f54 100644 --- a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/OptimizeDependenciesHandler.java +++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/OptimizeDependenciesHandler.java @@ -24,6 +24,8 @@ import org.eclipse.papyrus.eclipse.project.editors.interfaces.IManifestEditor; * Handler for the "optimize dependencies" command, which ensures re-exports of dependencies * that contribute types to the exported API and removes redundancies (except where they are * re-exported). + * + * @since 1.2 */ public class OptimizeDependenciesHandler extends AbstractManifestUpdateHandler { diff --git a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/UpdateDependencyRangesHandler.java b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/UpdateDependencyRangesHandler.java index 048ef1cc953..8bc4436c8ee 100644 --- a/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/UpdateDependencyRangesHandler.java +++ b/plugins/developer/org.eclipse.papyrus.dev.project.management/src/org/eclipse/papyrus/dev/project/management/handlers/plugins/UpdateDependencyRangesHandler.java @@ -26,6 +26,8 @@ import org.eclipse.papyrus.eclipse.project.editors.interfaces.IManifestEditor; * by the current PDE Target version, except for certain 3rd-party Orbit bundles * (such as Guava, ICU4J) that are known to increase major versions frequently without * breaking compatibility. + * + * @since 1.2 */ public class UpdateDependencyRangesHandler extends AbstractManifestUpdateHandler { |