Search library kinds

#KT-4644 In Progress
This commit is contained in:
Nikolay Krasko
2014-03-18 14:41:38 +04:00
parent 6b0298b933
commit 3911a6f54b
3 changed files with 17 additions and 8 deletions
@@ -19,9 +19,13 @@ package org.jetbrains.jet.plugin.framework;
import com.beust.jcommander.internal.Lists; import com.beust.jcommander.internal.Lists;
import com.intellij.openapi.module.Module; import com.intellij.openapi.module.Module;
import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.openapi.roots.ModifiableRootModel;
import com.intellij.openapi.roots.OrderRootType;
import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.roots.libraries.Library;
import com.intellij.openapi.roots.libraries.LibraryKind;
import com.intellij.openapi.roots.ui.configuration.libraries.CustomLibraryDescription; import com.intellij.openapi.roots.ui.configuration.libraries.CustomLibraryDescription;
import com.intellij.openapi.roots.ui.configuration.libraries.LibraryPresentationManager;
import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.util.io.FileUtil;
import com.intellij.openapi.vfs.VirtualFile;
import kotlin.Function1; import kotlin.Function1;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.Nullable;
@@ -29,11 +33,12 @@ import org.jetbrains.jet.plugin.configuration.KotlinWithLibraryConfigurator;
import org.jetbrains.jet.plugin.util.projectStructure.ProjectStructurePackage; import org.jetbrains.jet.plugin.util.projectStructure.ProjectStructurePackage;
import java.io.File; import java.io.File;
import java.util.Arrays;
import java.util.List; import java.util.List;
public abstract class CustomLibraryDescriptorWithDefferConfig extends CustomLibraryDescription { public abstract class CustomLibraryDescriptorWithDefferConfig extends CustomLibraryDescription {
@NotNull @NotNull
public abstract String getLibraryNamePrefix(); public abstract LibraryKind getLibraryKind();
@Nullable @Nullable
public abstract DeferredCopyFileRequests getCopyFileRequests(); public abstract DeferredCopyFileRequests getCopyFileRequests();
@@ -45,12 +50,16 @@ public abstract class CustomLibraryDescriptorWithDefferConfig extends CustomLibr
Library library = ProjectStructurePackage.findLibrary(rootModel.orderEntries(), new Function1<Library, Boolean>() { Library library = ProjectStructurePackage.findLibrary(rootModel.orderEntries(), new Function1<Library, Boolean>() {
@Override @Override
public Boolean invoke(@NotNull Library library) { public Boolean invoke(@NotNull Library library) {
String name = library.getName(); LibraryPresentationManager libraryPresentationManager = LibraryPresentationManager.getInstance();
return name != null && name.startsWith(getLibraryNamePrefix()); List<VirtualFile> classFiles = Arrays.asList(library.getFiles(OrderRootType.CLASSES));
return libraryPresentationManager.isLibraryOfKind(classFiles, getLibraryKind());
} }
}); });
if (library == null) return; if (library == null) {
return;
}
Library.ModifiableModel model = library.getModifiableModel(); Library.ModifiableModel model = library.getModifiableModel();
try { try {
@@ -66,8 +66,8 @@ public class JSLibraryStdDescription extends CustomLibraryDescriptorWithDefferCo
@NotNull @NotNull
@Override @Override
public String getLibraryNamePrefix() { public LibraryKind getLibraryKind() {
return LIBRARY_NAME; return KOTLIN_JAVASCRIPT_KIND;
} }
@Nullable @Nullable
@@ -66,8 +66,8 @@ public class JavaRuntimeLibraryDescription extends CustomLibraryDescriptorWithDe
@NotNull @NotNull
@Override @Override
public String getLibraryNamePrefix() { public LibraryKind getLibraryKind() {
return LIBRARY_NAME; return KOTLIN_JAVA_RUNTIME_KIND;
} }
@Nullable @Nullable