/**
*
*/
package org.eclipse.vjet.eclipse.javatojs.ui.adapters;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IAdapterFactory;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.vjet.core.codegen.bootstrap.IJava2JsCodeGenInput;
/**
* The adapter factory adapts objects in the package explorer view into input
* beans for the Java2Js. It provides adaptation from IResource to IJava2JsCodeGenInput
* and vice versa.
*
*
* @author Ricker
*
*/
public class Java2JsAdapterFactory implements IAdapterFactory {
public Java2JsAdapterFactory() {
System.out.println("constructed adapter");
}
/*
* (non-Javadoc)
*
* @see org.eclipse.core.runtime.IAdapterFactory#getAdapter(java.lang.Object,
* java.lang.Class)
*/
@SuppressWarnings("unchecked")
public Object getAdapter(Object adaptableObject, Class adapterType) {
if (adapterType == IJava2JsCodeGenInput.class) {
/*
* it is already
*/
if (adaptableObject instanceof IJava2JsCodeGenInput) {
return adaptableObject;
}
/*
* it is a resource
*/
if (adaptableObject instanceof IResource) {
return createInput((IResource) adaptableObject);
}
/*
* it is a JDT object
*/
if (adaptableObject instanceof IJavaElement) {
return createInput(((IJavaElement) adaptableObject)
.getResource());
}
/*
* it adapts to a resource
*/
IResource resource = (IResource) ((IAdaptable) adaptableObject)
.getAdapter(IResource.class);
if (resource != null ) {
return createInput((IResource) adaptableObject);
}
}
if (adapterType == IResource.class) {
if (adaptableObject instanceof Java2JsInput) {
return ((Java2JsInput)adaptableObject).getResource();
}
}
/*
* not applicable
*/
return null;
}
/**
* Creates a bean for input to the Java2Js code generator.
*
* @param resource
* @return input bean
*/
public IJava2JsCodeGenInput createInput(IResource resource) {
return new Java2JsInput(resource);
}
/**
* @return IJava2JsCodeGenInput
* @see org.eclipse.core.runtime.IAdapterFactory#getAdapterList()
*/
@SuppressWarnings("unchecked")
public Class[] getAdapterList() {
return new Class[] { IJava2JsCodeGenInput.class, IResource.class };
}
/**
* Check if it is a Java file.
* @deprecated
* @param resource
* @return
*/
public static boolean isJavaFile(IResource resource) {
if (resource != null) {
if (resource instanceof IFile) {
if (resource.getName().endsWith(".java")) {
return true;
}
}
// if (resource.getAdapter(IJavaElement.class) != null) {
// return true;
// }
}
return false;
}
}