/**
*
*/
package org.eclipse.vjet.eclipse.javatojs.ui.adapters;
import org.eclipse.core.resources.IResource;
import org.eclipse.core.runtime.IAdaptable;
import org.eclipse.core.runtime.IAdapterFactory;
import org.eclipse.dltk.mod.core.IModelElement;
import org.eclipse.vjet.core.codegen.bootstrap.IJs2JavaCodeGenInput;
/**
* 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.
*
*
*
*/
public class Js2JavaAdapterFactory implements IAdapterFactory {
public Js2JavaAdapterFactory() {
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 == IJs2JavaCodeGenInput.class) {
/*
* it is already
*/
if (adaptableObject instanceof IJs2JavaCodeGenInput) {
return adaptableObject;
}
/*
* it is a resource
*/
if (adaptableObject instanceof IResource) {
return createInput((IResource) adaptableObject);
}
/*
* it is a JDT object
*/
if (adaptableObject instanceof IModelElement) {
return createInput(((IModelElement) 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 Js2JavaInput) {
return ((Js2JavaInput)adaptableObject).getResource();
}
}
/*
* not applicable
*/
return null;
}
/**
* Creates a bean for input to the Java2Js code generator.
*
* @param resource
* @return input bean
*/
public IJs2JavaCodeGenInput createInput(IResource resource) {
return new Js2JavaInput(resource);
}
/**
* @return IJava2JsCodeGenInput
* @see org.eclipse.core.runtime.IAdapterFactory#getAdapterList()
*/
@SuppressWarnings("unchecked")
public Class[] getAdapterList() {
return new Class[] { IJs2JavaCodeGenInput.class, IResource.class };
}
}