package org.limewire.ui.swing.search.resultpanel; import org.limewire.core.api.search.SearchCategory; import org.limewire.ui.swing.search.model.VisualSearchResult; import org.limewire.ui.swing.search.resultpanel.classic.AllTableFormat; import org.limewire.ui.swing.search.resultpanel.classic.AudioTableFormat; import org.limewire.ui.swing.search.resultpanel.classic.DocumentTableFormat; import org.limewire.ui.swing.search.resultpanel.classic.ImageTableFormat; import org.limewire.ui.swing.search.resultpanel.classic.OtherTableFormat; import org.limewire.ui.swing.search.resultpanel.classic.ProgramTableFormat; import org.limewire.ui.swing.search.resultpanel.classic.VideoTableFormat; import org.limewire.ui.swing.util.IconManager; import com.google.inject.Inject; import com.google.inject.Provider; /** * Implements a factory for creating a TableFormat to display search results. */ public class ResultsTableFormatFactory { private final Provider<IconManager> iconManager; /** * Constructs a ResultsTableFormatFactory with the specified icon manager. */ @Inject public ResultsTableFormatFactory(Provider<IconManager> iconManager) { this.iconManager = iconManager; } /** * Creates a ResultsTableFormat for the specified search category. */ public ResultsTableFormat<VisualSearchResult> createTableFormat(SearchCategory searchCategory) { switch (searchCategory) { case ALL: return new AllTableFormat(iconManager); case AUDIO: return new AudioTableFormat(); case VIDEO: return new VideoTableFormat(); case DOCUMENT: return new DocumentTableFormat(iconManager); case IMAGE: return new ImageTableFormat(); case PROGRAM: return new ProgramTableFormat(); case OTHER: return new OtherTableFormat(); default: throw new IllegalArgumentException("Invalid search category " + searchCategory); } } }