IDEA-76142: Gradle support - cannot update IDEA projects once one of build.gradle...
[idea/community.git] / plugins / gradle / src / org / jetbrains / plugins / gradle / diff / PlatformFacade.java
1 package org.jetbrains.plugins.gradle.diff;
2
3 import com.intellij.openapi.module.Module;
4 import com.intellij.openapi.project.Project;
5 import com.intellij.openapi.roots.OrderEntry;
6 import com.intellij.pom.java.LanguageLevel;
7 import org.jetbrains.annotations.NotNull;
8
9 import javax.swing.*;
10 import java.util.Collection;
11
12 /**
13  * IntelliJ code provides a lot of statical bindings to the interested pieces of data. For example we need to execute code
14  * like below to get list of modules for the target project:
15  * <pre>
16  *   ModuleManager.getInstance(project).getModules()
17  * </pre>
18  * That means that it's not possible to test target classes in isolation if corresponding infrastructure is not set up.
19  * However, we don't want to set it up if we execute a simple standalone test.
20  * <p/>
21  * This interface is intended to encapsulate access to the underlying IntelliJ functionality.
22  * <p/>
23  * Implementations of this interface are expected to be thread-safe.
24  * 
25  * @author Denis Zhdanov
26  * @since 1/26/12 11:32 AM
27  */
28 public interface PlatformFacade {
29
30   @NotNull
31   LanguageLevel getLanguageLevel(@NotNull Project project);
32
33   @NotNull
34   Collection<Module> getModules(@NotNull Project project);
35
36   @NotNull
37   Collection<OrderEntry> getOrderEntries(@NotNull Module module);
38
39   /**
40    * @return    icon that should be used for representation project root node at the tree UI controls used by the gradle integration
41    */
42   @NotNull
43   Icon getProjectIcon();
44 }