package com.siberika.idea.pascal.lang.compiled; import com.intellij.openapi.fileTypes.BinaryFileDecompiler; import com.intellij.openapi.module.Module; import com.intellij.openapi.project.Project; import com.intellij.openapi.project.ProjectManager; import com.intellij.openapi.vfs.VirtualFile; import com.siberika.idea.pascal.PPUFileType; import com.siberika.idea.pascal.PascalBundle; import com.siberika.idea.pascal.util.ModuleUtil; import org.jetbrains.annotations.NotNull; /** * Author: George Bakhtadze * Date: 13/11/2013 */ public class PPUFileDecompiler implements BinaryFileDecompiler { @NotNull @Override public CharSequence decompile(VirtualFile file) { assert file.getFileType() == PPUFileType.INSTANCE; final Project[] projects = ProjectManager.getInstance().getOpenProjects(); if (projects.length == 0) return ""; final Project project = projects[0]; return decompileText(project, file); } static String decompileText(Project project, VirtualFile file) { Module module = ModuleUtil.getModuleForLibraryFile(project, file); if (null == module) { return PascalBundle.message("decompile.no.module", file.getPath()); } return PPUDecompilerCache.decompile(module, file.getPath(), file); } /*@Override public boolean accepts(@NotNull VirtualFile file) { return PPUFileType.INSTANCE.equals(file.getFileType()); } @NotNull @Override public ClsStubBuilder getStubBuilder() { return new ClsStubBuilder() { @Override public int getStubVersion() { return 1; } @Nullable @Override public PsiFileStub<?> buildFileStub(@NotNull FileContent fileContent) throws ClsFormatException { return null; } }; } @NotNull @Override public FileViewProvider createFileViewProvider(@NotNull VirtualFile file, @NotNull PsiManager manager, boolean physical) { return new PPUViewProvider(manager, file, physical); }*/ }