2 * Copyright 2000-2009 JetBrains s.r.o.
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
8 * http://www.apache.org/licenses/LICENSE-2.0
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.
17 package com
.intellij
.facet
.impl
.autodetecting
;
19 import com
.intellij
.facet
.Facet
;
20 import com
.intellij
.facet
.FacetConfiguration
;
21 import com
.intellij
.facet
.FacetType
;
22 import com
.intellij
.facet
.autodetecting
.FacetDetector
;
23 import com
.intellij
.facet
.autodetecting
.UnderlyingFacetSelector
;
24 import com
.intellij
.facet
.impl
.autodetecting
.model
.FacetInfo2
;
25 import com
.intellij
.facet
.impl
.autodetecting
.model
.ProjectFacetInfoSet
;
26 import com
.intellij
.openapi
.module
.Module
;
27 import com
.intellij
.openapi
.module
.ModuleUtil
;
28 import com
.intellij
.openapi
.util
.Condition
;
29 import com
.intellij
.openapi
.vfs
.VirtualFile
;
30 import com
.intellij
.openapi
.vfs
.VirtualFileFilter
;
31 import com
.intellij
.psi
.PsiFile
;
32 import com
.intellij
.psi
.PsiManager
;
37 public class FacetByPsiFileDetectorWrapper
<C
extends FacetConfiguration
, F
extends Facet
<C
>, U
extends FacetConfiguration
> extends FacetDetectorWrapper
<PsiFile
, C
, F
, U
> {
38 private final Condition
<PsiFile
> myPsiFileFilter
;
40 public FacetByPsiFileDetectorWrapper(ProjectFacetInfoSet projectFacetSet
, FacetType
<F
, C
> facetType
,
41 final AutodetectionFilter autodetectionFilter
, final VirtualFileFilter virtualFileFilter
,
42 final FacetDetector
<PsiFile
, C
> facetDetector
,
43 Condition
<PsiFile
> psiFileFilter
, final UnderlyingFacetSelector
<VirtualFile
, U
> selector
) {
44 super(projectFacetSet
, facetType
, autodetectionFilter
, virtualFileFilter
, facetDetector
, selector
);
45 myPsiFileFilter
= psiFileFilter
;
48 public FacetInfo2
<Module
> detectFacet(final VirtualFile virtualFile
, final PsiManager psiManager
) {
49 PsiFile psiFile
= psiManager
.findFile(virtualFile
);
50 if (psiFile
== null || !myPsiFileFilter
.value(psiFile
)) {
54 Module module
= ModuleUtil
.findModuleForFile(virtualFile
, psiManager
.getProject());
55 if (module
== null) return null;
57 return detectFacet(module
, virtualFile
, psiFile
);