package com.intellij.flex.uiDesigner.libraries; import com.intellij.ide.highlighter.XmlFileType; import com.intellij.javascript.flex.FlexApplicationComponent; import com.intellij.openapi.util.Pair; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.CharsetToolkit; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.testFramework.LightVirtualFile; import org.jetbrains.annotations.NotNull; import java.io.*; class LightLibrary extends Library { private final LightVirtualFile catalogFile; private final LightVirtualFile swfFile; LightLibrary(File file) throws IOException { super(new LightVirtualFile(file.getPath())); Pair<CharArrayReader, ByteArrayInputStream> data = LibraryUtil.openSwc(file); catalogFile = new LightVirtualFile(file.getPath() + "/catalog.xml", XmlFileType.INSTANCE, FileUtil.loadTextAndClose(data.first)); catalogFile.setCharset(CharsetToolkit.UTF8_CHARSET); final byte[] swfBytes = FileUtil.loadBytes(data.second); swfFile = new LightVirtualFile(file.getPath() + "/library.swf") { @Override public InputStream getInputStream() { return new ByteArrayInputStream(swfBytes); } @NotNull @Override public byte[] contentsToByteArray() { return swfBytes; } }; swfFile.setFileType(FlexApplicationComponent.SWF_FILE_TYPE); } @Override public VirtualFile getCatalogFile() { return catalogFile; } @Override public VirtualFile getSwfFile() { return swfFile; } }