1a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultzpackage com.xtremelabs.robolectric.shadows;
2a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz
3a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultzimport android.widget.AbsListView;
4a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultzimport com.xtremelabs.robolectric.internal.Implementation;
5a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultzimport com.xtremelabs.robolectric.internal.Implements;
6a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz
7a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz@Implements(AbsListView.class)
8a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultzpublic class ShadowAbsListView extends ShadowAdapterView {
9a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    private AbsListView.OnScrollListener onScrollListener;
10bce55849637b8c2b2805c2519aa0087a93193629Tyler Schultz & Wei Wu    private int smoothScrolledPosition;
11fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu    private int lastSmoothScrollByDistance;
12fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu    private int lastSmoothScrollByDuration;
13a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz
14a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    @Implementation
15a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    public void setOnScrollListener(AbsListView.OnScrollListener l) {
16a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz        onScrollListener = l;
17a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    }
18bce55849637b8c2b2805c2519aa0087a93193629Tyler Schultz & Wei Wu
19bce55849637b8c2b2805c2519aa0087a93193629Tyler Schultz & Wei Wu    @Implementation
20bce55849637b8c2b2805c2519aa0087a93193629Tyler Schultz & Wei Wu    public void smoothScrollToPosition(int position) {
21bce55849637b8c2b2805c2519aa0087a93193629Tyler Schultz & Wei Wu        smoothScrolledPosition = position;
22bce55849637b8c2b2805c2519aa0087a93193629Tyler Schultz & Wei Wu    }
23a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz
24fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu    @Implementation
25fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu    public void smoothScrollBy(int distance, int duration) {
26fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu        this.lastSmoothScrollByDistance = distance;
27fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu        this.lastSmoothScrollByDuration = duration;
28fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu    }
29fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu
30a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    /**
31a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz     * Robolectric accessor for the onScrollListener
32a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz     *
33a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz     * @return AbsListView.OnScrollListener
34a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz     */
35a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    public AbsListView.OnScrollListener getOnScrollListener() {
36a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz        return onScrollListener;
37a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz    }
38fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu
39bce55849637b8c2b2805c2519aa0087a93193629Tyler Schultz & Wei Wu    /**
40bce55849637b8c2b2805c2519aa0087a93193629Tyler Schultz & Wei Wu     * Robolectric accessor for the last smoothScrolledPosition
41bce55849637b8c2b2805c2519aa0087a93193629Tyler Schultz & Wei Wu     *
42bce55849637b8c2b2805c2519aa0087a93193629Tyler Schultz & Wei Wu     * @return int position
43bce55849637b8c2b2805c2519aa0087a93193629Tyler Schultz & Wei Wu     */
44bce55849637b8c2b2805c2519aa0087a93193629Tyler Schultz & Wei Wu    public int getSmoothScrolledPosition() {
45bce55849637b8c2b2805c2519aa0087a93193629Tyler Schultz & Wei Wu        return smoothScrolledPosition;
46bce55849637b8c2b2805c2519aa0087a93193629Tyler Schultz & Wei Wu    }
47fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu
48fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu    /**
49fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu     * Robolectric accessor for the last smoothScrollBy distance
50fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu     *
51fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu     * @return int distance
52fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu     */
53fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu    public int getLastSmoothScrollByDistance() {
54fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu        return lastSmoothScrollByDistance;
55fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu    }
56fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu
57fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu    /**
58fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu     * Robolectric accessor for the last smoothScrollBy duration
59fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu     *
60fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu     * @return int duration
61fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu     */
62fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu    public int getLastSmoothScrollByDuration() {
63fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu        return lastSmoothScrollByDuration;
64fa9dda6c0cfa7389dfe7a8022c0305f0868730e5Tyler Schultz & Wei Wu    }
65a739b57a6b1a99f14d586f609f0f62f48b8e2284Ian Fisher & Tyler Schultz}
66