blob: ee8c1e2022e6575c10b3e65639ab618a6686f2ea [file] [log] [blame]
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();
}
}