01: /*******************************************************************************
02: * Copyright (c) 2005, 2006 IBM Corporation and others.
03: * All rights reserved. This program and the accompanying materials
04: * are made available under the terms of the Eclipse Public License v1.0
05: * which accompanies this distribution, and is available at
06: * http://www.eclipse.org/legal/epl-v10.html
07: *
08: * Contributors:
09: * IBM Corporation - initial API and implementation
10: *******************************************************************************/package org.eclipse.jdt.internal.ui.model;
11:
12: import org.eclipse.core.runtime.CoreException;
13: import org.eclipse.core.runtime.IAdaptable;
14: import org.eclipse.core.runtime.IProgressMonitor;
15: import org.eclipse.core.runtime.Platform;
16:
17: import org.eclipse.core.resources.IResource;
18: import org.eclipse.core.resources.mapping.ModelProvider;
19: import org.eclipse.core.resources.mapping.ResourceMapping;
20: import org.eclipse.core.resources.mapping.ResourceMappingContext;
21:
22: import org.eclipse.jdt.core.IJavaElement;
23: import org.eclipse.jdt.core.JavaCore;
24:
25: import org.eclipse.jdt.internal.corext.util.JavaElementResourceMapping;
26:
27: /**
28: * Java-aware model provider.
29: *
30: * @since 3.2
31: */
32: public final class JavaModelProvider extends ModelProvider {
33:
34: /** The model provider id */
35: public static final String JAVA_MODEL_PROVIDER_ID = "org.eclipse.jdt.ui.modelProvider"; //$NON-NLS-1$
36:
37: /**
38: * Returns the resource associated with the corresponding model element.
39: *
40: * @param element
41: * the model element
42: * @return the associated resource, or <code>null</code>
43: */
44: public static IResource getResource(final Object element) {
45: IResource resource = null;
46: if (element instanceof IJavaElement) {
47: resource = ((IJavaElement) element).getResource();
48: } else if (element instanceof IResource) {
49: resource = (IResource) element;
50: } else if (element instanceof IAdaptable) {
51: final IAdaptable adaptable = (IAdaptable) element;
52: final Object adapted = adaptable
53: .getAdapter(IResource.class);
54: if (adapted instanceof IResource)
55: resource = (IResource) adapted;
56: } else {
57: final Object adapted = Platform.getAdapterManager()
58: .getAdapter(element, IResource.class);
59: if (adapted instanceof IResource)
60: resource = (IResource) adapted;
61: }
62: return resource;
63: }
64:
65: /**
66: * Creates a new java model provider.
67: */
68: public JavaModelProvider() {
69: // Used by the runtime
70: }
71:
72: /**
73: * {@inheritDoc}
74: */
75: public ResourceMapping[] getMappings(final IResource resource,
76: final ResourceMappingContext context,
77: final IProgressMonitor monitor) throws CoreException {
78: final IJavaElement element = JavaCore.create(resource);
79: if (element != null)
80: return new ResourceMapping[] { JavaElementResourceMapping
81: .create(element) };
82: final Object adapted = resource
83: .getAdapter(ResourceMapping.class);
84: if (adapted instanceof ResourceMapping)
85: return new ResourceMapping[] { ((ResourceMapping) adapted) };
86: return new ResourceMapping[] { new JavaResourceMapping(resource) };
87: }
88: }
|