protected IJavaProject[] getJavaProjects() throws JavaModelException {
IWorkingSet[] workingSets = PlatformUI.getWorkbench().getWorkingSetManager().getWorkingSets();
if(workingSets == null) return JavaCore.create(ResourcesPlugin.getWorkspace().getRoot()).getJavaProjects();
List result = new ArrayList();
for (int i = 0; i < workingSets.length; i++) {
IWorkingSet workingSet = workingSets[i];
if(workingSet.isVisible() == false) continue;
IAdaptable[] adaptables = workingSet.getElements();
for (int j = 0; j < adaptables.length; j++) {
IAdaptable adaptable = adaptables[j];
IJavaProject javaProject = (IJavaProject) adaptable.getAdapter(IJavaProject.class);
if(javaProject != null) result.add(javaProject);
}