summaryrefslogtreecommitdiff
path: root/platform/lang-api/src/com/intellij/openapi/module/ModuleUtil.java
diff options
context:
space:
mode:
Diffstat (limited to 'platform/lang-api/src/com/intellij/openapi/module/ModuleUtil.java')
-rw-r--r--platform/lang-api/src/com/intellij/openapi/module/ModuleUtil.java36
1 files changed, 35 insertions, 1 deletions
diff --git a/platform/lang-api/src/com/intellij/openapi/module/ModuleUtil.java b/platform/lang-api/src/com/intellij/openapi/module/ModuleUtil.java
index a7f7f326cdaf..bf56114a2467 100644
--- a/platform/lang-api/src/com/intellij/openapi/module/ModuleUtil.java
+++ b/platform/lang-api/src/com/intellij/openapi/module/ModuleUtil.java
@@ -1,5 +1,5 @@
/*
- * Copyright 2000-2012 JetBrains s.r.o.
+ * Copyright 2000-2014 JetBrains s.r.o.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -19,9 +19,14 @@
*/
package com.intellij.openapi.module;
+import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.project.Project;
+import com.intellij.openapi.roots.ContentEntry;
+import com.intellij.openapi.roots.ModifiableRootModel;
+import com.intellij.openapi.roots.ModuleRootManager;
import com.intellij.openapi.roots.ProjectRootManager;
import com.intellij.openapi.util.Key;
+import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.util.CachedValueProvider;
import com.intellij.psi.util.CachedValuesManager;
import com.intellij.psi.util.ParameterizedCachedValue;
@@ -103,4 +108,33 @@ public class ModuleUtil extends ModuleUtilCore {
String type = module.getOptionValue(Module.ELEMENT_TYPE);
return ModuleTypeManager.getInstance().findByID(type);
}
+
+ public static void updateExcludedFoldersInWriteAction(final Module module,
+ @NotNull final VirtualFile contentRoot,
+ final Collection<String> urlsToUnExclude,
+ final Collection<String> urlsToExclude) {
+ ApplicationManager.getApplication().runWriteAction(new Runnable() {
+ public void run() {
+ final ModifiableRootModel modifiableModel = ModuleRootManager.getInstance(module).getModifiableModel();
+ try {
+ for (final ContentEntry contentEntry : modifiableModel.getContentEntries()) {
+ if (contentRoot.equals(contentEntry.getFile())) {
+ for (String url : urlsToUnExclude) {
+ contentEntry.removeExcludeFolder(url);
+ }
+ for (String url : urlsToExclude) {
+ contentEntry.addExcludeFolder(url);
+ }
+ break;
+ }
+ }
+ modifiableModel.commit();
+ }
+ catch (Exception e) {
+ modifiableModel.dispose();
+ throw new RuntimeException(e.getMessage(), e);
+ }
+ }
+ });
+ }
}