DREAMFIRE Docs ← Back to site
Loading...
Searching...
No Matches
Pagination.java
Go to the documentation of this file.
1package com.dreamfirestudios.dreamcore.DreamSmartInvs.content;
2
3import com.dreamfirestudios.dreamcore.DreamSmartInvs.ClickableItem;
4
5import java.util.Arrays;
6
7public interface Pagination {
8
10
11 int getPage();
13
14 boolean isFirst();
15 boolean isLast();
16
21
23
25 Pagination setItemsPerPage(int itemsPerPage);
26
27
28 class Impl implements Pagination {
29
30 private int currentPage;
31
32 private ClickableItem[] items = new ClickableItem[0];
33 private int itemsPerPage = 5;
34
35 @Override
37 return Arrays.copyOfRange(items,
38 currentPage * itemsPerPage,
39 (currentPage + 1) * itemsPerPage);
40 }
41
42 @Override
43 public int getPage() {
44 return this.currentPage;
45 }
46
47 @Override
48 public Pagination page(int page) {
49 this.currentPage = page;
50 return this;
51 }
52
53 @Override
54 public boolean isFirst() {
55 return this.currentPage == 0;
56 }
57
58 @Override
59 public boolean isLast() {
60 int pageCount = (int) Math.ceil((double) this.items.length / this.itemsPerPage);
61 return this.currentPage >= pageCount - 1;
62 }
63
64 @Override
65 public Pagination first() {
66 this.currentPage = 0;
67 return this;
68 }
69
70 @Override
72 if(!isFirst())
73 this.currentPage--;
74
75 return this;
76 }
77
78 @Override
79 public Pagination next() {
80 if(!isLast())
81 this.currentPage++;
82
83 return this;
84 }
85
86 @Override
87 public Pagination last() {
88 this.currentPage = this.items.length / this.itemsPerPage;
89 return this;
90 }
91
92 @Override
94 for(ClickableItem item : getPageItems()) {
95 iterator.next().set(item);
96
97 if(iterator.ended())
98 break;
99 }
100
101 return this;
102 }
103
104 @Override
106 this.items = items;
107 return this;
108 }
109
110 @Override
111 public Pagination setItemsPerPage(int itemsPerPage) {
112 this.itemsPerPage = itemsPerPage;
113 return this;
114 }
115
116 }
117
118}