Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthew Piggott2011-03-02 22:29:27 +0000
committerPascal Rapicault2011-03-03 21:35:21 +0000
commitd72dde2c91da6d04a18455e291adc804b87dbdee (patch)
tree8be728149105ed3f8d0dfd4de688a2d97bf78e84 /org.eclipse.m2e.editor
parent98b50bf774feaad18250c77c2f8ab904e048ff2e (diff)
downloadm2e-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')
-rw-r--r--org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/composites/PomHierarchyComposite.java233
-rw-r--r--org.eclipse.m2e.editor/src/org/eclipse/m2e/editor/dialogs/ManageDependenciesDialog.java39
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();
}

Back to the top