package org.limewire.ui.swing.filter;
import org.limewire.core.api.search.SearchCategory;
import ca.odell.glazedlists.matchers.Matcher;
/**
* Defines the configuration format for a RangeFilter.
*/
interface RangeFilterFormat<E extends FilterableItem> {
/**
* Returns the header text.
*/
String getHeaderText();
/**
* Returns a Matcher that uses the specified minimum and maximum values
* for filtering items.
*/
Matcher<E> getMatcher(long minValue, long maxValue);
/**
* Returns an array of range values.
*/
long[] getValues();
/**
* Returns a text string for the value at the specified index.
*/
String getValueText(int valueIndex);
/**
* Returns true if the range maximum represents an absolute value.
*/
boolean isMaximumAbsolute();
/**
* Returns true if the upper limit is enabled.
*/
boolean isUpperLimitEnabled();
/**
* Updates the value array based on the specified filter category. If
* <code>lowerValue</code> or <code>upperValue</code> are greater than -1,
* then their values must be included in the value array. The method
* returns true if the value array is updated.
*/
boolean updateValues(SearchCategory filterCategory, long lowerValue, long upperValue);
}