package org.limewire.ui.swing.upload;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.limewire.core.api.upload.UploadItem;
import org.limewire.core.api.upload.UploadState;
import org.limewire.ui.swing.upload.table.FinishedUploadSelected;
import org.limewire.ui.swing.upload.table.UploadPopupMenu;
import org.limewire.ui.swing.upload.table.UploadPopupMenuFactory;
import org.limewire.ui.swing.upload.table.UploadTable;
import org.limewire.ui.swing.upload.table.UploadTableFactory;
import com.google.inject.AbstractModule;
import com.google.inject.Provides;
import com.google.inject.assistedinject.FactoryProvider;
/**
* Module to configure Guice bindings for the Uploads UI classes.
*/
public class LimeWireUiUploadModule extends AbstractModule {
@Override
protected void configure() {
bind(UploadPopupMenuFactory.class).toProvider(
FactoryProvider.newFactory(UploadPopupMenuFactory.class, UploadPopupMenu.class));
bind(UploadTableFactory.class).toProvider(
FactoryProvider.newFactory(UploadTableFactory.class, UploadTable.class));
}
/**
* Returns a list of selected upload files that are finished. This is
* bound as a Provider method. The Provider should only be accessed on
* the UI thread.
*/
@Provides
@FinishedUploadSelected
List<File> selectedFiles(UploadMediator uploadMediator) {
List<File> files = new ArrayList<File>();
List<UploadItem> uploadItems = uploadMediator.getSelectedUploads();
for (UploadItem item : uploadItems) {
if (item.getState() == UploadState.DONE) {
files.addAll(item.getCompleteFiles());
}
}
return files;
}
}