package org.limewire.ui.swing.properties; import org.limewire.bittorrent.Torrent; import org.limewire.bittorrent.TorrentManagerSettings; import org.limewire.bittorrent.TorrentSettingsAnnotation; import org.limewire.core.api.download.DownloadItem; import org.limewire.core.api.library.LibraryManager; 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.components.decorators.TableDecorator; import org.limewire.ui.swing.library.LibraryMediator; import org.limewire.ui.swing.painter.factories.BarPainterFactory; 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 FileInfoPanelFactoryImpl implements FileInfoPanelFactory { private final Provider<IconManager> iconManager; private final Provider<MagnetLinkFactory> magnetLinkFactory; private final Provider<CategoryIconManager> categoryIconManager; 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; private final Provider<LibraryManager> libraryManager; private final Provider<BarPainterFactory> barPainterFactory; private final Provider<TableDecorator> tableDecorator; private final @TorrentSettingsAnnotation TorrentManagerSettings torrentSettings; @Inject public FileInfoPanelFactoryImpl(Provider<IconManager> iconManager, Provider<MagnetLinkFactory> magnetLinkFactory, Provider<CategoryIconManager> categoryIconManager, Provider<PropertyDictionary> propertyDictionary, Provider<SpamManager> spamManager, Provider<SharedFileListManager> sharedFileListManager, Provider<MetaDataManager> metaDataManager, Provider<LibraryMediator> libraryMediator, Provider<LibraryManager> libraryManager, Provider<BarPainterFactory> barPainterFactory, Provider<TableDecorator> tableDecorator, @TorrentSettingsAnnotation TorrentManagerSettings torrentSettings) { this.iconManager = iconManager; this.magnetLinkFactory = magnetLinkFactory; this.categoryIconManager = categoryIconManager; this.propertyDictionary = propertyDictionary; this.spamManager = spamManager; this.sharedFileListManager = sharedFileListManager; this.metaDataManager = metaDataManager; this.libraryMediator = libraryMediator; this.libraryManager = libraryManager; this.barPainterFactory = barPainterFactory; this.tableDecorator = tableDecorator; this.torrentSettings = torrentSettings; } @Override public FileInfoBittorrentPanel 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 createLimitsPanel(FileInfoType type, PropertiableFile propertiableFile) { return new FileInfoLimitsPanel(propertiableFile, torrentSettings); } @Override public FileInfoPanel createOverviewPanel(FileInfoType type, PropertiableFile propertiableFile) { return new FileInfoOverviewPanel(type, propertiableFile, iconManager, magnetLinkFactory.get(), categoryIconManager.get(), libraryManager.get(), barPainterFactory.get()); } @Override public FileInfoPanel createSharingPanel(FileInfoType type, PropertiableFile propertiableFile) { return new FileInfoSharingPanel(type, propertiableFile, sharedFileListManager.get()); } @Override public FileInfoPanel createTrackersPanel(FileInfoType type, PropertiableFile propertiableFile) { return new FileInfoTrackersPanel(propertiableFile, tableDecorator.get()); } @Override public FileInfoPanel createTransferPanel(FileInfoType type, PropertiableFile propertiableFile) { return new FileInfoTransfersPanel(type, propertiableFile, tableDecorator.get()); } @Override public FileInfoPanel createPiecesPanel(FileInfoType type, DownloadItem propertiableFile) { return new FileInfoPiecesPanel(propertiableFile); } }