Class ViewerComparator
- java.lang.Object
-
- org.eclipse.jface.viewers.ViewerComparator
-
- Direct Known Subclasses:
ContributionComparator
,ResourceComparator
,ViewerSorter
,WorkbenchViewerComparator
public class ViewerComparator extends Object
A viewer comparator is used by aStructuredViewer
to reorder the elements provided by its content provider.The default
compare
method compares elements using two steps. The first step uses the values returned fromcategory
. By default, all elements are in the same category. The second level uses strings obtained from the content viewer's label provider viaILabelProvider.getText()
. The strings are compared using a comparator fromPolicy.getComparator()
which by default does a case sensitive string comparison.Subclasses may implement the
isSorterProperty
method; they may reimplement thecategory
method to provide categorization; and they may override thecompare
methods to provide a totally different way of sorting elements.- Since:
- 3.2
- See Also:
IStructuredContentProvider
,StructuredViewer
-
-
Constructor Summary
Constructors Constructor Description ViewerComparator()
Creates a newViewerComparator
, which uses the default comparator to sort strings.ViewerComparator(Comparator<? super String> comparator)
Creates a newViewerComparator
, which uses the given comparator to sort strings.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description int
category(Object element)
Returns the category of the given element.int
compare(Viewer viewer, Object e1, Object e2)
Returns a negative, zero, or positive number depending on whether the first element is less than, equal to, or greater than the second element.protected Comparator<? super String>
getComparator()
Returns the comparator used to sort strings.boolean
isSorterProperty(Object element, String property)
Returns whether this viewer sorter would be affected by a change to the given property of the given element.void
sort(Viewer viewer, Object[] elements)
Sorts the given elements in-place, modifying the given array.
-
-
-
Constructor Detail
-
ViewerComparator
public ViewerComparator()
Creates a newViewerComparator
, which uses the default comparator to sort strings.
-
ViewerComparator
public ViewerComparator(Comparator<? super String> comparator)
Creates a newViewerComparator
, which uses the given comparator to sort strings. The default implementation ofcompare(Viewer, Object, Object)
expects this comparator to be able to compare theString
s provided by the viewer's label provider.- Parameters:
comparator
- the comparator to use
-
-
Method Detail
-
getComparator
protected Comparator<? super String> getComparator()
Returns the comparator used to sort strings.- Returns:
- the comparator used to sort strings
-
category
public int category(Object element)
Returns the category of the given element. The category is a number used to allocate elements to bins; the bins are arranged in ascending numeric order. The elements within a bin are arranged via a second level sort criterion.The default implementation of this framework method returns
0
. Subclasses may reimplement this method to provide non-trivial categorization.- Parameters:
element
- the element- Returns:
- the category
-
compare
public int compare(Viewer viewer, Object e1, Object e2)
Returns a negative, zero, or positive number depending on whether the first element is less than, equal to, or greater than the second element.The default implementation of this method is based on comparing the elements' categories as computed by the
category
framework method. Elements within the same category are further subjected to a case insensitive compare of their label strings, either as computed by the content viewer's label provider, or theirtoString
values in other cases. Subclasses may override.- Parameters:
viewer
- the viewere1
- the first elemente2
- the second element- Returns:
- a negative number if the first element is less than the
second element; the value
0
if the first element is equal to the second element; and a positive number if the first element is greater than the second element
-
isSorterProperty
public boolean isSorterProperty(Object element, String property)
Returns whether this viewer sorter would be affected by a change to the given property of the given element.The default implementation of this method returns
false
. Subclasses may reimplement.- Parameters:
element
- the elementproperty
- the property- Returns:
true
if the sorting would be affected, andfalse
if it would be unaffected
-
sort
public void sort(Viewer viewer, Object[] elements)
Sorts the given elements in-place, modifying the given array.The default implementation of this method uses the
Arrays.sort(Object[], Comparator)
algorithm on the given array, callingcompare(Viewer, Object, Object)
to compare elements.Subclasses may reimplement this method to provide a more optimized implementation.
- Parameters:
viewer
- the viewerelements
- the elements to sort
-
-