use of com.intellij.openapi.module.ModifiableModuleModel in project android by JetBrains.
the class ModuleDisposer method disposeModulesAndMarkImlFilesForDeletion.
public void disposeModulesAndMarkImlFilesForDeletion(@NotNull Collection<Module> modules, @NotNull Project project, @NotNull IdeModifiableModelsProvider ideModelsProvider) {
if (!modules.isEmpty()) {
ModifiableModuleModel moduleModel = ideModelsProvider.getModifiableModuleModel();
List<File> imlFilesToRemove = new ArrayList<>();
for (Module toDispose : modules) {
File imlFilePath = new File(toSystemDependentName(toDispose.getModuleFilePath()));
imlFilesToRemove.add(imlFilePath);
moduleModel.disposeModule(toDispose);
}
DisposedModules.getInstance(project).markImlFilesForDeletion(imlFilesToRemove);
}
}
use of com.intellij.openapi.module.ModifiableModuleModel in project intellij-plugins by JetBrains.
the class BndProjectImporter method addEntry.
private void addEntry(ModifiableModuleModel moduleModel, LibraryTable.ModifiableModel libraryModel, ModifiableRootModel rootModel, Container dependency, DependencyScope scope) throws IllegalArgumentException {
File file = dependency.getFile();
String bsn = dependency.getBundleSymbolicName();
String version = dependency.getVersion();
String path = file.getPath();
if (path.contains(": ")) {
throw new IllegalArgumentException("Cannot resolve " + bsn + ":" + version + ": " + path);
}
if (JDK_DEPENDENCY.equals(bsn)) {
String name = BND_LIB_PREFIX + bsn + ":" + version;
if (FileUtil.isAncestor(myWorkspace.getBase(), file, true)) {
name += "-" + myProject.getName();
}
ProjectJdkTable jdkTable = ProjectJdkTable.getInstance();
Sdk jdk = jdkTable.findJdk(name);
if (jdk == null) {
jdk = jdkTable.createSdk(name, JavaSdk.getInstance());
SdkModificator jdkModel = jdk.getSdkModificator();
jdkModel.setHomePath(file.getParent());
jdkModel.setVersionString(version);
VirtualFile root = VirtualFileManager.getInstance().findFileByUrl(url(file));
assert root != null : file + " " + file.exists();
jdkModel.addRoot(root, OrderRootType.CLASSES);
VirtualFile srcRoot = VirtualFileManager.getInstance().findFileByUrl(url(file) + SRC_ROOT);
if (srcRoot != null)
jdkModel.addRoot(srcRoot, OrderRootType.SOURCES);
jdkModel.commitChanges();
jdkTable.addJdk(jdk);
}
rootModel.setSdk(jdk);
return;
}
ExportableOrderEntry entry;
switch(dependency.getType()) {
case PROJECT:
{
String name = dependency.getProject().getName();
Module module = moduleModel.findModuleByName(name);
if (module == null) {
throw new IllegalArgumentException("Unknown module '" + name + "'");
}
entry = (ModuleOrderEntry) ContainerUtil.find(rootModel.getOrderEntries(), e -> e instanceof ModuleOrderEntry && ((ModuleOrderEntry) e).getModule() == module);
if (entry == null) {
entry = rootModel.addModuleOrderEntry(module);
}
break;
}
case REPO:
{
String name = BND_LIB_PREFIX + bsn + ":" + version;
Library library = libraryModel.getLibraryByName(name);
if (library == null) {
library = libraryModel.createLibrary(name);
}
Library.ModifiableModel model = library.getModifiableModel();
for (String url : model.getUrls(OrderRootType.CLASSES)) model.removeRoot(url, OrderRootType.CLASSES);
for (String url : model.getUrls(OrderRootType.SOURCES)) model.removeRoot(url, OrderRootType.SOURCES);
model.addRoot(url(file), OrderRootType.CLASSES);
String srcRoot = mySourcesMap.get(path);
if (srcRoot != null) {
model.addRoot(url(file) + srcRoot, OrderRootType.SOURCES);
}
model.commit();
entry = rootModel.addLibraryEntry(library);
break;
}
case EXTERNAL:
{
Library library = rootModel.getModuleLibraryTable().createLibrary(file.getName());
Library.ModifiableModel model = library.getModifiableModel();
model.addRoot(url(file), OrderRootType.CLASSES);
String srcRoot = mySourcesMap.get(path);
if (srcRoot != null) {
model.addRoot(url(file) + srcRoot, OrderRootType.SOURCES);
}
model.commit();
entry = rootModel.findLibraryOrderEntry(library);
assert entry != null : library;
break;
}
default:
throw new IllegalArgumentException("Unknown dependency '" + dependency + "' of type " + dependency.getType());
}
entry.setScope(scope);
}
use of com.intellij.openapi.module.ModifiableModuleModel in project intellij-plugins by JetBrains.
the class BndProjectImporter method createProjectStructure.
private void createProjectStructure() {
if (myProject.isDisposed()) {
return;
}
ApplicationManager.getApplication().runWriteAction(() -> {
LanguageLevel projectLevel = LanguageLevelProjectExtension.getInstance(myProject).getLanguageLevel();
Map<Project, ModifiableRootModel> rootModels = ContainerUtil.newHashMap();
ModifiableModuleModel moduleModel = ModuleManager.getInstance(myProject).getModifiableModel();
LibraryTable.ModifiableModel libraryModel = ProjectLibraryTable.getInstance(myProject).getModifiableModel();
try {
for (Project project : myProjects) {
try {
rootModels.put(project, createModule(moduleModel, project, projectLevel));
} catch (Exception e) {
// should not happen, since project.prepare() is already called
LOG.error(e);
}
}
for (Project project : myProjects) {
try {
setDependencies(moduleModel, libraryModel, rootModels.get(project), project);
} catch (Exception e) {
// should not happen, since project.prepare() is already called
LOG.error(e);
}
}
} finally {
libraryModel.commit();
ModifiableModelCommitter.multiCommit(rootModels.values(), moduleModel);
}
});
}
use of com.intellij.openapi.module.ModifiableModuleModel in project intellij-plugins by StepicOrg.
the class ProjectFilesUtils method getOrCreateSrcDirectory.
@Nullable
public static VirtualFile getOrCreateSrcDirectory(@NotNull Project project, @NotNull StepNode stepNode, boolean refresh, @Nullable ModifiableModuleModel model) {
VirtualFile baseDir = project.getBaseDir();
String srcPath = stepNode.getPath() + "/" + EduNames.SRC;
VirtualFile srcDirectory = baseDir.findFileByRelativePath(srcPath);
if (srcDirectory == null && !stepNode.getWasDeleted()) {
srcDirectory = getOrCreateDirectory(baseDir, srcPath);
if (srcDirectory != null && PluginUtils.isCurrent(IDEA)) {
boolean modelOwner = model == null;
if (modelOwner) {
model = ModuleManager.getInstance(project).getModifiableModel();
}
ModifiableModuleModel finalModel = model;
Application application = ApplicationManager.getApplication();
application.invokeAndWait(() -> application.runWriteAction(() -> {
ModuleUtils.createStepModule(project, stepNode, finalModel);
if (modelOwner) {
finalModel.commit();
}
}));
if (refresh) {
VirtualFileManager.getInstance().syncRefresh();
}
}
}
return srcDirectory;
}
Aggregations