package org.limewire.ui.swing.search.model; import java.util.Collection; import java.util.List; import org.limewire.core.api.FilePropertyKey; import org.limewire.core.api.endpoint.RemoteHost; import org.limewire.core.api.library.PropertiableFile; import org.limewire.core.api.search.SearchResult; import org.limewire.ui.swing.filter.FilterableItem; import org.limewire.ui.swing.nav.NavSelectable; /** * Defines an interface for a displayed search result. The displayed result * may be supported by multiple sources, and may also contain an aggregation * of similar results. */ public interface VisualSearchResult extends NavSelectable, PropertiableFile, FilterableItem { /** Name for new sources property change event. */ public static final String NEW_SOURCES = "newSources"; /** Name for similarity parent property change event. */ public static final String SIMILARITY_PARENT = "similarityParent"; /** * Returns a list of core SearchResult values associated with this visual * result. */ List<SearchResult> getCoreSearchResults(); /** * Returns the download state for the search result. */ BasicDownloadState getDownloadState(); /** * Sets the download state for the search result. */ void setDownloadState(BasicDownloadState downloadState); /** * Returns the file extension for the search result. */ String getFileExtension(); /** * Returns the value associated with the specified FilePropertyKey as a * text string. */ String getPropertyString(FilePropertyKey key); /** * Returns the name property as a text string. For audio files with a * non-blank title, the title property is returned, prefixed by the artist * if <code>useAudioArtist</code> is true. */ String getNameProperty(boolean useAudioArtist); /** * Returns a Collection of sources that support the search result. Each * source is represented by a RemoteHost object. */ Collection<RemoteHost> getSources(); /** * Returns a list of similar search results. */ List<VisualSearchResult> getSimilarResults(); /** * Returns the size of the search result in bytes. */ long getSize(); /** * Returns an indicator that determines if the result is visible. */ boolean isVisible(); /** * Sets an indicator that determines if the result is visible. */ void setVisible(boolean visible); /** * Returns an indicator that determines if similar results are visible. */ boolean isChildrenVisible(); /** * Sets an indicator that determines if similar results are visible. */ void setChildrenVisible(boolean childrenVisible); /** * Toggles the indicator that determines if similar results are visible. */ void toggleChildrenVisibility(); /** * Returns an indicator that determines if the result is spam. */ boolean isSpam(); /** * Sets an indicator that determines if the result is spam. */ void setSpam(boolean spam); /** * Adds the specified search result to the list of similar results. */ public void addSimilarSearchResult(VisualSearchResult similarResult); /** * Removes the specified search result from the list of similar results. */ public void removeSimilarSearchResult(VisualSearchResult result); /** * Returns the parent result that this result is similar to. May be null. */ VisualSearchResult getSimilarityParent(); /** * Sets the specified result as the parent that this result is similar to. */ public void setSimilarityParent(VisualSearchResult parent); /** * Returns the magnet link associated with the search result. */ public String getMagnetLink(); /** * Returns the main heading for the search result. */ String getHeading(); /** * Returns the sub-heading for the search result. */ String getSubHeading(); /** * Returns the relevance value of the search result. */ float getRelevance(); /** * Returns an indicator that determines if the result is an existing * download. */ boolean isPreExistingDownload(); /** * Sets an indicator that determines if the result is an existing * download. */ void setPreExistingDownload(boolean preExistingDownload); /** * Returns true if the associated file contains a license. */ boolean isLicensed(); }