use of org.eclipse.egit.core.project.RepositoryMapping in project egit by eclipse.
the class SelectionPropertyTester method test.
@Override
public boolean test(Object receiver, String property, Object[] args, Object expectedValue) {
Collection<?> collection = (Collection<?>) receiver;
if (collection.isEmpty())
return false;
if ("projectsSingleRepository".equals(property)) {
// $NON-NLS-1$
Repository repository = getRepositoryOfProjects(collection, true);
return testRepositoryProperties(repository, args);
} else if ("projectsWithRepositories".equals(property)) {
// $NON-NLS-1$
Repository repository = getRepositoryOfProjects(collection, false);
return repository != null;
} else if ("selectionSingleRepository".equals(property)) {
// $NON-NLS-1$
return SelectionUtils.getRepository(getStructuredSelection(collection)) != null;
} else if ("resourcesSingleRepository".equals(property)) {
// $NON-NLS-1$
IStructuredSelection selection = getStructuredSelection(collection);
// It may seem like we could just use SelectionUtils.getRepository
// here. The problem: It would also return a repository for a node
// in the repo view. But this property is just for resources.
IResource[] resources = SelectionUtils.getSelectedResources(selection);
Repository repository = getRepositoryOfResources(resources);
return testRepositoryProperties(repository, args);
} else if ("fileOrFolderInRepository".equals(property)) {
// $NON-NLS-1$
if (collection.size() != 1)
return false;
IStructuredSelection selection = getStructuredSelection(collection);
if (selection.size() != 1)
return false;
Object firstElement = selection.getFirstElement();
IResource resource = AdapterUtils.adaptToAnyResource(firstElement);
if ((resource != null) && (resource instanceof IFile || resource instanceof IFolder)) {
RepositoryMapping m = RepositoryMapping.getMapping(resource);
if (m != null) {
if ((resource instanceof IFolder) && resource.equals(m.getContainer())) {
return false;
} else {
return testRepositoryProperties(m.getRepository(), args);
}
}
}
} else if ("resourcesAllInRepository".equals(property)) {
// $NON-NLS-1$
IStructuredSelection selection = getStructuredSelection(collection);
IResource[] resources = SelectionUtils.getSelectedResources(selection);
Collection<Repository> repositories = getRepositories(resources);
if (repositories.isEmpty()) {
return false;
}
if (args != null && args.length > 0) {
for (Repository repository : repositories) {
if (!testRepositoryProperties(repository, args)) {
return false;
}
}
}
return true;
}
return false;
}
use of org.eclipse.egit.core.project.RepositoryMapping in project egit by eclipse.
the class SelectionPropertyTester method getRepositoryOfProjects.
/**
* @param collection
* the selected elements
* @param single
* <code>true</code> if only a single repository is allowed
* @return the repository if any was found, <code>null</code> otherwise
*/
private static Repository getRepositoryOfProjects(Collection<?> collection, boolean single) {
Repository repo = null;
for (Object element : collection) {
IContainer container = AdapterUtils.adapt(element, IProject.class);
RepositoryMapping mapping = null;
if (container != null) {
mapping = RepositoryMapping.getMapping(container);
} else {
container = AdapterUtils.adapt(element, IContainer.class);
if (container != null) {
mapping = RepositoryMapping.getMapping(container);
}
}
if (container != null && mapping != null && container.equals(mapping.getContainer())) {
Repository r = mapping.getRepository();
if (single && r != null && repo != null && r != repo) {
return null;
} else if (r != null) {
repo = r;
}
} else {
IWorkingSet workingSet = AdapterUtils.adapt(element, IWorkingSet.class);
if (workingSet != null) {
for (IAdaptable adaptable : workingSet.getElements()) {
Repository r = getRepositoryOfProject(adaptable);
if (single && r != null && repo != null && r != repo) {
return null;
} else if (r != null) {
repo = r;
}
}
}
}
}
return repo;
}
Aggregations