private void appendChosenAnnotationsRoot( @NotNull final OrderEntry entry, @NotNull final VirtualFile vFile) { if (entry instanceof LibraryOrderEntry) { Library library = ((LibraryOrderEntry) entry).getLibrary(); LOG.assertTrue(library != null); final ModifiableRootModel rootModel = ModuleRootManager.getInstance(entry.getOwnerModule()).getModifiableModel(); final Library.ModifiableModel model = library.getModifiableModel(); model.addRoot(vFile, AnnotationOrderRootType.getInstance()); model.commit(); rootModel.commit(); } else if (entry instanceof ModuleSourceOrderEntry) { final ModifiableRootModel model = ModuleRootManager.getInstance(entry.getOwnerModule()).getModifiableModel(); final JavaModuleExternalPaths extension = model.getModuleExtension(JavaModuleExternalPaths.class); extension.setExternalAnnotationUrls( ArrayUtil.mergeArrays(extension.getExternalAnnotationsUrls(), vFile.getUrl())); model.commit(); } else if (entry instanceof JdkOrderEntry) { final SdkModificator sdkModificator = ((JdkOrderEntry) entry).getJdk().getSdkModificator(); sdkModificator.addRoot(vFile, AnnotationOrderRootType.getInstance()); sdkModificator.commitChanges(); } myExternalAnnotations.clear(); }
public boolean tryToSetUpGroovyFacetOnTheFly(final Module module) { final Project project = module.getProject(); final Library[] libraries = getAllSDKLibraries(project); if (libraries.length > 0) { final Library library = libraries[0]; int result = Messages.showOkCancelDialog( GroovyBundle.message( "groovy.like.library.found.text", module.getName(), library.getName(), getSDKLibVersion(library)), GroovyBundle.message("groovy.like.library.found"), JetgroovyIcons.Groovy.Groovy_32x32); if (result == Messages.OK) { AccessToken accessToken = WriteAction.start(); try { ModifiableRootModel model = ModuleRootManager.getInstance(module).getModifiableModel(); LibraryOrderEntry entry = model.addLibraryEntry(libraries[0]); LibrariesUtil.placeEntryToCorrectPlace(model, entry); model.commit(); return true; } finally { accessToken.finish(); } } } return false; }
protected void setupRootModel( final String testDir, final VirtualFile[] sourceDir, final String sdkName) { VirtualFile projectDir = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(new File(testDir)); assertNotNull("could not find project dir " + testDir, projectDir); sourceDir[0] = projectDir.findChild("src"); if (sourceDir[0] == null) { sourceDir[0] = projectDir; } final ModuleRootManager rootManager = ModuleRootManager.getInstance(myModule); final ModifiableRootModel rootModel = rootManager.getModifiableModel(); rootModel.clear(); // configure source and output path final ContentEntry contentEntry = rootModel.addContentEntry(projectDir); contentEntry.addSourceFolder(sourceDir[0], false); ext_src = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(new File(testDir + "/ext_src")); if (ext_src != null) { contentEntry.addSourceFolder(ext_src, false); } // IMPORTANT! The jdk must be obtained in a way it is obtained in the normal program! // ProjectJdkEx jdk = ProjectJdkTable.getInstance().getInternalJdk(); rootModel.setSdk(getTestProjectSdk()); rootModel.commit(); }
private void setupContentRoot() { ModifiableRootModel modifiableModel = ModuleRootManager.getInstance(myModule).getModifiableModel(); ContentEntry contentEntry = modifiableModel.addContentEntry(getContentRoot()); VirtualFile src = getContentRoot().findChild("src"); if (src != null) { contentEntry.addSourceFolder(src, false); } modifiableModel.commit(); }
@Override public void apply() throws ConfigurationException { myEditor.apply(); if (myModifiableModel.isChanged()) { ApplicationManager.getApplication().runWriteAction(() -> myModifiableModel.commit()); myEditor.disposeUIResources(); myTopPanel.remove(myEditor.getComponent()); createEditor(); } }
public static void addSourceRoot( final ModuleRootManager manager, @NotNull final VirtualFile root) { final ModifiableRootModel model = manager.getModifiableModel(); ContentEntry contentEntry = findContentEntryForRoot(model, root); if (contentEntry == null) { contentEntry = model.addContentEntry(root); } contentEntry.addSourceFolder(root, false); model.commit(); }
protected Module createModule(final String name) { final Module module = super.createModule(name); final ModifiableRootModel model = ModuleRootManager.getInstance(module).getModifiableModel(); final LibraryTable.ModifiableModel modifiableModel = model.getModuleLibraryTable().getModifiableModel(); final Library library = modifiableModel.createLibrary("junit"); final Library.ModifiableModel libModel = library.getModifiableModel(); libModel.addRoot( VfsUtil.getUrlForLibraryRoot(new File(PathUtil.getJarPathForClass(Before.class))), OrderRootType.CLASSES); libModel.commit(); model.commit(); return module; }
@Override public Dependency addDependency(@NotNull SModuleReference moduleRef, boolean reexport) { // we do not add a dependency into solution, we add dependency to idea module instead ModifiableRootModel modifiableModel = ModuleRootManager.getInstance(myModule).getModifiableModel(); SModule sModule = moduleRef.resolve(MPSModuleRepository.getInstance()); // FIXME module repo if (sModule instanceof SolutionIdea) { // we add dependency between idea modules Module otherIdeaModule = ((SolutionIdea) sModule).getIdeaModule(); modifiableModel.addModuleOrderEntry(otherIdeaModule); } else { ModuleRuntimeLibrariesImporter.importForUsedModules( myModule, Collections.singleton(moduleRef), modifiableModel); } modifiableModel.commit(); return null; }
@Override public void invoke(@NotNull final Project project, final Editor editor, final PsiFile file) throws IncorrectOperationException { final VirtualFile virtualFile = file.getVirtualFile(); LOG.assertTrue(virtualFile != null); final Module module = ModuleUtilCore.findModuleForFile(virtualFile, project); final LanguageLevel moduleLevel = module == null ? null : LanguageLevelModuleExtensionImpl.getInstance(module).getLanguageLevel(); if (moduleLevel != null && isLanguageLevelAcceptable(project, module, myLevel)) { final ModifiableRootModel rootModel = ModuleRootManager.getInstance(module).getModifiableModel(); rootModel.getModuleExtension(LanguageLevelModuleExtension.class).setLanguageLevel(myLevel); rootModel.commit(); } else { LanguageLevelProjectExtension.getInstance(project).setLanguageLevel(myLevel); ProjectRootManagerEx.getInstanceEx(project) .makeRootsChange(EmptyRunnable.INSTANCE, false, true); } }
public static VirtualFile[] configureByFiles( @Nullable VirtualFile rawProjectRoot, VirtualFile[] files, @Nullable VirtualFile[] auxiliaryFiles, Module module, @Nullable TripleFunction<ModifiableRootModel, VirtualFile, List<String>, Void> moduleInitializer) throws Exception { return WriteAction.compute( () -> { VirtualFile dummyRoot = VirtualFileManager.getInstance().findFileByUrl("temp:///"); //noinspection ConstantConditions dummyRoot.refresh(false, false); final VirtualFile sourceDir = dummyRoot.createChildDirectory(DesignerTests.class, "s"); assert sourceDir != null; final IndexableFileSet indexableFileSet = new IndexableFileSet() { @Override public boolean isInSet(@NotNull final VirtualFile file) { return file.getFileSystem() == sourceDir.getFileSystem(); } @Override public void iterateIndexableFilesIn( @NotNull final VirtualFile file, @NotNull final ContentIterator iterator) { if (file.isDirectory()) { for (VirtualFile child : file.getChildren()) { iterateIndexableFilesIn(child, iterator); } } else { iterator.processFile(file); } } }; FileBasedIndex.getInstance().registerIndexableSet(indexableFileSet, module.getProject()); Disposer.register( module, new Disposable() { @Override public void dispose() { FileBasedIndex.getInstance().removeIndexableSet(indexableFileSet); ApplicationManager.getApplication() .runWriteAction( () -> { try { sourceDir.delete(null); } catch (IOException e) { throw new RuntimeException(e); } }); } }); final ModifiableRootModel rootModel = ModuleRootManager.getInstance(module).getModifiableModel(); VirtualFile[] toFiles = copyFiles(files, sourceDir, rawProjectRoot); if (auxiliaryFiles != null) { copyFiles(auxiliaryFiles, sourceDir, rawProjectRoot); } rootModel.addContentEntry(sourceDir).addSourceFolder(sourceDir, false); final List<String> libs = new ArrayList<>(); if (moduleInitializer != null) { moduleInitializer.fun(rootModel, sourceDir, libs); } rootModel.commit(); for (String path : libs) { VirtualFile virtualFile = path.charAt(0) != '/' ? getFile("lib", path) : getFile(path); FlexTestUtils.addLibrary( module, path, virtualFile.getParent().getPath(), virtualFile.getName(), null, null); } return toFiles; }); }