// 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.psi;

import com.intellij.extapi.psi.PsiFileBase;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.psi.FileViewProvider;
import fuchsia.developer.plugin.fidl.Language;
import javax.swing.Icon;
import org.jetbrains.annotations.NotNull;

public class File extends PsiFileBase {
  public File(@NotNull FileViewProvider viewProvider) {
    super(viewProvider, Language.INSTANCE);
  }

  @NotNull
  @Override
  public FileType getFileType() {
    return fuchsia.developer.plugin.fidl.FileType.INSTANCE;
  }

  @Override
  public String toString() {
    return "FIDL File";
  }

  @Override
  public Icon getIcon(int flags) {
    return super.getIcon(flags);
  }
}
