module content search scopes
[idea/community.git] / platform / core-api / src / com / intellij / openapi / module / Module.java
1 /*
2  * Copyright 2000-2009 JetBrains s.r.o.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  * http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.intellij.openapi.module;
17
18 import com.intellij.openapi.Disposable;
19 import com.intellij.openapi.components.ComponentManager;
20 import com.intellij.openapi.extensions.AreaInstance;
21 import com.intellij.openapi.project.Project;
22 import com.intellij.openapi.vfs.VirtualFile;
23 import com.intellij.psi.search.GlobalSearchScope;
24 import org.jetbrains.annotations.NonNls;
25 import org.jetbrains.annotations.NotNull;
26 import org.jetbrains.annotations.Nullable;
27
28 /**
29  * Represents a module in an IDEA project.
30  *
31  * @see ModuleManager#getModules()
32  * @see ModuleComponent 
33  */
34 public interface Module extends ComponentManager, AreaInstance, Disposable {
35   /**
36    * The empty array of modules which cab be reused to avoid unnecessary allocations.
37    */
38   Module[] EMPTY_ARRAY = new Module[0];
39
40   @NonNls String ELEMENT_TYPE = "type";
41
42   /**
43    * Returns the <code>VirtualFile</code> for the module .iml file.
44    *
45    * @return the virtual file instance.
46    */
47   @Nullable
48   VirtualFile getModuleFile();
49
50   /**
51    * Returns the path to the module .iml file.
52    *
53    * @return the path to the .iml file.
54    */
55   @NotNull String getModuleFilePath();
56
57   /**
58    * Returns the project to which this module belongs.
59    *
60    * @return the project instance.
61    */
62   @NotNull Project getProject();
63
64   /**
65    * Returns the name of this module.
66    *
67    * @return the module name.
68    */
69   @NotNull String getName();
70
71   /**
72    * Checks if the module instance has been disposed and unloaded.
73    *
74    * @return true if the module has been disposed, false otherwise
75    */
76   @Override
77   boolean isDisposed();
78
79   boolean isLoaded();
80
81   /**
82    * Sets a custom option for this module.
83    *
84    * @param optionName the name of the custom option.
85    * @param optionValue the value of the custom option.
86    */
87   void setOption(@NotNull String optionName, @NotNull String optionValue);
88
89   /**
90    * Removes a custom option from this module.
91    *
92    * @param optionName the name of the custom option.
93    */
94   void clearOption(@NotNull String optionName);
95
96   /**
97    * Gets the value of a custom option for this module.
98    *
99    * @param optionName the name of the custom option.
100    * @return the value of the custom option, or null if no value has been set.
101    */
102   @Nullable String getOptionValue(@NotNull String optionName);
103
104   /**
105    * Returns module scope including sources and tests, excluding libraries and dependencies.
106    *
107    * @return scope including sources and tests, excluding libraries and dependencies.
108    */
109   GlobalSearchScope getModuleScope();
110
111   GlobalSearchScope getModuleScope(boolean includeTests);
112
113   /**
114    * Returns module scope including sources, tests, and libraries, excluding dependencies.
115    *
116    * @return scope including sources, tests, and libraries, excluding dependencies.
117    */
118   GlobalSearchScope getModuleWithLibrariesScope();
119
120   /**
121    * Returns module scope including sources, tests, and dependencies, excluding libraries.
122    * 
123    * @return scope including sources, tests, and dependencies, excluding libraries.
124    */
125   GlobalSearchScope getModuleWithDependenciesScope();
126
127   GlobalSearchScope getModuleContentScope();
128   GlobalSearchScope getModuleContentWithDependenciesScope();
129
130   GlobalSearchScope getModuleWithDependenciesAndLibrariesScope(boolean includeTests);
131   GlobalSearchScope getModuleWithDependentsScope();
132   GlobalSearchScope getModuleTestsWithDependentsScope();
133   GlobalSearchScope getModuleRuntimeScope(boolean includeTests);
134 }