IDEA-76142: Gradle support - cannot update IDEA projects once one of build.gradle...
[idea/community.git] / plugins / gradle / testSources / org / jetbrains / plugins / gradle / testutil / IntellijProjectBuilder.groovy
1 package org.jetbrains.plugins.gradle.testutil
2
3 import com.intellij.pom.java.LanguageLevel
4 import com.intellij.openapi.module.Module
5
6 import com.intellij.openapi.roots.libraries.Library
7 import com.intellij.openapi.roots.LibraryOrderEntry
8
9 import com.intellij.openapi.project.Project
10 import com.intellij.openapi.util.IconLoader
11
12 /** 
13  * @author Denis Zhdanov
14  * @since 1/25/12 3:09 PM
15  */
16 class IntellijProjectBuilder extends AbstractProjectBuilder {
17   
18   def projectStub = [:]
19   def project = projectStub as Project
20   def platformFacade = [
21     getModules: { modules },
22     getOrderEntries: { dependencies[it] },
23     getProjectIcon: { IconLoader.getIcon("/nodes/ideaProject.png") }
24   ]
25
26   @Override
27   protected createProject(String name, LanguageLevel languageLevel) {
28     projectStub.getName = { name }
29     platformFacade.getLanguageLevel = { languageLevel }
30     project
31   }
32
33   @Override
34   protected createModule(String name) {
35     [ getName: { name } ] as Module
36   }
37
38   @Override
39   protected createLibrary(String name, Map paths) {
40     [ getName: { name }, getPresentableName: { name } ] as Library
41   }
42
43   @Override
44   protected createLibraryDependency(module, library) {
45     def stub = [:]
46     def result = stub as LibraryOrderEntry
47     stub.accept = { policy, defaultValue -> policy.visitLibraryOrderEntry(result, defaultValue) }
48     stub.getLibraryName = { library.name }
49     result
50   }
51 }