package com.redhat.ceylon.eclipse.core.builder; import static com.redhat.ceylon.eclipse.java2ceylon.Java2CeylonProxies.modelJ2C; import java.util.ArrayList; import java.util.List; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jface.action.IAction; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ui.IWorkbenchWindow; import org.eclipse.ui.IWorkbenchWindowActionDelegate; import com.redhat.ceylon.ide.common.model.BaseCeylonProject; import com.redhat.ceylon.ide.common.model.CeylonProjectConfig; import ceylon.interop.java.CeylonStringIterable; public class EnableCeylonNature implements IWorkbenchWindowActionDelegate { private IProject fProject; public void dispose() {} public void init(IWorkbenchWindow window) {} public void run(IAction action) { modelJ2C().ceylonModel().addProject(fProject); BaseCeylonProject ceylonProject = modelJ2C().ceylonModel().getProject(fProject); CeylonProjectConfig config = ceylonProject.getConfiguration(); List<String> sourceFolders = new ArrayList<>(); for (IFolder sourceFolder : CeylonBuilder.getSourceFolders(fProject)) { if (sourceFolder.isLinked()) { sourceFolders.add(sourceFolder.getLocation().toOSString()); } else { sourceFolders.add(sourceFolder.getProjectRelativePath().toString()); } } config.setProjectSourceDirectories(new CeylonStringIterable(sourceFolders)); config.save(); new CeylonNature().addToProject(fProject); } public void selectionChanged(IAction action, ISelection selection) { if (selection instanceof IStructuredSelection) { IStructuredSelection ss = (IStructuredSelection) selection; Object first = ss.getFirstElement(); if (first instanceof IProject) { fProject = (IProject) first; } else if (first instanceof IJavaProject) { fProject = ((IJavaProject) first).getProject(); } } } }