package org.limewire.ui.swing.properties; import org.limewire.bittorrent.Torrent; import org.limewire.core.api.library.MagnetLinkFactory; import org.limewire.core.api.library.MetaDataManager; import org.limewire.core.api.library.PropertiableFile; import org.limewire.core.api.library.SharedFileListManager; import org.limewire.core.api.properties.PropertyDictionary; import org.limewire.core.api.spam.SpamManager; import org.limewire.ui.swing.images.ThumbnailManager; import org.limewire.ui.swing.library.LibraryMediator; import org.limewire.ui.swing.properties.FileInfoDialog.FileInfoType; import org.limewire.ui.swing.util.CategoryIconManager; import org.limewire.ui.swing.util.IconManager; import com.google.inject.Inject; import com.google.inject.Provider; import com.google.inject.Singleton; @Singleton public class FileInfoFactoryImpl implements FileInfoPanelFactory { private final Provider<IconManager> iconManager; private final Provider<MagnetLinkFactory> magnetLinkFactory; private final Provider<CategoryIconManager> categoryIconManager; private final Provider<ThumbnailManager> thumbnailManager; private final Provider<PropertyDictionary> propertyDictionary; private final Provider<SpamManager> spamManager; private final Provider<SharedFileListManager> sharedFileListManager; private final Provider<MetaDataManager> metaDataManager; private final Provider<LibraryMediator> libraryMediator; @Inject public FileInfoFactoryImpl(Provider<IconManager> iconManager, Provider<MagnetLinkFactory> magnetLinkFactory, Provider<CategoryIconManager> categoryIconManager, Provider<ThumbnailManager> thumbnailManager, Provider<PropertyDictionary> propertyDictionary, Provider<SpamManager> spamManager, Provider<SharedFileListManager> sharedFileListManager, Provider<MetaDataManager> metaDataManager, Provider<LibraryMediator> libraryMediator) { this.iconManager = iconManager; this.magnetLinkFactory = magnetLinkFactory; this.categoryIconManager = categoryIconManager; this.thumbnailManager = thumbnailManager; this.propertyDictionary = propertyDictionary; this.spamManager = spamManager; this.sharedFileListManager = sharedFileListManager; this.metaDataManager = metaDataManager; this.libraryMediator = libraryMediator; } @Override public FileInfoPanel createBittorentPanel(Torrent torrent) { return new FileInfoBittorrentPanel(torrent); } @Override public FileInfoPanel createOverviewPanel(Torrent torrent) { return new FileInfoBittorrentOverviewPanel(torrent); } @Override public FileInfoPanel createGeneralPanel(FileInfoType type, PropertiableFile propertiableFile) { return new FileInfoGeneralPanel(type, propertiableFile, propertyDictionary.get(), spamManager.get(), metaDataManager.get(), libraryMediator.get()); } @Override public FileInfoPanel createOverviewPanel(FileInfoType type, PropertiableFile propertiableFile) { return new FileInfoOverviewPanel(type, propertiableFile, iconManager, magnetLinkFactory.get(), categoryIconManager.get(), thumbnailManager.get()); } @Override public FileInfoPanel createSharingPanel(FileInfoType type, PropertiableFile propertiableFile) { return new FileInfoSharingPanel(type, propertiableFile, sharedFileListManager.get()); } @Override public FileInfoPanel createTransferPanel(FileInfoType type, PropertiableFile propertiableFile) { return new FileInfoTransfersPanel(type, propertiableFile); } }