diff options
author | Matthew Piggott | 2011-04-26 17:34:09 +0000 |
---|---|---|
committer | Matthew Piggott | 2011-04-26 17:34:09 +0000 |
commit | 089e324a1681bb1015be74f1efba42eaed9d6282 (patch) | |
tree | b6e9cc50a36c1ac2c905c0616920099927cdf5fc | |
parent | 99b30b6c3560384479a92db0d9a0363479ebdeae (diff) | |
download | m2e-core-089e324a1681bb1015be74f1efba42eaed9d6282.tar.gz m2e-core-089e324a1681bb1015be74f1efba42eaed9d6282.tar.xz m2e-core-089e324a1681bb1015be74f1efba42eaed9d6282.zip |
UpdateDependenciesDialog - Fix missing projects when another project's path is a prefix
-rw-r--r-- | org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/dialogs/UpdateDepenciesDialog.java | 79 |
1 files changed, 43 insertions, 36 deletions
diff --git a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/dialogs/UpdateDepenciesDialog.java b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/dialogs/UpdateDepenciesDialog.java index d3d50b9e..a8cf410a 100644 --- a/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/dialogs/UpdateDepenciesDialog.java +++ b/org.eclipse.m2e.core.ui/src/org/eclipse/m2e/core/ui/internal/dialogs/UpdateDepenciesDialog.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2010 Sonatype, Inc. + * 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 @@ -18,9 +18,13 @@ import java.util.Collections; import java.util.LinkedList; import java.util.List; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + import org.eclipse.core.resources.IContainer; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.ResourcesPlugin; +import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.Path; import org.eclipse.jface.action.Action; import org.eclipse.jface.action.IMenuListener; @@ -52,43 +56,40 @@ import org.eclipse.ui.PlatformUI; import org.eclipse.ui.ide.IDE; import org.eclipse.m2e.core.MavenPlugin; -import org.eclipse.m2e.core.project.IMavenProjectFacade; +import org.eclipse.m2e.core.internal.IMavenConstants; import org.eclipse.m2e.core.ui.internal.MavenImages; import org.eclipse.m2e.core.ui.internal.Messages; -/** - * UpdateDep - * - * @author matthew - */ public class UpdateDepenciesDialog extends TitleAreaDialog implements IMenuListener { + private static final Logger log = LoggerFactory.getLogger(UpdateDepenciesDialog.class); + + private static final String SEPARATOR = System.getProperty("file.separator"); //$NON-NLS-1$ + private CheckboxTreeViewer codebaseViewer; private Collection<IProject> projects; - private Button offline; - - private Button forceUpdate; + private Button offlineModeBtn; - private IProject[] selectedProjects; + private Button forceUpdateBtn; - private boolean isOffline; + private List<String> projectPaths; - private boolean isForceUpdate; + private final IProject[] initialSelection; - private List<String> projectPaths; + private IProject[] selectedProjects; - private static final String SEPARATOR = System.getProperty("file.separator"); //$NON-NLS-1$ + private boolean offlineMode; - private final IProject[] initialSelection; + private boolean forceUpdate; public UpdateDepenciesDialog(Shell parentShell, IProject[] initialSelection) { super(parentShell); this.initialSelection = initialSelection; - isOffline = MavenPlugin.getMavenConfiguration().isOffline(); - isForceUpdate = false; + offlineMode = MavenPlugin.getMavenConfiguration().isOffline(); + forceUpdate = false; } @Override @@ -140,7 +141,7 @@ public class UpdateDepenciesDialog extends TitleAreaDialog implements IMenuListe for(String path : projectPaths) { if(path.length() != elePath.length() && path.startsWith(elePath)) { if(prevPath == null || !path.startsWith(prevPath)) { - prevPath = path + SEPARATOR; + prevPath = path; children.add(getProject(path)); } } @@ -156,7 +157,6 @@ public class UpdateDepenciesDialog extends TitleAreaDialog implements IMenuListe String elePath = new File(((IProject) element).getLocationURI()).toString() + SEPARATOR; String prevPath = null; for(String path : projectPaths) { - path += SEPARATOR; if(elePath.length() != path.length() && elePath.startsWith(path) && (prevPath == null || prevPath.length() < path.length())) { prevPath = path; @@ -256,15 +256,15 @@ public class UpdateDepenciesDialog extends TitleAreaDialog implements IMenuListe } }); - offline = new Button(container, SWT.CHECK); - offline.setText(Messages.UpdateDepenciesDialog_offline); - offline.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 2, 1)); - offline.setSelection(isOffline); + offlineModeBtn = new Button(container, SWT.CHECK); + offlineModeBtn.setText(Messages.UpdateDepenciesDialog_offline); + offlineModeBtn.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 2, 1)); + offlineModeBtn.setSelection(offlineMode); - forceUpdate = new Button(container, SWT.CHECK); - forceUpdate.setText(Messages.UpdateDepenciesDialog_forceUpdate); - forceUpdate.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 2, 1)); - forceUpdate.setSelection(isForceUpdate); + forceUpdateBtn = new Button(container, SWT.CHECK); + forceUpdateBtn.setText(Messages.UpdateDepenciesDialog_forceUpdate); + forceUpdateBtn.setLayoutData(new GridData(SWT.LEFT, SWT.CENTER, true, false, 2, 1)); + forceUpdateBtn.setSelection(forceUpdate); setTitle(Messages.UpdateDepenciesDialog_title); setMessage(Messages.UpdateDepenciesDialog_dialogMessage); @@ -290,18 +290,25 @@ public class UpdateDepenciesDialog extends TitleAreaDialog implements IMenuListe } selectedProjects = projects; - isOffline = offline.getSelection(); - isForceUpdate = forceUpdate.getSelection(); + offlineMode = offlineModeBtn.getSelection(); + forceUpdate = forceUpdateBtn.getSelection(); super.okPressed(); } @SuppressWarnings("unchecked") private Collection<IProject> getMavenCodebases() { projectPaths = new LinkedList<String>(); - for(IMavenProjectFacade facade : MavenPlugin.getMavenProjectRegistry().getProjects()) { - URI locationURI = facade.getProject().getLocationURI(); - if(locationURI != null) { - projectPaths.add(new File(locationURI).toString()); + + for(IProject project : ResourcesPlugin.getWorkspace().getRoot().getProjects()) { + try { + if(project.hasNature(IMavenConstants.NATURE_ID)) { + URI locationURI = project.getLocationURI(); + if(locationURI != null) { + projectPaths.add(new File(locationURI).toString() + SEPARATOR); + } + } + } catch(CoreException ex) { + log.error(ex.getMessage(), ex); } } Collections.sort(projectPaths); @@ -327,11 +334,11 @@ public class UpdateDepenciesDialog extends TitleAreaDialog implements IMenuListe } public boolean isOffline() { - return isOffline; + return offlineMode; } public boolean isForceUpdate() { - return isForceUpdate; + return forceUpdate; } private IProject getProject(String path) { |