package fr.inria.diverse.k3.ui.tools.classpath; import java.util.ArrayList; import org.eclipse.core.resources.IFolder; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.Path; import org.eclipse.jdt.core.IClasspathEntry; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.IPackageFragmentRoot; import org.eclipse.jdt.core.JavaCore; import fr.inria.diverse.k3.ui.Activator; public class ManageClasspathStandAlone extends ManageClasspath { String additionalLibFolderName = null; /** * * @param additionalLibFolderName name of the folder containing jars for standalone mode, set to null if no folder should be added */ public ManageClasspathStandAlone(String additionalLibFolderName) { super(); this.additionalLibFolderName = additionalLibFolderName; } @Override public void setClasspath (IProject project, IProgressMonitor monitor) { try { project.refreshLocal(IResource.DEPTH_INFINITE, monitor); IJavaProject javaProject = (IJavaProject)project.getNature(JavaCore.NATURE_ID); IFolder sourceFolder = project.getFolder("src"); try { sourceFolder.create(true, true, monitor); } catch (Exception ex) {} ArrayList<IClasspathEntry> newClassPathList = new ArrayList<IClasspathEntry>(); IPackageFragmentRoot root = javaProject.getPackageFragmentRoot(sourceFolder); newClassPathList.add(JavaCore.newSourceEntry(root.getPath())); newClassPathList.add(JavaCore.newContainerEntry(new Path("org.eclipse.jdt.launching.JRE_CONTAINER"))); // add the jar that are present in the defined lib folder if(additionalLibFolderName != null){ for(IResource res : project.getFolder(additionalLibFolderName).members()){ if(res.getFileExtension().equals("jar")) newClassPathList.add(JavaCore.newLibraryEntry(new Path(res.getLocation().toString()), null, null)); } } newClassPathList.toArray(new IClasspathEntry[newClassPathList.size()]); javaProject.setRawClasspath(newClassPathList.toArray(new IClasspathEntry[newClassPathList.size()]), monitor); } catch (Exception e) { Activator.logErrorMessage(e.getMessage(), e); } } }