public static void recurseCreate(IContainer container, IProgressMonitor monitor) throws CoreException {
SubMonitor progress = SubMonitor.convert(monitor, 2);
if (container == null || container.exists())
return;
recurseCreate(container.getParent(), progress.newChild(1, SubMonitor.SUPPRESS_NONE));
if (container instanceof IFolder)
((IFolder) container).create(false, true, progress.newChild(1, SubMonitor.SUPPRESS_NONE));
else
throw new CoreException(new Status(IStatus.ERROR, BundleUtils.getBundleSymbolicName(FileUtils.class), 0, "Cannot create new projects or workspace roots automatically.", null));