package com.github.jarlakxen.scala.sbt.util; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.resources.IResourceRuleFactory; import org.eclipse.core.resources.ResourcesPlugin; import org.eclipse.core.runtime.jobs.ISchedulingRule; import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.internal.core.PackageFragmentRoot; import org.eclipse.jface.viewers.ISelection; import org.eclipse.jface.viewers.IStructuredSelection; import org.eclipse.ui.ISelectionService; import org.eclipse.ui.PlatformUI; public class ProjectUtils { public static final IResourceRuleFactory RULE_FACTORY = ResourcesPlugin.getWorkspace().getRuleFactory(); public static ISchedulingRule mutexRuleFor(IProject project) { return RULE_FACTORY.createRule(project); } public static IProject getCurrentSelectedProject() { IProject project = null; ISelectionService selectionService = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getSelectionService(); ISelection selection = selectionService.getSelection(); if (selection instanceof IStructuredSelection) { Object element = ((IStructuredSelection) selection).getFirstElement(); if (element instanceof IResource) { project = ((IResource) element).getProject(); } else if (element instanceof PackageFragmentRoot) { IJavaProject jProject = ((PackageFragmentRoot) element).getJavaProject(); project = jProject.getProject(); } else if (element instanceof IJavaElement) { IJavaProject jProject = ((IJavaElement) element).getJavaProject(); project = jProject.getProject(); } } return project; } }