terminal: use WinPtyCommand.getCommand to avoid using Win API (EA-235644 (plugin...
[idea/community.git] / platform / projectModel-api / src / com / intellij / openapi / roots / SourceFolder.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.roots;
17
18 import org.jetbrains.annotations.ApiStatus;
19 import org.jetbrains.annotations.NotNull;
20 import org.jetbrains.jps.model.JpsElement;
21 import org.jetbrains.jps.model.module.JpsModuleSourceRoot;
22 import org.jetbrains.jps.model.module.JpsModuleSourceRootType;
23
24 /**
25  * Represents a source or test source root under the content root of a module.
26  *
27  * @author dsl
28  * @see ContentEntry#getSourceFolders()
29  */
30 @ApiStatus.NonExtendable
31 public interface SourceFolder extends ContentFolder {
32   /**
33    * Checks if this root is a production or test source root.
34    *
35    * @return true if this source root is a test source root, false otherwise.
36    */
37   boolean isTestSource();
38
39   /**
40    * Returns the package prefix for this source root.
41    *
42    * @return the package prefix, or an empty string if the root has no package prefix.
43    */
44   @NotNull
45   String getPackagePrefix();
46
47   /**
48    * Sets the package prefix for this source root. This method may be called only on a modifiable instance obtained from {@link ModifiableRootModel}.
49    *
50    * @param packagePrefix the package prefix, or an empty string if the root has no package prefix.
51    */
52   void setPackagePrefix(@NotNull String packagePrefix);
53
54   @NotNull
55   JpsModuleSourceRootType<?> getRootType();
56
57   @NotNull
58   JpsModuleSourceRoot getJpsElement();
59
60   /**
61    * This method is used internally to change root type to 'unknown' and back when the plugin which provides the custom root type is
62    * unloaded or loader. It isn't intended to change root type to some other arbitrary type and must not be used in plugins.
63    */
64   @ApiStatus.Internal
65   <P extends JpsElement> void changeType(JpsModuleSourceRootType<P> newType, P properties);
66 }