package org.limewire.ui.swing.warnings; import java.io.File; import java.util.List; import org.limewire.core.api.library.LocalFileList; import org.limewire.ui.swing.library.LibraryMediator; import org.limewire.ui.swing.library.navigator.LibraryNavItem; import org.limewire.ui.swing.library.navigator.LibraryNavigatorTable; import com.google.inject.Inject; import com.google.inject.Provider; /** * Clears any filters that may be on the library, then handles logic around * looping through a list of files and calling addFile or addFoler as necessary * on the provided LocalFileList. */ class LibraryFileAdder { private final Provider<LibraryMediator> libraryMediator; private final Provider<LibraryNavigatorTable> libraryNavigatorTable; @Inject public LibraryFileAdder(Provider<LibraryMediator> libraryMediator, Provider<LibraryNavigatorTable> libraryNavigatorTable) { this.libraryMediator = libraryMediator; this.libraryNavigatorTable = libraryNavigatorTable; } void addFilesInner(final LocalFileList fileList, final List<File> files) { //only clear the filters if the library has been initialized if(libraryMediator.get().isInitialized()) { //only clear the filters if we are adding files to the same list that is being shown LibraryNavItem libraryNavItem = libraryNavigatorTable.get().getSelectedItem(); if(libraryNavItem != null && libraryNavItem.getLocalFileList() == fileList) { libraryMediator.get().clearFilters(); } } for (File file : files) { if (fileList.isFileAddable(file)) { if (file.isDirectory()) { fileList.addFolder(file); } else { fileList.addFile(file); } } } } }