5c20fbd0ac51487a2c24d259ef0c1c3ad1313e2f
[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.vfs.VirtualFile;
8 import com.intellij.psi.PsiFile;
9 import org.jetbrains.annotations.NonNls;
10 import org.jetbrains.annotations.NotNull;
11
12 public final class JavaFxFileTypeFactory implements FileTypeUsageSchemaDescriptor {
13   @Override
14   public boolean describes(@NotNull VirtualFile file) {
15     return isFxml(file);
16   }
17
18   @NonNls public static final String FXML_EXTENSION = "fxml";
19   @NonNls static final String DOT_FXML_EXTENSION = "." + FXML_EXTENSION;
20
21   public static boolean isFxml(@NotNull PsiFile file) {
22     final VirtualFile virtualFile = file.getViewProvider().getVirtualFile();
23     return isFxml(virtualFile);
24   }
25
26   public static boolean isFxml(@NotNull VirtualFile virtualFile) {
27     if (FXML_EXTENSION.equals(virtualFile.getExtension())) {
28       final FileType fileType = virtualFile.getFileType();
29       if (fileType == getFileType() && !fileType.isBinary()) {
30         return virtualFile.getName().endsWith(DOT_FXML_EXTENSION);
31       }
32     }
33     return false;
34   }
35
36   @NotNull
37   public static FileType getFileType() {
38     return FileTypeManager.getInstance().getFileTypeByExtension(FXML_EXTENSION);
39   }
40 }