/******************************************************************************* * Copyright (c) 2005, 2006 IBM Corporation and others. * 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 * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.core.internal.resources.mapping; import org.eclipse.core.resources.*; import org.eclipse.core.resources.mapping.*; import org.eclipse.core.runtime.IProgressMonitor; /** * A simple resource mapping for converting IResource to ResourceMapping. * It uses the resource as the model object and traverses deeply. * * @since 3.1 */ public class SimpleResourceMapping extends ResourceMapping { private final IResource resource; public SimpleResourceMapping(IResource resource) { this.resource = resource; } /* (non-Javadoc) * @see org.eclipse.core.resources.mapping.ResourceMapping#contains(org.eclipse.core.resources.mapping.ResourceMapping) */ public boolean contains(ResourceMapping mapping) { if (mapping.getModelProviderId().equals(this.getModelProviderId())) { Object object = mapping.getModelObject(); if (object instanceof IResource) { IResource other = (IResource) object; return resource.getFullPath().isPrefixOf(other.getFullPath()); } if (object instanceof ShallowContainer) { ShallowContainer sc = (ShallowContainer) object; IResource other = sc.getResource(); return resource.getFullPath().isPrefixOf(other.getFullPath()); } } return false; } /* (non-Javadoc) * Method declared on ResourceMapping. */ public Object getModelObject() { return resource; } public String getModelProviderId() { return ModelProvider.RESOURCE_MODEL_PROVIDER_ID; } /* (non-Javadoc) * Method declared on ResourceMapping. */ public IProject[] getProjects() { if (resource.getType() == IResource.ROOT) return ((IWorkspaceRoot)resource).getProjects(); return new IProject[] {resource.getProject()}; } /* (non-Javadoc) * Method declared on ResourceMapping. */ public ResourceTraversal[] getTraversals(ResourceMappingContext context, IProgressMonitor monitor) { if (resource.getType() == IResource.ROOT) { return new ResourceTraversal[] {new ResourceTraversal(((IWorkspaceRoot)resource).getProjects(), IResource.DEPTH_INFINITE, IResource.NONE)}; } return new ResourceTraversal[] {new ResourceTraversal(new IResource[] {resource}, IResource.DEPTH_INFINITE, IResource.NONE)}; } }