public void unregisterAll(String path, boolean under, boolean unregisterSources) { Url url = toUrl(path); for (ContentEntry eachEntry : myRootModel.getContentEntries()) { if (unregisterSources) { for (SourceFolder eachFolder : eachEntry.getSourceFolders()) { String ancestor = under ? url.getUrl() : eachFolder.getUrl(); String child = under ? eachFolder.getUrl() : url.getUrl(); if (isEqualOrAncestor(ancestor, child)) { eachEntry.removeSourceFolder(eachFolder); } } } for (ExcludeFolder eachFolder : eachEntry.getExcludeFolders()) { String ancestor = under ? url.getUrl() : eachFolder.getUrl(); String child = under ? eachFolder.getUrl() : url.getUrl(); if (isEqualOrAncestor(ancestor, child)) { if (eachFolder.isSynthetic()) { getCompilerExtension().setExcludeOutput(false); } else { eachEntry.removeExcludeFolder(eachFolder); } } } } }
public boolean isAlreadyExcluded(File f) { String url = toUrl(f.getPath()).getUrl(); for (ContentEntry eachEntry : myRootModel.getContentEntries()) { for (ExcludeFolder eachFolder : eachEntry.getExcludeFolders()) { if (isEqualOrAncestor(eachFolder.getUrl(), url)) return true; } } return false; }
private static void unexcludeRootIfNeccessary( @NotNull VirtualFile root, @NotNull ModuleRootManager manager) { Set<VirtualFile> excludedRoots = new HashSet<VirtualFile>(Arrays.asList(manager.getExcludeRoots())); VirtualFile excludedRoot = root; while (excludedRoot != null && !excludedRoots.contains(excludedRoot)) { excludedRoot = excludedRoot.getParent(); } if (excludedRoot == null) { return; } Set<VirtualFile> rootsToExclude = new HashSet<VirtualFile>(); collectChildrenRecursively(excludedRoot, root, rootsToExclude); final ModifiableRootModel model = manager.getModifiableModel(); ContentEntry contentEntry = findContentEntryForRoot(model, excludedRoot); if (contentEntry != null) { ExcludeFolder excludedFolder = null; for (ExcludeFolder folder : contentEntry.getExcludeFolders()) { if (folder.getFile() == excludedRoot) { excludedFolder = folder; break; } } if (excludedFolder != null) { contentEntry.removeExcludeFolder(excludedFolder); } for (VirtualFile rootToExclude : rootsToExclude) { if (!excludedRoots.contains(rootToExclude)) { contentEntry.addExcludeFolder(rootToExclude); } } } ApplicationManager.getApplication() .runWriteAction( new Runnable() { @Override public void run() { model.commit(); } }); }
public boolean hasCollision(String sourceRootPath) { Url url = toUrl(sourceRootPath); for (ContentEntry eachEntry : myRootModel.getContentEntries()) { for (SourceFolder eachFolder : eachEntry.getSourceFolders()) { String ancestor = url.getUrl(); String child = eachFolder.getUrl(); if (isEqualOrAncestor(ancestor, child) || isEqualOrAncestor(child, ancestor)) { return true; } } for (ExcludeFolder eachFolder : eachEntry.getExcludeFolders()) { String ancestor = url.getUrl(); String child = eachFolder.getUrl(); if (isEqualOrAncestor(ancestor, child) || isEqualOrAncestor(child, ancestor)) { return true; } } } return false; }