package org.limewire.ui.swing.warnings;
import java.io.File;
import java.util.List;
import org.limewire.core.api.library.LocalFileList;
import org.limewire.core.api.library.SharedFileList;
import org.limewire.core.settings.LibrarySettings;
import org.limewire.core.settings.SharingSettings;
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 Provider<SharingWarningDialog> sharingWarningPanel;
private final LibraryFileAdder libraryFileAdder;
@Inject
public LibraryWarningController(Provider<LibraryWarningDialog> libraryCategoryWarning,
Provider<SharingWarningDialog> sharingWarningPanel, LibraryFileAdder libraryFileAdder) {
this.libraryWarningPanel = libraryCategoryWarning;
this.sharingWarningPanel = sharingWarningPanel;
this.libraryFileAdder = libraryFileAdder;
}
public void addFiles(final LocalFileList fileList, final List<File> files) {
int directoryCount = 0;
for (File file : files) {
if (file.isDirectory() && fileList.isFileAddable(file)) {
directoryCount++;
if (directoryCount > 1) {
// short circuit just need to know if there is more than 1
break;
}
}
}
SharedFileList sharedFileList = null;
if (fileList instanceof SharedFileList) {
sharedFileList = (SharedFileList) fileList;
}
if (directoryCount > 0 && LibrarySettings.ASK_ABOUT_FOLDER_DROP_CATEGORIES.getValue()) {
LibraryWarningDialog panel = libraryWarningPanel.get();
panel.initialize(fileList, files);
} else if (directoryCount > 0 && SharingSettings.WARN_SHARING_FOLDER.getValue()
&& sharedFileList != null
&& (sharedFileList.isPublic() || sharedFileList.getFriendIds().size() > 0)) {
SharingWarningDialog panel = sharingWarningPanel.get();
panel.initialize(sharedFileList, files);
} else {
libraryFileAdder.addFilesInner(fileList, files);
}
}
}