package com.siberika.idea.pascal.lang.parser.impl;
import com.intellij.extapi.psi.PsiFileBase;
import com.intellij.openapi.fileTypes.FileType;
import com.intellij.openapi.vfs.VirtualFile;
import com.intellij.psi.FileViewProvider;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiNameIdentifierOwner;
import com.siberika.idea.pascal.PascalFileType;
import com.siberika.idea.pascal.PascalLanguage;
import com.siberika.idea.pascal.lang.parser.PascalFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
/**
* Author: George Bakhtadze
* Date: 12/9/12
*/
public class PascalFileImpl extends PsiFileBase implements PascalFile, PsiNameIdentifierOwner {
public PascalFileImpl(@NotNull FileViewProvider viewProvider) {
super(viewProvider, PascalLanguage.INSTANCE);
}
@Nullable
@Override
public String getModuleName() {
return "Fixed module name";
}
@NotNull
@Override
public FileType getFileType() {
return PascalFileType.INSTANCE;
}
@Nullable
@Override
public PsiElement getNameIdentifier() {
return null;
}
@Override
public VirtualFile getVirtualFile() {
VirtualFile file = super.getVirtualFile();
if (file != null) {
if (file.getName().startsWith("$")) {
return myOriginalFile != null ? myOriginalFile.getVirtualFile() : file;
} else {
return file;
}
} else {
return myOriginalFile != null ? myOriginalFile.getVirtualFile() : null;
}
}
@Override
public void subtreeChanged() {
super.subtreeChanged();
}
}