diff options
author | Igor Fedorenko | 2011-04-20 03:18:12 +0000 |
---|---|---|
committer | Igor Fedorenko | 2011-04-20 03:21:13 +0000 |
commit | 4da937a458053d1302b613559bde6ec59b97552c (patch) | |
tree | 73fa8fe96b460c950e4dcad070aa22692d3f68cd /org.eclipse.m2e.core.ui | |
parent | c0c5ddb0a296fafdededd4756289fc84824d65cf (diff) | |
download | m2e-core-4da937a458053d1302b613559bde6ec59b97552c.tar.gz m2e-core-4da937a458053d1302b613559bde6ec59b97552c.tar.xz m2e-core-4da937a458053d1302b613559bde6ec59b97552c.zip |
Reconciled dependency update and configuration update actions
Introduced MavenProjectActionSupport to handle project selection
during depenency and configuration update consistently.
Introduced
IProjectConfigurationManager.updateProjectConfiguration(MavenUpdateRequest, IProgressMonitor)
Some cleanup of updateProjectConfiguration implementation.
Signed-off-by: Igor Fedorenko <igor@ifedorenko.com>
Diffstat (limited to 'org.eclipse.m2e.core.ui')
7 files changed, 106 insertions, 167 deletions
diff --git a/org.eclipse.m2e.core.ui/plugin.properties b/org.eclipse.m2e.core.ui/plugin.properties index 7a97328d..d6ba890c 100644 --- a/org.eclipse.m2e.core.ui/plugin.properties +++ b/org.eclipse.m2e.core.ui/plugin.properties @@ -26,7 +26,7 @@ m2.popup.project.update-sources.label=Update Source Folders m2.popup.ModuleProjectWizardAction=New Maven Module Project m2.popup.AddPluginAction=Add Plugin m2.popup.AddDependencyAction=Add Dependency -m2.popup.UpdateConfigurationAction=Update Project Configuration +m2.popup.UpdateConfigurationAction=Update Project Configuration... m2.popup.RefreshMavenModelsAction=Update Dependencies... m2.popup.OpenUrlAction.openCiPage=Open Continuous Integration m2.popup.OpenUrlAction.openScmPage=Open Source Control diff --git a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/UpdateConfigurationJob.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/UpdateConfigurationJob.java index a630b598..b62ab048 100644 --- a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/UpdateConfigurationJob.java +++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/UpdateConfigurationJob.java @@ -28,12 +28,13 @@ import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.SubProgressMonitor; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.widgets.Display; -import org.eclipse.swt.widgets.Shell; import org.eclipse.ui.progress.IProgressConstants; import org.eclipse.m2e.core.MavenPlugin; import org.eclipse.m2e.core.core.IMavenConstants; import org.eclipse.m2e.core.project.IMavenProjectFacade; +import org.eclipse.m2e.core.project.IProjectConfigurationManager; +import org.eclipse.m2e.core.project.MavenUpdateRequest; import org.eclipse.m2e.core.ui.internal.actions.OpenMavenConsoleAction; import org.eclipse.m2e.core.ui.internal.util.M2EUIUtils; @@ -41,29 +42,28 @@ import org.eclipse.m2e.core.ui.internal.util.M2EUIUtils; public class UpdateConfigurationJob extends WorkspaceJob { private static final Logger log = LoggerFactory.getLogger(UpdateConfigurationJob.class); - private IProject[] projects; + private final IProject[] projects; - private Shell shell; + private final boolean offline; + + private final boolean forceUpdate; public UpdateConfigurationJob(IProject[] projects) { - this(projects, null); + this(projects, MavenPlugin.getMavenConfiguration().isOffline(), false /*forceUpdate*/); } - public UpdateConfigurationJob(IProject[] projects, Shell shell) { - this(shell); + public UpdateConfigurationJob(IProject[] projects, boolean offline, boolean forceUpdate) { + super(Messages.UpdateSourcesAction_job_update_conf); this.projects = projects; - } + this.offline = offline; + this.forceUpdate = forceUpdate; - private UpdateConfigurationJob(Shell shell) { - super(Messages.UpdateSourcesAction_job_update_conf); - this.shell = shell; setRule(MavenPlugin.getProjectConfigurationManager().getRule()); } - /* (non-Javadoc) - * @see org.eclipse.core.resources.WorkspaceJob#runInWorkspace(org.eclipse.core.runtime.IProgressMonitor) - */ public IStatus runInWorkspace(IProgressMonitor monitor) { + IProjectConfigurationManager configurationManager = MavenPlugin.getProjectConfigurationManager(); + setProperty(IProgressConstants.ACTION_PROPERTY, new OpenMavenConsoleAction()); monitor.beginTask(getName(), projects.length); @@ -82,23 +82,23 @@ public class UpdateConfigurationJob extends WorkspaceJob { monitor.subTask(project.getName()); IMavenProjectFacade projectFacade = MavenPlugin.getMavenProjectRegistry().create(project, monitor); if(projectFacade != null) { - try { - MavenPlugin.getProjectConfigurationManager().updateProjectConfiguration(project, // - new SubProgressMonitor(monitor, 1)); - } catch(CoreException ex) { - if(status == null) { + try { + MavenUpdateRequest request = new MavenUpdateRequest(project, offline, forceUpdate); + configurationManager.updateProjectConfiguration(request, new SubProgressMonitor(monitor, 1)); + } catch(CoreException ex) { + if(status == null) { + status = new MultiStatus(IMavenConstants.PLUGIN_ID, IStatus.ERROR, // + Messages.UpdateSourcesAction_error_cannot_update, null); + } + status.add(ex.getStatus()); + updateErrors.put(project.getName(), ex); + } catch(IllegalArgumentException e) { status = new MultiStatus(IMavenConstants.PLUGIN_ID, IStatus.ERROR, // Messages.UpdateSourcesAction_error_cannot_update, null); + updateErrors.put(project.getName(), e); } - status.add(ex.getStatus()); - updateErrors.put(project.getName(), ex); - } catch(IllegalArgumentException e) { - status = new MultiStatus(IMavenConstants.PLUGIN_ID, IStatus.ERROR, // - Messages.UpdateSourcesAction_error_cannot_update, null); - updateErrors.put(project.getName(), e); } } - } if(updateErrors.size() > 0) { handleErrors(updateErrors); } @@ -112,9 +112,8 @@ public class UpdateConfigurationJob extends WorkspaceJob { final Display display = Display.getDefault(); if(display != null) { display.asyncExec(new Runnable() { - public void run() { - M2EUIUtils.showErrorsForProjectsDialog(shell != null ? shell : display.getActiveShell(), + M2EUIUtils.showErrorsForProjectsDialog(display.getActiveShell(), Messages.UpdateSourcesAction_error_title, Messages.UpdateSourcesAction_error_message, updateErrors); } }); diff --git a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/actions/EnableNatureAction.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/actions/EnableNatureAction.java index 987d8e6f..4b20e856 100644 --- a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/actions/EnableNatureAction.java +++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/actions/EnableNatureAction.java @@ -134,7 +134,7 @@ public class EnableNatureAction implements IObjectActionDelegate, IExecutableExt IProjectConfigurationManager configurationManager = MavenPlugin.getProjectConfigurationManager(); - configurationManager.enableMavenNature(project, configuration, new NullProgressMonitor()); + configurationManager.enableMavenNature(project, configuration, monitor); if(!hasMavenNature) { configurationManager.updateProjectConfiguration(project, monitor); diff --git a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/actions/MavenActionSupport.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/actions/MavenActionSupport.java index 74370bf8..e40392ef 100644 --- a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/actions/MavenActionSupport.java +++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/actions/MavenActionSupport.java @@ -76,6 +76,8 @@ public abstract class MavenActionSupport implements IObjectActionDelegate { public void selectionChanged(IAction action, ISelection selection) { if(selection instanceof IStructuredSelection) { this.selection = (IStructuredSelection) selection; + } else { + this.selection = null; } } diff --git a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/actions/MavenProjectActionSupport.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/actions/MavenProjectActionSupport.java new file mode 100644 index 00000000..dd66576c --- /dev/null +++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/actions/MavenProjectActionSupport.java @@ -0,0 +1,69 @@ +/******************************************************************************* + * Copyright (c) 2010 Sonatype, Inc. + * 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: + * Sonatype, Inc. - initial API and implementation + *******************************************************************************/ + +package org.eclipse.m2e.core.ui.internal.actions; + +import java.util.ArrayList; +import java.util.Iterator; + +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import org.eclipse.core.resources.IProject; +import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IAdaptable; +import org.eclipse.ui.IWorkbenchWindow; +import org.eclipse.ui.IWorkbenchWindowActionDelegate; +import org.eclipse.ui.IWorkingSet; + +import org.eclipse.m2e.core.core.IMavenConstants; + + +public abstract class MavenProjectActionSupport extends MavenActionSupport implements IWorkbenchWindowActionDelegate { + + private static final Logger log = LoggerFactory.getLogger(UpdateDependenciesAction.class); + + protected IProject[] getProjects() { + ArrayList<IProject> projectList = new ArrayList<IProject>(); + if(selection != null) { + for(Iterator<?> it = selection.iterator(); it.hasNext();) { + Object o = it.next(); + if(o instanceof IProject) { + projectList.add((IProject) o); + } else if(o instanceof IWorkingSet) { + IWorkingSet workingSet = (IWorkingSet) o; + for(IAdaptable adaptable : workingSet.getElements()) { + IProject project = (IProject) adaptable.getAdapter(IProject.class); + try { + if(project != null && project.isAccessible() && project.hasNature(IMavenConstants.NATURE_ID)) { + projectList.add(project); + } + } catch(CoreException ex) { + log.error(ex.getMessage(), ex); + } + } + } + } + } + if(projectList.isEmpty()) { + return ResourcesPlugin.getWorkspace().getRoot().getProjects(); + } + return projectList.toArray(new IProject[projectList.size()]); + } + + public void dispose() { + } + + public void init(IWorkbenchWindow window) { + } + +} diff --git a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/actions/UpdateConfigurationAction.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/actions/UpdateConfigurationAction.java index 04243201..2372d1f3 100644 --- a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/actions/UpdateConfigurationAction.java +++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/actions/UpdateConfigurationAction.java @@ -11,85 +11,25 @@ package org.eclipse.m2e.core.ui.internal.actions; -import java.util.Iterator; -import java.util.LinkedHashSet; -import java.util.Set; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jface.action.IAction; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; -import org.eclipse.swt.widgets.Shell; -import org.eclipse.ui.IObjectActionDelegate; -import org.eclipse.ui.IWorkbenchPart; -import org.eclipse.ui.IWorkingSet; +import org.eclipse.jface.window.Window; -import org.eclipse.m2e.core.core.IMavenConstants; import org.eclipse.m2e.core.ui.internal.UpdateConfigurationJob; +import org.eclipse.m2e.core.ui.internal.dialogs.UpdateDepenciesDialog; -public class UpdateConfigurationAction implements IObjectActionDelegate { - private static final Logger log = LoggerFactory.getLogger(UpdateConfigurationAction.class); +public class UpdateConfigurationAction extends MavenProjectActionSupport { public static final String ID = "org.eclipse.m2e.updateConfigurationAction"; //$NON-NLS-1$ - private IStructuredSelection selection; - public UpdateConfigurationAction() { } - - public UpdateConfigurationAction(Shell shell) { - } - - public void setActivePart(IAction action, IWorkbenchPart targetPart) { - } - - public void selectionChanged(IAction action, ISelection selection) { - if(selection instanceof IStructuredSelection) { - this.selection = (IStructuredSelection) selection; - } else { - this.selection = null; - } - } public void run(IAction action) { - final Set<IProject> projects = getProjects(); - new UpdateConfigurationJob(projects.toArray(new IProject[projects.size()])).schedule(); - } - - private Set<IProject> getProjects() { - Set<IProject> projects = new LinkedHashSet<IProject>(); - if(selection != null) { - for(Iterator<?> it = selection.iterator(); it.hasNext();) { - Object element = it.next(); - if(element instanceof IProject) { - projects.add((IProject) element); - } else if(element instanceof IWorkingSet) { - IWorkingSet workingSet = (IWorkingSet) element; - for(IAdaptable adaptable : workingSet.getElements()) { - IProject project = (IProject) adaptable.getAdapter(IProject.class); - try { - if(project != null && project.isAccessible() && project.hasNature(IMavenConstants.NATURE_ID)) { - projects.add(project); - } - } catch(CoreException ex) { - log.error(ex.getMessage(), ex); - } - } - } else if(element instanceof IAdaptable) { - IProject project = (IProject) ((IAdaptable) element).getAdapter(IProject.class); - if(project != null) { - projects.add(project); - } - } - } + UpdateDepenciesDialog dialog = new UpdateDepenciesDialog(getShell(), getProjects()); + if(dialog.open() == Window.OK) { + new UpdateConfigurationJob(dialog.getSelectedProjects(), dialog.isOffline(), dialog.isForceUpdate()).schedule(); } - return projects; } } diff --git a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/actions/UpdateDependenciesAction.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/actions/UpdateDependenciesAction.java index 6a89b50c..f4bb83ca 100644 --- a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/actions/UpdateDependenciesAction.java +++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/actions/UpdateDependenciesAction.java @@ -11,51 +11,22 @@ package org.eclipse.m2e.core.ui.internal.actions; -import java.util.ArrayList; -import java.util.Iterator; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import org.eclipse.core.resources.IProject; -import org.eclipse.core.resources.ResourcesPlugin; -import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IAdaptable; -import org.eclipse.core.runtime.IConfigurationElement; -import org.eclipse.core.runtime.IExecutableExtension; import org.eclipse.jface.action.IAction; -import org.eclipse.jface.viewers.ISelection; -import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.window.Window; -import org.eclipse.ui.IWorkbenchWindow; -import org.eclipse.ui.IWorkbenchWindowActionDelegate; -import org.eclipse.ui.IWorkingSet; import org.eclipse.m2e.core.MavenPlugin; -import org.eclipse.m2e.core.core.IMavenConstants; import org.eclipse.m2e.core.project.IMavenProjectRegistry; import org.eclipse.m2e.core.project.MavenUpdateRequest; import org.eclipse.m2e.core.ui.internal.dialogs.UpdateDepenciesDialog; -public class UpdateDependenciesAction extends MavenActionSupport implements IWorkbenchWindowActionDelegate, - IExecutableExtension { - private static final Logger log = LoggerFactory.getLogger(UpdateDependenciesAction.class); +public class UpdateDependenciesAction extends MavenProjectActionSupport { public static final String ID = "org.eclipse.m2e.refreshMavenModelsAction"; //$NON-NLS-1$ - private IStructuredSelection selection; - public UpdateDependenciesAction() { } - // IExecutableExtension - - public void setInitializationData(IConfigurationElement config, String propertyName, Object data) { - } - - // IWorkbenchWindowActionDelegate - public void run(IAction action) { UpdateDepenciesDialog dialog = new UpdateDepenciesDialog(getShell(), getProjects()); if(dialog.open() == Window.OK) { @@ -65,46 +36,4 @@ public class UpdateDependenciesAction extends MavenActionSupport implements IWor } } - public void selectionChanged(IAction action, ISelection selection) { - if(selection instanceof IStructuredSelection) { - this.selection = (IStructuredSelection) selection; - } else { - this.selection = null; - } - } - - public void dispose() { - } - - public void init(IWorkbenchWindow window) { - } - - private IProject[] getProjects() { - ArrayList<IProject> projectList = new ArrayList<IProject>(); - if(selection != null) { - for(Iterator<?> it = selection.iterator(); it.hasNext();) { - Object o = it.next(); - if(o instanceof IProject) { - projectList.add((IProject) o); - } else if(o instanceof IWorkingSet) { - IWorkingSet workingSet = (IWorkingSet) o; - for(IAdaptable adaptable : workingSet.getElements()) { - IProject project = (IProject) adaptable.getAdapter(IProject.class); - try { - if(project != null && project.isAccessible() && project.hasNature(IMavenConstants.NATURE_ID)) { - projectList.add(project); - } - } catch(CoreException ex) { - log.error(ex.getMessage(), ex); - } - } - } - } - } - if(projectList.isEmpty()) { - return ResourcesPlugin.getWorkspace().getRoot().getProjects(); - } - return projectList.toArray(new IProject[projectList.size()]); - } - } |