package com.robotium.solo;
import android.view.View;
import java.util.Comparator;
/**
* Orders {@link View}s by their location on-screen.
*
*/
class ViewLocationComparator implements Comparator<View> {
private final int a[] = new int[2];
private final int b[] = new int[2];
private final int axis1, axis2;
public ViewLocationComparator() {
this(true);
}
/**
* @param yAxisFirst Whether the y-axis should be compared before the x-axis.
*/
public ViewLocationComparator(boolean yAxisFirst) {
this.axis1 = yAxisFirst ? 1 : 0;
this.axis2 = yAxisFirst ? 0 : 1;
}
public int compare(View lhs, View rhs) {
lhs.getLocationOnScreen(a);
rhs.getLocationOnScreen(b);
if (a[axis1] != b[axis1]) {
return a[axis1] < b[axis1] ? -1 : 1;
}
if (a[axis2] < b[axis2]) {
return -1;
}
return a[axis2] == b[axis2] ? 0 : 1;
}
}