package org.limewire.ui.swing.warnings;
import java.io.File;
import java.io.FileFilter;
import java.util.List;
import org.limewire.core.api.library.LocalFileList;
import com.google.inject.Inject;
import com.google.inject.Provider;
/**
* This class acts as a go between for adding files from the ui to a fileList.
* It has the correct logic for deciding whether or not a user needs to be
* warned before a folder drop occurs.
*/
public class LibraryWarningController {
private final Provider<LibraryWarningDialog> libraryWarningPanel;
private final LibraryFileAdder libraryFileAdder;
@Inject
public LibraryWarningController(Provider<LibraryWarningDialog> libraryCategoryWarning,
LibraryFileAdder libraryFileAdder) {
this.libraryWarningPanel = libraryCategoryWarning;
this.libraryFileAdder = libraryFileAdder;
}
public void addFiles(final LocalFileList fileList, final List<File> files) {
int directoryCount = 0;
for (File file : files) {
if (fileList.isDirectoryAllowed(file)) {
directoryCount++;
if (directoryCount > 1) {
// short circuit just need to know if there is more than 1
break;
}
}
}
if (directoryCount > 0) {
LibraryWarningDialog panel = libraryWarningPanel.get();
panel.initialize(fileList, files);
} else {
// Only files -- add them all.
libraryFileAdder.addFilesInner(fileList, files, new FileFilter() {
@Override
public boolean accept(File pathname) {
return true;
}
});
}
}
}