IDEA-234984 fixes after code review
[idea/community.git] / platform / lang-api / src / com / intellij / facet / autodetecting / FacetDetectorRegistry.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
17 package com.intellij.facet.autodetecting;
18
19 import com.intellij.facet.FacetConfiguration;
20 import com.intellij.openapi.fileTypes.FileType;
21 import com.intellij.openapi.util.Condition;
22 import com.intellij.openapi.vfs.VirtualFile;
23 import com.intellij.openapi.vfs.VirtualFileFilter;
24 import com.intellij.patterns.ElementPattern;
25 import com.intellij.patterns.VirtualFilePattern;
26 import com.intellij.psi.PsiFile;
27 import org.jetbrains.annotations.ApiStatus;
28 import org.jetbrains.annotations.NotNull;
29
30 /**
31  * @deprecated use {@link com.intellij.framework.detection.FrameworkDetector} instead
32  */
33 @Deprecated
34 @ApiStatus.ScheduledForRemoval(inVersion = "2020.2")
35 public interface FacetDetectorRegistry<C extends FacetConfiguration> {
36   /**
37    * Customize text of popup which will be shown when facet is detected
38    * @param presentation
39    */
40   void customizeDetectedFacetPresentation(@NotNull DetectedFacetPresentation presentation);
41
42   /**
43    * Register detector which will be used to detect facet on the fly
44    * @param fileType type of facet descriptor files
45    * @param virtualFileFilter preliminary filter for facet descriptor file
46    * @param psiFileFilter filter for facet descriptors
47    * @param detector detector
48    *
49    * @deprecated do not use facet detectors based on PsiFile, because it may slow down facet detection process.
50    * Use {@link #registerUniversalDetector} instead
51    */
52   @Deprecated
53   void registerOnTheFlyDetector(@NotNull FileType fileType, @NotNull VirtualFileFilter virtualFileFilter, @NotNull Condition<PsiFile> psiFileFilter,
54                                 @NotNull FacetDetector<PsiFile, C> detector);
55
56   /**
57    * @deprecated do not use facet detectors based on PsiFile, because it may slow down facet detection process.
58    * Use {@link #registerUniversalDetector} instead
59    */
60   @Deprecated
61   void registerOnTheFlyDetector(@NotNull FileType fileType, @NotNull VirtualFilePattern virtualFilePattern,
62                                 @NotNull ElementPattern<? extends PsiFile> psiFilePattern, @NotNull FacetDetector<PsiFile, C> facetDetector);
63
64   /**
65    * Register detector which will be used to detect subfacets on the fly
66    * @param fileType type of facet descriptor files
67    * @param virtualFilePattern preliminary filter for facet descriptor file
68    * @param psiFilePattern filter for facet descriptors
69    * @param facetDetector detector
70    * @param selector {@link UnderlyingFacetSelector} instance which will be used to select a parent facet for a detected facet
71    *
72    * @deprecated do not use facet detectors based on PsiFile, because it may slow down facet detection process.
73    * Use {@link #registerUniversalSubFacetDetector} instead
74    */
75   @Deprecated
76   <U extends FacetConfiguration>
77   void registerOnTheFlySubFacetDetector(@NotNull FileType fileType, @NotNull VirtualFilePattern virtualFilePattern,
78                                         @NotNull ElementPattern<? extends PsiFile> psiFilePattern, @NotNull FacetDetector<PsiFile, C> facetDetector,
79                                         UnderlyingFacetSelector<VirtualFile, U> selector);
80
81   /**
82    * Register detector which will be used in the module wizard when a module is created from sources
83    * @param fileType type of facet descriptor files
84    * @param virtualFileFilter filter for facet descriptors
85    * @param detector detector
86    */
87   void registerDetectorForWizard(@NotNull FileType fileType, @NotNull VirtualFileFilter virtualFileFilter, @NotNull FacetDetector<VirtualFile, C> detector);
88
89   void registerDetectorForWizard(@NotNull FileType fileType, @NotNull VirtualFilePattern virtualFilePattern, @NotNull FacetDetector<VirtualFile, C> facetDetector);
90
91   /**
92    * Register detector which will be used in the module wizard when a module is created from sources
93    * @param fileType type of facet descriptor files
94    * @param virtualFilePattern filter for facet descriptors
95    * @param facetDetector detector
96    * @param underlyingFacetSelector {@link UnderlyingFacetSelector} instance which will be used to select a parent facet for a detected facet
97    */
98   <U extends FacetConfiguration>
99   void registerSubFacetDetectorForWizard(@NotNull FileType fileType, @NotNull VirtualFilePattern virtualFilePattern,
100                                          @NotNull FacetDetector<VirtualFile, C> facetDetector,
101                                          @NotNull UnderlyingFacetSelector<VirtualFile, U> underlyingFacetSelector);
102
103   /**
104    * Register detector to be used for both on-the-fly auto-detection and auto-detection in the module wizard
105    * @param fileType type of facet descriptor files
106    * @param virtualFileFilter fileter for facet descriptor files
107    * @param detector
108    */
109   void registerUniversalDetector(@NotNull FileType fileType, @NotNull VirtualFileFilter virtualFileFilter, @NotNull FacetDetector<VirtualFile, C> detector);
110
111   void registerUniversalDetector(@NotNull FileType fileType, @NotNull VirtualFilePattern virtualFilePattern, @NotNull FacetDetector<VirtualFile, C> facetDetector);
112
113   /**
114    * Register detector to be used for both on-the-fly auto-detection and auto-detection in the module wizard
115    * @param fileType type of facet descriptor files
116    * @param virtualFilePattern filter for facet descriptors
117    * @param facetDetector detector
118    * @param underlyingFacetSelector {@link UnderlyingFacetSelector} instance which will be used to select a parent facet for a detected facet
119    */
120   <U extends FacetConfiguration> void registerUniversalSubFacetDetector(@NotNull FileType fileType,
121                                                                         @NotNull VirtualFilePattern virtualFilePattern,
122                                                                         @NotNull FacetDetector<VirtualFile, C> facetDetector,
123                                                                         UnderlyingFacetSelector<VirtualFile, U> underlyingFacetSelector);
124 }