shared-indexes tests: allow to ignore files from checks on double indexing.
[idea/community.git] / platform / lang-api / src / com / intellij / facet / ProjectFacetListener.java
1 // Copyright 2000-2020 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file.
2 package com.intellij.facet;
3
4 import com.intellij.openapi.project.Project;
5 import org.jetbrains.annotations.NotNull;
6
7 /**
8  * Implement this interface to be notified about changes in facets in all project modules. The implementation must be registered in plugin.xml
9  * <pre>
10  * &lt;extensions defaultExtensionNs="com.intellij"&gt;
11  * &nbsp;&nbsp;&lt;projectFacetListener facet-type="facet-type-id" implementation="qualified-class-name"/&gt;
12  * &lt;/extensions&gt;
13  * </pre>
14  * If {@code facet-type-id} is set to {@link FacetType#getStringId ID} of a specific facet type, the listener will be notified about changes
15  * in facets of this type only. If it is {@code "any"} the listener will get events about all facets in the project.
16  *
17  * @see FacetManagerListener
18  */
19 public interface ProjectFacetListener<F extends Facet<?>> {
20   default void firstFacetAdded(@NotNull Project project) {
21   }
22
23   default void facetAdded(@NotNull F facet) {
24   }
25
26   default void beforeFacetRemoved(@NotNull F facet){
27   }
28
29   default void facetRemoved(@NotNull F facet, @NotNull Project project){
30   }
31
32   default void allFacetsRemoved(@NotNull Project project){
33   }
34
35   default void facetConfigurationChanged(@NotNull F facet){
36   }
37 }