diff options
11 files changed, 251 insertions, 57 deletions
diff --git a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/PomHierarchyComposite.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/components/PomHierarchyComposite.java index 64294320..c55a01d8 100644 --- a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/PomHierarchyComposite.java +++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/components/PomHierarchyComposite.java @@ -1,12 +1,23 @@ - -package org.eclipse.m2e.editor.composites; +/******************************************************************************* + * Copyright (c) 2011 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.components; import java.lang.reflect.InvocationTargetException; import java.util.LinkedList; import java.util.List; import java.util.ListIterator; -import org.apache.maven.project.MavenProject; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.NullProgressMonitor; @@ -16,19 +27,22 @@ import org.eclipse.jface.viewers.IColorProvider; import org.eclipse.jface.viewers.IInputSelectionProvider; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.TreeViewer; import org.eclipse.jface.viewers.Viewer; -import org.eclipse.m2e.core.MavenPlugin; -import org.eclipse.m2e.core.project.IMavenProjectFacade; import org.eclipse.swt.SWT; import org.eclipse.swt.graphics.Color; import org.eclipse.swt.layout.FillLayout; import org.eclipse.swt.widgets.Composite; import org.eclipse.swt.widgets.Display; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; + +import org.apache.maven.project.MavenProject; + +import org.eclipse.m2e.core.MavenPlugin; +import org.eclipse.m2e.core.project.IMavenProjectFacade; +import org.eclipse.m2e.core.ui.internal.util.ParentGatherer; public class PomHierarchyComposite extends Composite implements IInputSelectionProvider { @@ -230,4 +244,15 @@ public class PomHierarchyComposite extends Composite implements IInputSelectionP public List<MavenProject> getHierarchy() { return hierarchy; } + + public MavenProject fromSelection() { + ISelection selection = pomsViewer.getSelection(); + if(selection instanceof IStructuredSelection) { + Object obj = ((IStructuredSelection) selection).getFirstElement(); + if(obj instanceof MavenProject) { + return (MavenProject) obj; + } + } + return null; + } } diff --git a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/ParentGatherer.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/util/ParentGatherer.java index 7801a0e7..148dd008 100644 --- a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/ParentGatherer.java +++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/util/ParentGatherer.java @@ -9,7 +9,7 @@ * Sonatype, Inc. - initial API and implementation *******************************************************************************/ -package org.eclipse.m2e.editor.composites; +package org.eclipse.m2e.core.ui.internal.util; import java.util.LinkedList; diff --git a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/M2EUtils.java b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/M2EUtils.java index 1c647b00..7a1e5104 100644 --- a/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/M2EUtils.java +++ b/org.eclipse.m2e.core/src/org/eclipse/m2e/core/internal/M2EUtils.java @@ -11,9 +11,20 @@ package org.eclipse.m2e.core.internal; +import java.io.File; +import java.util.Stack; + import org.eclipse.core.resources.IContainer; +import org.eclipse.core.resources.IFile; import org.eclipse.core.resources.IFolder; +import org.eclipse.core.resources.IResource; +import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IPath; +import org.eclipse.core.runtime.Path; + +import org.apache.maven.project.MavenProject; + public class M2EUtils { @@ -61,4 +72,28 @@ public class M2EUtils { return cause == null ? rootCause : cause; } + /* + * Find the pom associated with a MavenProject + */ + public static IFile getPomFile(MavenProject project) { + //XXX copied from XmlUtils.extractProject() + File file = new File(project.getFile().toURI()); + IPath path = Path.fromOSString(file.getAbsolutePath()); + Stack<IFile> stack = new Stack<IFile>(); + //here we need to find the most inner project to the path. + //we do so by shortening the path and remembering all the resources identified. + // at the end we pick the last one from the stack. is there a catch to it? + IFile ifile = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(path); + if(ifile != null) { + stack.push(ifile); + } + while(path.segmentCount() > 1) { + IResource ires = ResourcesPlugin.getWorkspace().getRoot().findMember(path); + if(ires != null && ires instanceof IFile) { + stack.push((IFile) ires); + } + path = path.removeFirstSegments(1); + } + return stack.empty() ? null : stack.pop(); + } } diff --git a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/lifecycle/LifecycleMappingDialog.java b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/lifecycle/LifecycleMappingDialog.java new file mode 100644 index 00000000..729924a7 --- /dev/null +++ b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/lifecycle/LifecycleMappingDialog.java @@ -0,0 +1,143 @@ +/******************************************************************************* + * Copyright (c) 2011 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.editor.xml.internal.lifecycle; + +import java.lang.reflect.InvocationTargetException; + +import org.apache.maven.model.Plugin; +import org.apache.maven.project.MavenProject; + +import org.eclipse.core.resources.IFile; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.jface.dialogs.Dialog; +import org.eclipse.jface.operation.IRunnableContext; +import org.eclipse.jface.operation.IRunnableWithProgress; +import org.eclipse.jface.viewers.ISelectionChangedListener; +import org.eclipse.jface.viewers.SelectionChangedEvent; +import org.eclipse.swt.SWT; +import org.eclipse.swt.custom.CLabel; +import org.eclipse.swt.layout.GridData; +import org.eclipse.swt.widgets.Composite; +import org.eclipse.swt.widgets.Control; +import org.eclipse.swt.widgets.Label; +import org.eclipse.swt.widgets.Shell; +import org.eclipse.ui.ISharedImages; +import org.eclipse.ui.PlatformUI; + +import org.eclipse.m2e.core.MavenPlugin; +import org.eclipse.m2e.core.internal.M2EUtils; +import org.eclipse.m2e.core.project.IMavenProjectFacade; +import org.eclipse.m2e.core.ui.internal.components.PomHierarchyComposite; + + +public class LifecycleMappingDialog extends Dialog implements ISelectionChangedListener { + + private PomHierarchyComposite pomComposite; + + private CLabel status; + + private IFile pomFile; + + private IMavenProjectFacade facade; + + private String pluginGroupId; + + private String pluginArtifactId; + + private String pluginVersion; + + private MavenProject pluginProject; + + public LifecycleMappingDialog(Shell parentShell, IFile pom, String pluginGroupId, String pluginArtifactId, + String pluginVersion) { + super(parentShell); + facade = MavenPlugin.getMavenProjectRegistry().create(pom, true, new NullProgressMonitor()); + this.pluginGroupId = pluginGroupId; + this.pluginArtifactId = pluginArtifactId; + this.pluginVersion = pluginVersion; + } + + @Override + protected Control createDialogArea(Composite parent) { + Composite container = (Composite) super.createDialogArea(parent); + Label label = new Label(container, SWT.NONE); + label.setText("Select location to place ignore"); + pomComposite = new PomHierarchyComposite(container, SWT.BORDER); + pomComposite.setLayoutData(new GridData(SWT.FILL, SWT.FILL, true, true)); + pomComposite.addSelectionChangedListener(this); + pomComposite.computeHeirarchy(facade, new IRunnableContext() { + + public void run(boolean fork, boolean cancelable, IRunnableWithProgress runnable) + throws InvocationTargetException, InterruptedException { + runnable.run(new NullProgressMonitor()); + } + }); + status = new CLabel(container, SWT.WRAP); + status.setLayoutData(new GridData(SWT.FILL, SWT.BOTTOM, true, false)); + + pluginProject = locatePlugin(); + return container; + } + + @Override + protected void createButtonsForButtonBar(Composite parent) { + super.createButtonsForButtonBar(parent); + getButton(OK).setEnabled(false); + } + + public void selectionChanged(SelectionChangedEvent event) { + MavenProject project = pomComposite.fromSelection(); + if(getButton(OK) != null) { + getButton(OK).setEnabled(project != null && project.getFile() != null); + } + updateStatus(project); + } + + private void updateStatus(MavenProject project) { + if(project.getFile() == null) { + status.setText("Non-workspace pom"); + status.setImage(PlatformUI.getWorkbench().getSharedImages().getImage(ISharedImages.IMG_OBJS_ERROR_TSK)); + } else if(project.equals(pluginProject)) { + status.setText("Plugin definition in selected pom."); + status.setImage(null); + } else { + status.setText(""); + status.setImage(null); + } + } + + @Override + protected void okPressed() { + pomFile = M2EUtils.getPomFile(pomComposite.fromSelection()); + super.okPressed(); + } + + /* + * Should only be called after dialog has closed with OK return code + */ + public IFile getPomFile() { + return pomFile; + } + + private MavenProject locatePlugin() { + for (MavenProject project : pomComposite.getHierarchy()) { + if (project.getOriginalModel().getBuild() != null) { + for (Plugin plugin : project.getOriginalModel().getBuild().getPlugins()) { + if(plugin.getGroupId().equals(pluginGroupId) && plugin.getArtifactId().equals(pluginArtifactId) + && (plugin.getVersion() == null || pluginVersion.equals(plugin.getVersion()))) { + return project; + } + } + } + } + return null; + } +} diff --git a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/lifecycle/LifecycleMappingProposal.java b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/lifecycle/LifecycleMappingProposal.java index 7ab80136..a07c130c 100644 --- a/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/lifecycle/LifecycleMappingProposal.java +++ b/org.eclipse.m2e.editor.xml/src/main/java/org/eclipse/m2e/editor/xml/internal/lifecycle/LifecycleMappingProposal.java @@ -12,6 +12,8 @@ package org.eclipse.m2e.editor.xml.internal.lifecycle; +import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.performOnDOMDocument; + import java.io.IOException; import org.slf4j.Logger; @@ -26,17 +28,19 @@ import org.eclipse.jface.text.contentassist.ICompletionProposal; import org.eclipse.jface.text.contentassist.ICompletionProposalExtension5; import org.eclipse.jface.text.contentassist.IContextInformation; import org.eclipse.jface.text.quickassist.IQuickAssistInvocationContext; +import org.eclipse.jface.window.Window; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.graphics.Image; import org.eclipse.swt.graphics.Point; +import org.eclipse.swt.widgets.Display; import org.eclipse.ui.IMarkerResolution; +import org.eclipse.ui.internal.Workbench; import org.eclipse.ui.internal.WorkbenchPlugin; import org.eclipse.ui.texteditor.MarkerAnnotation; import org.eclipse.m2e.core.core.IMavenConstants; import org.eclipse.m2e.core.lifecyclemapping.model.PluginExecutionAction; - -import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.*; +import org.eclipse.m2e.core.ui.internal.editing.PomEdits.OperationTuple; import org.eclipse.m2e.editor.xml.internal.Messages; public class LifecycleMappingProposal implements ICompletionProposal, ICompletionProposalExtension5, IMarkerResolution { @@ -61,8 +65,7 @@ public class LifecycleMappingProposal implements ICompletionProposal, ICompletio public void apply(final IDocument doc) { try { - performOnDOMDocument(new OperationTuple(doc, createOperation())); - marker.delete(); + perform(); } catch(IOException e) { log.error("Error generating code in pom.xml", e); //$NON-NLS-1$ } catch(CoreException e) { @@ -70,6 +73,26 @@ public class LifecycleMappingProposal implements ICompletionProposal, ICompletio } } + private void perform() throws IOException, CoreException { + final IFile[] pomFile = new IFile[1]; + Workbench.getInstance().getDisplay().syncExec(new Runnable() { + + public void run() { + LifecycleMappingDialog dialog = new LifecycleMappingDialog(Display.getCurrent().getActiveShell(), + (IFile) marker.getResource(), marker.getAttribute(IMavenConstants.MARKER_ATTR_GROUP_ID, ""), marker + .getAttribute(IMavenConstants.MARKER_ATTR_ARTIFACT_ID, ""), marker.getAttribute( + IMavenConstants.MARKER_ATTR_VERSION, "")); + dialog.setBlockOnOpen(true); + if(dialog.open() == Window.OK) { + pomFile[0] = dialog.getPomFile(); + } + } + }); + if(pomFile[0] != null) { + performOnDOMDocument(new OperationTuple(pomFile[0], createOperation())); + } + } + private LifecycleMappingOperation createOperation() { String pluginGroupId = marker.getAttribute(IMavenConstants.MARKER_ATTR_GROUP_ID, ""); //$NON-NLS-1$ String pluginArtifactId = marker.getAttribute(IMavenConstants.MARKER_ATTR_ARTIFACT_ID, ""); //$NON-NLS-1$ @@ -129,8 +152,7 @@ public class LifecycleMappingProposal implements ICompletionProposal, ICompletio public void run(final IMarker marker) { try { - performOnDOMDocument(new OperationTuple((IFile) marker.getResource(), createOperation())); - marker.delete(); + perform(); } catch(IOException e) { log.error("Error generating code in pom.xml", e); //$NON-NLS-1$ } catch(CoreException e) { diff --git a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/DependenciesComposite.java b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/DependenciesComposite.java index e23bf0d1..8a315f8c 100644 --- a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/DependenciesComposite.java +++ b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/DependenciesComposite.java @@ -46,9 +46,10 @@ import org.eclipse.m2e.core.project.IMavenProjectFacade; import org.eclipse.m2e.core.project.IMavenProjectRegistry; import org.eclipse.m2e.core.ui.internal.dialogs.EditDependencyDialog; import org.eclipse.m2e.core.ui.internal.dialogs.MavenRepositorySearchDialog; -import org.eclipse.m2e.core.ui.internal.editing.PomHelper; import org.eclipse.m2e.core.ui.internal.editing.PomEdits.Operation; import org.eclipse.m2e.core.ui.internal.editing.PomEdits.OperationTuple; +import org.eclipse.m2e.core.ui.internal.editing.PomHelper; +import org.eclipse.m2e.core.ui.internal.util.ParentGatherer; import org.eclipse.m2e.editor.MavenEditorImages; import org.eclipse.m2e.editor.MavenEditorPlugin; import org.eclipse.m2e.editor.dialogs.ManageDependenciesDialog; diff --git a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/dialogs/ManageDependenciesDialog.java b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/dialogs/ManageDependenciesDialog.java index 444b6304..6e19c569 100644 --- a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/dialogs/ManageDependenciesDialog.java +++ b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/dialogs/ManageDependenciesDialog.java @@ -46,6 +46,7 @@ import org.eclipse.jface.viewers.TableViewer; import org.eclipse.jface.viewers.Viewer; import org.eclipse.m2e.core.MavenPlugin; import org.eclipse.m2e.core.project.IMavenProjectFacade; +import org.eclipse.m2e.core.ui.internal.components.PomHierarchyComposite; import org.eclipse.m2e.core.ui.internal.dialogs.AbstractMavenDialog; import org.eclipse.m2e.core.ui.internal.editing.PomEdits.CompoundOperation; import org.eclipse.m2e.core.ui.internal.editing.PomEdits.Operation; @@ -54,7 +55,6 @@ import org.eclipse.m2e.core.ui.internal.editing.PomHelper; import org.eclipse.m2e.editor.MavenEditorPlugin; import org.eclipse.m2e.editor.composites.DependencyLabelProvider; import org.eclipse.m2e.editor.composites.ListEditorContentProvider; -import org.eclipse.m2e.editor.composites.PomHierarchyComposite; import org.eclipse.m2e.editor.pom.ValueProvider; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.SWT; diff --git a/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/Messages.java b/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/Messages.java index 1da68781..cb6380f5 100644 --- a/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/Messages.java +++ b/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/Messages.java @@ -46,6 +46,8 @@ public class Messages extends NLS { public static String ExcludeArtifactRefactoring_unableToLocateProject; + public static String ExcludeWizardPage_dependenciesManagedIn; + public static String ExcludeWizardPage_errorNonWorkspacePom; public static String ExcludeWizardPage_errorSelectPom; diff --git a/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/exclude/ExcludeArtifactRefactoring.java b/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/exclude/ExcludeArtifactRefactoring.java index b451345e..5597843d 100644 --- a/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/exclude/ExcludeArtifactRefactoring.java +++ b/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/exclude/ExcludeArtifactRefactoring.java @@ -10,7 +10,6 @@ *******************************************************************************/ package org.eclipse.m2e.refactoring.exclude; -import java.io.File; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -19,22 +18,17 @@ import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.Set; -import java.util.Stack; import org.apache.maven.model.Dependency; import org.apache.maven.model.Exclusion; import org.apache.maven.project.MavenProject; import org.eclipse.core.resources.IFile; -import org.eclipse.core.resources.IResource; -import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.CoreException; -import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.MultiStatus; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.OperationCanceledException; -import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Status; import org.eclipse.core.runtime.SubMonitor; import org.eclipse.ltk.core.refactoring.Change; @@ -43,6 +37,7 @@ import org.eclipse.ltk.core.refactoring.Refactoring; import org.eclipse.ltk.core.refactoring.RefactoringStatus; import org.eclipse.m2e.core.MavenPlugin; import org.eclipse.m2e.core.embedder.ArtifactKey; +import org.eclipse.m2e.core.internal.M2EUtils; import org.eclipse.m2e.core.project.IMavenProjectFacade; import org.eclipse.m2e.core.ui.internal.editing.AddDependencyOperation; import org.eclipse.m2e.core.ui.internal.editing.AddExclusionOperation; @@ -264,26 +259,8 @@ public class ExcludeArtifactRefactoring extends Refactoring { } private IFile getFile(MavenProject project) throws CoreException { - //XXX copied from XmlUtils.extractProject() - File file = new File(project.getFile().toURI()); - IPath path = Path.fromOSString(file.getAbsolutePath()); - Stack<IFile> stack = new Stack<IFile>(); - //here we need to find the most inner project to the path. - //we do so by shortening the path and remembering all the resources identified. - // at the end we pick the last one from the stack. is there a catch to it? - IFile ifile = ResourcesPlugin.getWorkspace().getRoot().getFileForLocation(path); - if (ifile != null) { - stack.push(ifile); - } - while(path.segmentCount() > 1) { - IResource ires = ResourcesPlugin.getWorkspace().getRoot().findMember(path); - if(ires != null && ires instanceof IFile) { - stack.push((IFile)ires); - } - path = path.removeFirstSegments(1); - } - IFile res = stack.empty() ? null : stack.pop(); - + IFile res = M2EUtils.getPomFile(project); + if(res == null) { throw new CoreException(new Status(IStatus.ERROR, PLUGIN_ID, NLS.bind( Messages.ExcludeArtifactRefactoring_failedToLocatePom, project.toString()))); diff --git a/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/exclude/ExcludeWizardPage.java b/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/exclude/ExcludeWizardPage.java index ab022947..bd2029b9 100644 --- a/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/exclude/ExcludeWizardPage.java +++ b/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/exclude/ExcludeWizardPage.java @@ -11,13 +11,11 @@ package org.eclipse.m2e.refactoring.exclude; import org.apache.maven.project.MavenProject; -import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.ISelectionChangedListener; -import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.ltk.ui.refactoring.UserInputWizardPage; import org.eclipse.m2e.core.project.IMavenProjectFacade; -import org.eclipse.m2e.editor.composites.PomHierarchyComposite; +import org.eclipse.m2e.core.ui.internal.components.PomHierarchyComposite; import org.eclipse.m2e.refactoring.Messages; import org.eclipse.osgi.util.NLS; import org.eclipse.swt.SWT; @@ -128,7 +126,7 @@ public class ExcludeWizardPage extends UserInputWizardPage implements SelectionL private void updateState() { ExcludeArtifactRefactoring refactoring = (ExcludeArtifactRefactoring) getRefactoring(); if (hierarchy.getSelection()) { - MavenProject project = fromSelection(pomHierarchy.getSelection()); + MavenProject project = pomHierarchy.fromSelection(); updateStatusBar(project); refactoring.setExclusionPoint(project); } else { @@ -145,7 +143,7 @@ public class ExcludeWizardPage extends UserInputWizardPage implements SelectionL setStatus(Messages.ExcludeWizardPage_errorNonWorkspacePom); setPageComplete(false); } else if((project = isAboveDependencyManagement(project)) != null) { - setStatus(NLS.bind("Dependencies managed in {0}.", + setStatus(NLS.bind(Messages.ExcludeWizardPage_dependenciesManagedIn, toString(project))); setPageComplete(false); } else { @@ -161,16 +159,6 @@ public class ExcludeWizardPage extends UserInputWizardPage implements SelectionL updateState(); } - private MavenProject fromSelection(ISelection selection) { - if(selection instanceof IStructuredSelection) { - Object obj = ((IStructuredSelection) selection).getFirstElement(); - if(obj instanceof MavenProject) { - return (MavenProject) obj; - } - } - return null; - } - private MavenProject isAboveDependencyManagement(MavenProject project) { for(MavenProject cProject : pomHierarchy.getHierarchy()) { if(project == cProject) { diff --git a/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/messages.properties b/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/messages.properties index bf990e26..729960bc 100644 --- a/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/messages.properties +++ b/org.eclipse.m2e.refactoring/src/org/eclipse/m2e/refactoring/messages.properties @@ -10,6 +10,7 @@ ExcludeArtifactRefactoring_errorCreatingRefactoring=Errors occurred creating ref ExcludeArtifactRefactoring_failedToLocateArtifact=Unable to locate source for dependency {0} in the workspace. ExcludeArtifactRefactoring_failedToLocatePom=Failed to locate pom in workspace for: {0} ExcludeArtifactRefactoring_noTargets=Unable to locate source for dependency. +ExcludeWizardPage_dependenciesManagedIn=Dependencies managed in {0}. ExcludeWizardPage_errorNonWorkspacePom=Changes must occur within the workspace ExcludeWizardPage_errorSelectPom=Select a pom in the workspace. ExcludeWizardPage_location=Select pom to place exclusion |