diff options
author | Matthew Piggott | 2011-03-02 22:29:27 +0000 |
---|---|---|
committer | Pascal Rapicault | 2011-03-03 21:35:21 +0000 |
commit | d72dde2c91da6d04a18455e291adc804b87dbdee (patch) | |
tree | 8be728149105ed3f8d0dfd4de688a2d97bf78e84 /org.eclipse.m2e.editor | |
parent | 98b50bf774feaad18250c77c2f8ab904e048ff2e (diff) | |
download | m2e-core-d72dde2c91da6d04a18455e291adc804b87dbdee.tar.gz m2e-core-d72dde2c91da6d04a18455e291adc804b87dbdee.tar.xz m2e-core-d72dde2c91da6d04a18455e291adc804b87dbdee.zip |
bug 337565 - Exclude Refactoring Issues
Diffstat (limited to 'org.eclipse.m2e.editor')
2 files changed, 255 insertions, 17 deletions
diff --git a/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/PomHierarchyComposite.java b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/PomHierarchyComposite.java new file mode 100644 index 00000000..ef88813e --- /dev/null +++ b/org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/PomHierarchyComposite.java @@ -0,0 +1,233 @@ + +package org.eclipse.m2e.editor.composites; + +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.eclipse.core.runtime.CoreException; +import org.eclipse.core.runtime.IProgressMonitor; +import org.eclipse.core.runtime.NullProgressMonitor; +import org.eclipse.jface.operation.IRunnableContext; +import org.eclipse.jface.operation.IRunnableWithProgress; +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.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; + + +public class PomHierarchyComposite extends Composite implements IInputSelectionProvider { + private static final Logger LOG = LoggerFactory.getLogger(PomHierarchyComposite.class); + + private TreeViewer pomsViewer; + + private List<MavenProject> hierarchy; + + public PomHierarchyComposite(Composite parent, int style) { + super(parent, style); + build(); + } + + private void build() { + setLayout(new FillLayout(SWT.HORIZONTAL)); + pomsViewer = new TreeViewer(this, SWT.NULL); + pomsViewer.setLabelProvider(new DepLabelProvider()); + pomsViewer.setContentProvider(new PomHeirarchyContentProvider()); + } + + public void setEnabled(boolean bool) { + pomsViewer.getTree().setEnabled(bool); + super.setEnabled(bool); + } + + public void computeHeirarchy(final IMavenProjectFacade project, IRunnableContext context) { + try { + if(context != null) { + context.run(false, true, new IRunnableWithProgress() { + public void run(IProgressMonitor monitor) throws InvocationTargetException, InterruptedException { + try { + computeHeirarchy(project, monitor); + } catch(CoreException e) { + throw new InvocationTargetException(e); + } + } + }); + } else { + computeHeirarchy(project, new NullProgressMonitor()); + } + } catch(Exception e) { + LOG.error("An error occurred building pom heirarchy", e); + } + } + + private void computeHeirarchy(IMavenProjectFacade projectFacade, IProgressMonitor monitor) throws CoreException { + LinkedList<MavenProject> hierarchy = new LinkedList<MavenProject>(); + hierarchy.addAll(new ParentGatherer(projectFacade.getMavenProject(), projectFacade).getParentHierarchy(monitor)); + setHierarchy(hierarchy); + } + + public void setHierarchy(LinkedList<MavenProject> hierarchy) { + this.hierarchy = hierarchy; + pomsViewer.setInput(hierarchy); + pomsViewer.expandAll(); + } + + public static class DepLabelProvider extends LabelProvider implements IColorProvider { + /* + * (non-Javadoc) + * + * @see + * org.eclipse.jface.viewers.LabelProvider#getText(java.lang.Object) + */ + @Override + public String getText(Object element) { + MavenProject project = null; + if(element instanceof MavenProject) { + project = (MavenProject) element; + } else if(element instanceof Object[]) { + project = (MavenProject) ((Object[]) element)[0]; + } else { + return ""; //$NON-NLS-1$ + } + StringBuffer buffer = new StringBuffer(); + buffer.append(project.getGroupId() + " : " + project.getArtifactId() + " : " + project.getVersion()); //$NON-NLS-1$ //$NON-NLS-2$ + return buffer.toString(); + } + + public Color getForeground(Object element) { + if(element instanceof MavenProject) { + MavenProject project = (MavenProject) element; + IMavenProjectFacade search = MavenPlugin.getDefault().getMavenProjectManager() + .getMavenProject(project.getGroupId(), project.getArtifactId(), project.getVersion()); + if(search == null) { + // This project is not in the workspace + return Display.getDefault().getSystemColor(SWT.COLOR_DARK_GRAY); + } + } + return null; + } + + public Color getBackground(Object element) { + return null; + } + } + + public static class PomHeirarchyContentProvider implements ITreeContentProvider { + private LinkedList<MavenProject> projects; + + public PomHeirarchyContentProvider() { + } + + public void inputChanged(Viewer viewer, Object oldInput, Object newInput) { + if(newInput instanceof LinkedList) { + this.projects = (LinkedList<MavenProject>) newInput; + } + } + + public void dispose() { + } + + public boolean hasChildren(Object element) { + Object[] children = getChildren(element); + + return children.length != 0; + } + + public Object getParent(Object element) { + if(element instanceof MavenProject) { + MavenProject project = (MavenProject) element; + return project.getParent(); + } + return null; + } + + /* + * Return root element (non-Javadoc) + * + * @see + * org.eclipse.jface.viewers.ITreeContentProvider#getElements(java.lang + * .Object) + */ + public Object[] getElements(Object inputElement) { + + if(inputElement instanceof LinkedList) { + LinkedList<MavenProject> projects = (LinkedList<MavenProject>) inputElement; + if(projects.isEmpty()) { + return new Object[0]; + } + return new Object[] {projects.getLast()}; + } + return new Object[0]; + } + + public Object[] getChildren(Object parentElement) { + if(parentElement instanceof MavenProject) { + /* + * Walk the hierarchy list until we find the parentElement and + * return the previous element, which is the child. + */ + MavenProject parent = (MavenProject) parentElement; + + if(projects.size() == 1) { + // No parent exists, only one element in the tree + return new Object[0]; + } + + if(projects.getFirst().equals(parent)) { + // We are the final child + return new Object[0]; + } + + ListIterator<MavenProject> iter = projects.listIterator(); + while(iter.hasNext()) { + MavenProject next = iter.next(); + if(next.equals(parent)) { + iter.previous(); + MavenProject previous = iter.previous(); + return new Object[] {previous}; + } + } + } + return new Object[0]; + } + } + + public void addSelectionChangedListener(ISelectionChangedListener listener) { + pomsViewer.addSelectionChangedListener(listener); + } + + public Object getInput() { + return pomsViewer.getInput(); + } + + public ISelection getSelection() { + return pomsViewer.getSelection(); + } + + public void removeSelectionChangedListener(ISelectionChangedListener listener) { + pomsViewer.removeSelectionChangedListener(listener); + } + + public void setSelection(ISelection selection) { + pomsViewer.setSelection(selection); + } + + public List<MavenProject> getHierarchy() { + return hierarchy; + } +} 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 2d192f90..e9e3a4b4 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 @@ -8,7 +8,18 @@ package org.eclipse.m2e.editor.dialogs; -import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.*; +import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.ARTIFACT_ID; +import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.DEPENDENCIES; +import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.DEPENDENCY; +import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.DEPENDENCY_MANAGEMENT; +import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.GROUP_ID; +import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.VERSION; +import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.findChild; +import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.findChilds; +import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.getChild; +import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.getTextValue; +import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.performOnDOMDocument; +import static org.eclipse.m2e.core.ui.internal.editing.PomEdits.removeChild; import java.util.ArrayList; import java.util.Iterator; @@ -31,7 +42,6 @@ import org.eclipse.jface.viewers.LabelProvider; import org.eclipse.jface.viewers.SelectionChangedEvent; import org.eclipse.jface.viewers.StructuredSelection; import org.eclipse.jface.viewers.TableViewer; -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; @@ -43,6 +53,7 @@ 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.model.edit.pom.Dependency; import org.eclipse.m2e.model.edit.pom.Model; import org.eclipse.osgi.util.NLS; @@ -60,7 +71,6 @@ import org.eclipse.swt.widgets.Label; import org.eclipse.swt.widgets.Shell; import org.eclipse.swt.widgets.Table; import org.eclipse.swt.widgets.TableColumn; -import org.eclipse.swt.widgets.Tree; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.w3c.dom.Document; @@ -79,12 +89,11 @@ public class ManageDependenciesDialog extends AbstractMavenDialog { private TableViewer dependenciesViewer; - private TreeViewer pomsViewer; - private final Model model; private final LinkedList<MavenProject> projectHierarchy; + private PomHierarchyComposite pomHierarchy; private IStatus status; @@ -145,7 +154,9 @@ public class ManageDependenciesDialog extends AbstractMavenDialog { Label selectPomLabel = new Label(pomComposite, SWT.NONE); selectPomLabel.setText(Messages.ManageDependenciesDialog_selectPOMLabel); - Tree pomTree = new Tree(pomComposite, SWT.BORDER); + pomHierarchy = new PomHierarchyComposite(pomComposite, SWT.BORDER); + pomHierarchy.setHierarchy(getProjectHierarchy()); + // pomsViewer = new TreeViewer(pomComposite, SWT.BORDER); /* * Configure layouts @@ -186,7 +197,8 @@ public class ManageDependenciesDialog extends AbstractMavenDialog { selectPomLabel.setLayoutData(gridData); gridData = new GridData(SWT.FILL, SWT.FILL, true, true); - pomTree.setLayoutData(gridData); + pomHierarchy.setLayoutData(gridData); + //pomsViewer.getTree().setLayoutData(gridData); /* * Set up list/tree viewers @@ -208,16 +220,9 @@ public class ManageDependenciesDialog extends AbstractMavenDialog { dependenciesViewer.setInput(nonManaged); dependenciesViewer.addSelectionChangedListener(new DependenciesViewerSelectionListener()); - pomsViewer = new TreeViewer(pomTree); - - pomsViewer.setLabelProvider(new DepLabelProvider()); - - pomsViewer.setContentProvider(new ContentProvider()); - pomsViewer.setInput(getProjectHierarchy()); - pomsViewer.addSelectionChangedListener(new PomViewerSelectionChangedListener()); - pomsViewer.expandAll(); + pomHierarchy.addSelectionChangedListener(new PomViewerSelectionChangedListener()); if(getProjectHierarchy().size() > 0) { - pomsViewer.setSelection(new StructuredSelection(getProjectHierarchy().getLast())); + pomHierarchy.setSelection(new StructuredSelection(getProjectHierarchy().getLast())); } if(originalSelection != null && originalSelection.size() > 0) { @@ -341,7 +346,7 @@ public class ManageDependenciesDialog extends AbstractMavenDialog { } protected MavenProject getTargetPOM() { - IStructuredSelection selection = (IStructuredSelection) pomsViewer.getSelection(); + IStructuredSelection selection = (IStructuredSelection) pomHierarchy.getSelection(); return (MavenProject) selection.getFirstElement(); } |