package com.mobilesorcery.sdk.ui; import java.util.ArrayList; import java.util.List; import org.eclipse.core.commands.AbstractHandler; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IAdaptable; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; public abstract class MoSyncCommandHandler extends AbstractHandler { private static final int ANY = Integer.MIN_VALUE; protected IResource extractFirstResource(ISelection selection) { return extractFirstResource(selection, ANY); } protected IResource extractFirstResource(ISelection selection, int type) { List<IResource> resources = extractResources(selection, type); return resources.isEmpty() ? null : resources.get(0); } protected List<IResource> extractResources(ISelection selection) { return extractResources(selection, ANY); } protected List<IResource> extractResources(ISelection selection, int type) { if (selection instanceof IStructuredSelection) { List elements = ((IStructuredSelection) selection).toList(); return extractResources(elements, type); } else { return new ArrayList<IResource>(); } } private List<IResource> extractResources(List elements, int type) { List<IResource> resources = new ArrayList<IResource>(); for (Object element : elements) { if (element instanceof IAdaptable) { IResource resource = (IResource) ((IAdaptable) element) .getAdapter(IResource.class); if (resource != null && (type == ANY || resource.getType() == type)) { resources.add(resource); } } } return resources; } }