package org.dlangplugin.library;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleType;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.libraries.*;
import com.intellij.openapi.roots.libraries.ui.LibraryEditorComponent;
import com.intellij.openapi.roots.libraries.ui.LibraryPropertiesEditor;
import com.intellij.openapi.roots.libraries.ui.LibraryRootsComponentDescriptor;
import com.intellij.openapi.roots.ui.configuration.FacetsProvider;
import com.intellij.openapi.vfs.VirtualFile;
import org.dlangplugin.DLangIcons;
import org.dlangplugin.module.DLangModuleType;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import javax.swing.*;
public class DLangLibraryType extends LibraryType<DummyLibraryProperties> {
public static final PersistentLibraryKind<DummyLibraryProperties> DLANG_LIBRARY =
new PersistentLibraryKind<DummyLibraryProperties>("DLangLib") {
@NotNull
@Override
public DummyLibraryProperties createDefaultProperties() {
return new DummyLibraryProperties();
}
};
public DLangLibraryType() {
super(DLANG_LIBRARY);
}
@NotNull
@Override
public String getCreateActionName() {
return "D Library";
}
@Override
public boolean isSuitableModule(@NotNull Module module, @NotNull FacetsProvider facetsProvider) {
return ModuleType.get(module).equals(DLangModuleType.getInstance());
}
@Override
public NewLibraryConfiguration createNewLibrary(@NotNull JComponent parentComponent,
@Nullable VirtualFile contextDirectory,
@NotNull Project project) {
return LibraryTypeService.getInstance()
.createLibraryFromFiles(createLibraryRootsComponentDescriptor(), parentComponent, contextDirectory, this, project);
}
@NotNull
@Override
public LibraryRootsComponentDescriptor createLibraryRootsComponentDescriptor() {
return new DLangLibraryRootsComponentDescriptor();
}
@Override
public LibraryPropertiesEditor createPropertiesEditor(@NotNull LibraryEditorComponent<DummyLibraryProperties> component) {
return null;
}
@Override
public Icon getIcon() {
return DLangIcons.LIBRARY;
}
public static DLangLibraryType getInstance() {
return LibraryType.EP_NAME.findExtension(DLangLibraryType.class);
}
}