// Copyright 2018 The Fuchsia Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.

package fuchsia.developer.plugin.fidl;

import com.intellij.openapi.fileTypes.LanguageFileType;
import javax.swing.Icon;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;

public class FileType extends LanguageFileType {
  public static final FileType INSTANCE = new FileType();

  private FileType() {
    super(Language.INSTANCE);
  }

  @NotNull
  @Override
  public String getName() {
    return "FIDL file";
  }

  @NotNull
  @Override
  public String getDescription() {
    return "FIDL language file";
  }

  @NotNull
  @Override
  public String getDefaultExtension() {
    return "fidl";
  }

  @Nullable
  @Override
  public Icon getIcon() {
    return Icons.FILE;
  }
}
