Make reset Eclipse 3.2 compatible
[egit.git] / org.spearce.egit.ui / src / org / spearce / egit / ui / internal / actions / RepositoryAction.java
blobbf8c6eaeef58bb3e1c1a4952ee58a6a6616877cf
1 package org.spearce.egit.ui.internal.actions;
3 import java.util.ArrayList;
5 import org.eclipse.core.resources.IProject;
6 import org.eclipse.core.resources.IResource;
7 import org.eclipse.jface.dialogs.MessageDialog;
8 import org.eclipse.team.internal.ui.actions.TeamAction;
9 import org.spearce.egit.core.project.RepositoryMapping;
10 import org.spearce.jgit.lib.Repository;
12 public abstract class RepositoryAction extends TeamAction {
13 /**
14 * @return repository for current project, or null
16 protected Repository getRepository() {
17 IResource[] selectedResources = getSelectedResources();
19 ArrayList<IProject> projects = new ArrayList<IProject>();
21 for (IResource resource : selectedResources) {
22 IProject project = resource.getProject();
23 if (!projects.contains(project))
24 projects.add(project);
27 RepositoryMapping mapping = null;
28 for (IProject project : projects) {
29 RepositoryMapping repositoryMapping = RepositoryMapping.getMapping(project);
30 if (mapping == null)
31 mapping = repositoryMapping;
32 else if (mapping.getRepository() != repositoryMapping.getRepository()) {
33 MessageDialog.openError(getShell(), "Multiple Repositories Selection", "Cannot perform reset on multiple repositories simultaneously.\n\nPlease select items from only one repository.");
34 return null;
37 if (mapping == null) {
38 MessageDialog.openError(getShell(), "Cannot Find Repository", "Could not find a repository associated with this project");
39 return null;
42 final Repository repository = mapping.getRepository();
43 return repository;