Search in sources :

Example 1 with ChangeLibraryLevelDialog

use of com.intellij.openapi.roots.ui.configuration.libraryEditor.ChangeLibraryLevelDialog in project intellij-community by JetBrains.

the class ChangeLibraryLevelActionBase method doCopy.

@Nullable
protected Library doCopy(LibraryEx library) {
    final VirtualFile baseDir = getBaseDir();
    final String libPath = baseDir != null ? baseDir.getPath() + "/lib" : "";
    final VirtualFile[] classesRoots = library.getFiles(OrderRootType.CLASSES);
    boolean allowEmptyName = isConvertingToModuleLibrary() && classesRoots.length == 1;
    final String libraryName = allowEmptyName ? "" : StringUtil.notNullize(library.getName(), LibraryTypeServiceImpl.suggestLibraryName(classesRoots));
    final LibraryTableModifiableModelProvider provider = getModifiableTableModelProvider();
    final ChangeLibraryLevelDialog dialog = new ChangeLibraryLevelDialog(getParentComponent(), myProject, myCopy, libraryName, libPath, allowEmptyName, provider);
    if (!dialog.showAndGet()) {
        return null;
    }
    final Set<File> fileToCopy = new LinkedHashSet<>();
    final Map<String, String> copiedFiles = new HashMap<>();
    final String targetDirectoryPath = dialog.getDirectoryForFilesPath();
    if (targetDirectoryPath != null) {
        for (OrderRootType type : OrderRootType.getAllTypes()) {
            for (VirtualFile root : library.getFiles(type)) {
                if (root.isInLocalFileSystem() || root.getFileSystem() instanceof ArchiveFileSystem) {
                    fileToCopy.add(VfsUtil.virtualToIoFile(PathUtil.getLocalFile(root)));
                }
            }
        }
        if (!copyOrMoveFiles(fileToCopy, targetDirectoryPath, copiedFiles)) {
            return null;
        }
    }
    final Library copied = provider.getModifiableModel().createLibrary(StringUtil.nullize(dialog.getLibraryName()), library.getKind());
    final LibraryEx.ModifiableModelEx model = (LibraryEx.ModifiableModelEx) copied.getModifiableModel();
    LibraryEditingUtil.copyLibrary(library, copiedFiles, model);
    WriteAction.run(() -> model.commit());
    return copied;
}
Also used : VirtualFile(com.intellij.openapi.vfs.VirtualFile) LinkedHashSet(java.util.LinkedHashSet) HashMap(java.util.HashMap) ChangeLibraryLevelDialog(com.intellij.openapi.roots.ui.configuration.libraryEditor.ChangeLibraryLevelDialog) LibraryEx(com.intellij.openapi.roots.impl.libraries.LibraryEx) ArchiveFileSystem(com.intellij.openapi.vfs.newvfs.ArchiveFileSystem) LibraryTableModifiableModelProvider(com.intellij.openapi.roots.ui.configuration.LibraryTableModifiableModelProvider) OrderRootType(com.intellij.openapi.roots.OrderRootType) Library(com.intellij.openapi.roots.libraries.Library) VirtualFile(com.intellij.openapi.vfs.VirtualFile) File(java.io.File) Nullable(org.jetbrains.annotations.Nullable)

Aggregations

OrderRootType (com.intellij.openapi.roots.OrderRootType)1 LibraryEx (com.intellij.openapi.roots.impl.libraries.LibraryEx)1 Library (com.intellij.openapi.roots.libraries.Library)1 LibraryTableModifiableModelProvider (com.intellij.openapi.roots.ui.configuration.LibraryTableModifiableModelProvider)1 ChangeLibraryLevelDialog (com.intellij.openapi.roots.ui.configuration.libraryEditor.ChangeLibraryLevelDialog)1 VirtualFile (com.intellij.openapi.vfs.VirtualFile)1 ArchiveFileSystem (com.intellij.openapi.vfs.newvfs.ArchiveFileSystem)1 File (java.io.File)1 HashMap (java.util.HashMap)1 LinkedHashSet (java.util.LinkedHashSet)1 Nullable (org.jetbrains.annotations.Nullable)1