package com.redhat.ceylon.eclipse.core.model;
import java.util.List;
import org.eclipse.core.resources.IFile;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.resources.IResource;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.jdt.core.IPackageFragmentRoot;
import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.ITypeRoot;
import com.redhat.ceylon.compiler.java.runtime.model.TypeDescriptor;
import com.redhat.ceylon.compiler.typechecker.TypeChecker;
import com.redhat.ceylon.compiler.typechecker.context.Context;
import com.redhat.ceylon.eclipse.java2ceylon.ModelJ2C;
import com.redhat.ceylon.ide.common.model.BaseIdeModule;
import com.redhat.ceylon.ide.common.model.CeylonBinaryUnit;
import com.redhat.ceylon.ide.common.model.CeylonIdeConfig;
import com.redhat.ceylon.ide.common.model.CeylonProject;
import com.redhat.ceylon.ide.common.model.CeylonProjectConfig;
import com.redhat.ceylon.ide.common.model.CeylonProjects;
import com.redhat.ceylon.ide.common.model.CrossProjectBinaryUnit;
import com.redhat.ceylon.ide.common.model.IdeModelLoader;
import com.redhat.ceylon.ide.common.model.IdeModuleManager;
import com.redhat.ceylon.ide.common.model.IdeModuleSourceMapper;
import com.redhat.ceylon.ide.common.model.JavaClassFile;
import com.redhat.ceylon.ide.common.model.JavaCompilationUnit;
import com.redhat.ceylon.model.loader.model.LazyPackage;
import ceylon.interop.java.JavaList;
public class modelJ2C implements ModelJ2C {
@Override
public CeylonProjects<IProject, IResource,IFolder,IFile> ceylonModel() {
return ceylonModel_.get_();
}
@Override
public CeylonProjectConfig ceylonConfig(IProject project) {
CeylonProject<IProject,IResource,IFolder,IFile> ceylonProject = ceylonModel_.get_().getProject(project);
if (ceylonProject != null) {
return ceylonProject.getConfiguration();
}
return null;
}
@Override
public CeylonIdeConfig ideConfig(IProject project) {
CeylonProject<IProject,IResource,IFolder,IFile> ceylonProject = ceylonModel_.get_().getProject(project);
if (ceylonProject != null) {
return ceylonProject.getIdeConfiguration();
}
return null;
}
@Override
public List<IPackageFragmentRoot> getModulePackageFragmentRoots(BaseIdeModule module) {
return new JavaList<IPackageFragmentRoot>(TypeDescriptor.klass(IPackageFragmentRoot.class),((JDTModule) module).getPackageFragmentRoots());
}
@Override
public IdeModuleManager<IProject,IResource,IFolder,IFile> newModuleManager(Context context, CeylonProject<IProject,IResource,IFolder,IFile> ceylonProject) {
return new JDTModuleManager(context, ceylonProject);
}
@Override
public IdeModuleSourceMapper<IProject,IResource,IFolder,IFile> newModuleSourceMapper(Context context, IdeModuleManager<IProject,IResource,IFolder,IFile> moduleManager) {
return new JDTModuleSourceMapper(context, moduleManager);
}
@Override
public JavaClassFile<IProject, IFolder, IFile, ITypeRoot, IJavaElement> newJavaClassFile(ITypeRoot typeRoot,
String relativePath, String fileName, String fullPath, LazyPackage pkg) {
return new EclipseJavaClassFile(typeRoot, fileName, relativePath, fullPath, pkg);
}
@Override
public CeylonBinaryUnit<IProject, ITypeRoot, IJavaElement> newCeylonBinaryUnit(
ITypeRoot typeRoot, String relativePath, String fileName,
String fullPath, LazyPackage pkg) {
return new EclipseCeylonBinaryUnit(typeRoot, fileName, relativePath, fullPath, pkg);
}
@Override
public CrossProjectBinaryUnit<IProject, IResource, IFolder, IFile, ITypeRoot, IJavaElement> newCrossProjectBinaryUnit(
ITypeRoot typeRoot, String relativePath, String fileName,
String fullPath, LazyPackage pkg) {
return new EclipseCrossProjectBinaryUnit(typeRoot, fileName, relativePath, fullPath, pkg);
}
@Override
public JavaCompilationUnit<IProject, IFolder, IFile, ITypeRoot, IJavaElement> newJavaCompilationUnit(
ITypeRoot typeRoot, String relativePath, String fileName,
String fullPath, LazyPackage pkg) {
return new EclipseJavaCompilationUnit(typeRoot, fileName, relativePath, fullPath, pkg);
}
@Override
public LookupEnvironmentUtilities.Provider getLookupEnvironmentProvider(IType type) {
return typeModelLoader_.typeModelLoader(type);
}
@Override
public IdeModelLoader<IProject, IResource, IFolder, IFile, ITypeRoot, IType> javaProjectModelLoader(IJavaProject javaProject) {
return javaProjectModelLoader_.javaProjectModelLoader(javaProject);
}
@Override
public void setTypeCheckerOnCeylonProject(CeylonProject<IProject, IResource, IFolder, IFile> ceylonProject, TypeChecker typechecker) {
((EclipseCeylonProject) ceylonProject).setTypechecker(typechecker);
}
}