FUS-450 add project as parameter to FileTypeUsageSchemaDescriptor
[idea/community.git] / plugins / javaFX / src / org / jetbrains / plugins / javaFX / fxml / JavaFxFileTypeFactory.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 org.jetbrains.plugins.javaFX.fxml;
3
4 import com.intellij.internal.statistic.collectors.fus.fileTypes.FileTypeUsageSchemaDescriptor;
5 import com.intellij.openapi.fileTypes.FileType;
6 import com.intellij.openapi.fileTypes.FileTypeManager;
7 import com.intellij.openapi.project.Project;
8 import com.intellij.openapi.vfs.VirtualFile;
9 import com.intellij.psi.PsiFile;
10 import org.jetbrains.annotations.NonNls;
11 import org.jetbrains.annotations.NotNull;
12
13 public final class JavaFxFileTypeFactory implements FileTypeUsageSchemaDescriptor {
14   @Override
15   public boolean describes(@NotNull Project project, @NotNull VirtualFile file) {
16     return isFxml(file);
17   }
18
19   @NonNls public static final String FXML_EXTENSION = "fxml";
20   @NonNls static final String DOT_FXML_EXTENSION = "." + FXML_EXTENSION;
21
22   public static boolean isFxml(@NotNull PsiFile file) {
23     final VirtualFile virtualFile = file.getViewProvider().getVirtualFile();
24     return isFxml(virtualFile);
25   }
26
27   public static boolean isFxml(@NotNull VirtualFile virtualFile) {
28     if (FXML_EXTENSION.equals(virtualFile.getExtension())) {
29       final FileType fileType = virtualFile.getFileType();
30       if (fileType == getFileType() && !fileType.isBinary()) {
31         return virtualFile.getName().endsWith(DOT_FXML_EXTENSION);
32       }
33     }
34     return false;
35   }
36
37   @NotNull
38   public static FileType getFileType() {
39     return FileTypeManager.getInstance().getFileTypeByExtension(FXML_EXTENSION);
40   }
41 }