| package com.intellij.util.ui.classpath; |
| |
| import org.jetbrains.annotations.NotNull; |
| import org.jetbrains.annotations.NonNls; |
| import org.jdom.Element; |
| import com.intellij.openapi.roots.libraries.LibraryTablesRegistrar; |
| import com.intellij.openapi.roots.libraries.LibraryTable; |
| import com.intellij.openapi.roots.libraries.Library; |
| import com.intellij.openapi.roots.OrderRootType; |
| import com.intellij.openapi.vfs.VirtualFile; |
| |
| import java.util.List; |
| import java.util.Collections; |
| import java.util.ArrayList; |
| import java.io.IOException; |
| |
| /** |
| * @author nik |
| */ |
| public class GlobalLibraryReferenceElement implements SimpleClasspathElement { |
| @NonNls public static final String NAME_ATTRIBUTE = "name"; |
| @NonNls public static final String LEVEL_ATTRIBUTE = "level"; |
| private final String myLibraryName; |
| |
| public GlobalLibraryReferenceElement(@NotNull String libraryName) { |
| myLibraryName = libraryName; |
| } |
| |
| public GlobalLibraryReferenceElement(@NotNull Element element) { |
| myLibraryName = element.getAttributeValue(NAME_ATTRIBUTE); |
| } |
| |
| @Override |
| public String getPresentableName() { |
| return myLibraryName; |
| } |
| |
| public void writeExternal(Element element) { |
| element.setAttribute(NAME_ATTRIBUTE, myLibraryName); |
| //todo[nik,greg] remote later. this is needed only for forward compatibility with version before 8 |
| element.setAttribute(LEVEL_ATTRIBUTE, LibraryTablesRegistrar.APPLICATION_LEVEL); |
| } |
| |
| @Override |
| public Library getLibrary() { |
| final LibraryTable libraryTable = LibraryTablesRegistrar.getInstance().getLibraryTable(); |
| return libraryTable.getLibraryByName(myLibraryName); |
| } |
| |
| @Override |
| public String getLibraryName() { |
| return myLibraryName; |
| } |
| |
| @Override |
| public void serialize(Element element) throws IOException { |
| element.setAttribute(NAME_ATTRIBUTE, myLibraryName); |
| //todo[nik,greg] remote later. this is needed only for forward compatibility with version before 8 |
| element.setAttribute(LEVEL_ATTRIBUTE, LibraryTablesRegistrar.APPLICATION_LEVEL); |
| } |
| |
| @Override |
| public List<String> getClassesRootUrls() { |
| final Library library = getLibrary(); |
| if (library != null) { |
| final List<String> list = new ArrayList<String>(); |
| for (VirtualFile file : library.getFiles(OrderRootType.CLASSES)) { |
| list.add(file.getUrl()); |
| } |
| return list; |
| } |
| return Collections.emptyList(); |
| } |
| } |