private static void addDependencyOnDartPackagesLibrary( @NotNull final Module module, @NotNull final Library library) { final ModifiableRootModel modifiableModel = ModuleRootManager.getInstance(module).getModifiableModel(); try { for (final OrderEntry orderEntry : modifiableModel.getOrderEntries()) { if (orderEntry instanceof LibraryOrderEntry && LibraryTablesRegistrar.PROJECT_LEVEL.equals( ((LibraryOrderEntry) orderEntry).getLibraryLevel()) && DartPackagesLibraryType.DART_PACKAGES_LIBRARY_NAME.equals( ((LibraryOrderEntry) orderEntry).getLibraryName())) { return; // dependency already exists } } modifiableModel.addLibraryEntry(library); ApplicationManager.getApplication() .runWriteAction( new Runnable() { @Override public void run() { modifiableModel.commit(); } }); } finally { if (!modifiableModel.isDisposed()) { modifiableModel.dispose(); } } }
private static void removeGenModule(@NotNull final Module libModule) { final String genModuleName = getGenModuleName(libModule); final ModuleManager moduleManager = ModuleManager.getInstance(libModule.getProject()); final ModifiableRootModel model = ModuleRootManager.getInstance(libModule).getModifiableModel(); for (OrderEntry entry : model.getOrderEntries()) { if (entry instanceof ModuleOrderEntry && genModuleName.equals(((ModuleOrderEntry) entry).getModuleName())) { model.removeOrderEntry(entry); } } ApplicationManager.getApplication() .runWriteAction( new Runnable() { @Override public void run() { model.commit(); } }); final Module genModule = moduleManager.findModuleByName(genModuleName); if (genModule == null) { return; } moduleManager.disposeModule(genModule); final VirtualFile moduleFile = genModule.getModuleFile(); if (moduleFile != null) { ApplicationManager.getApplication() .invokeLater( new Runnable() { @Override public void run() { ApplicationManager.getApplication() .runWriteAction( new Runnable() { @Override public void run() { try { moduleFile.delete(libModule.getProject()); } catch (IOException e) { LOG.error(e); } } }); } }); } }