Der Pagination-Service
Tipp
Zum grundsätzlichen Verstehen von Services lies bitte zuerst Dienste.
Der PaginationService ist dazu da, um Inhalt auf mehrere eigenständige Seiten aufzuteilen. Der Service stellt den PaginationList.Builder zur Verfügung, mit dem man Attribute wie Titel, Inhalt, Kopfzeile und Padding festlegen kann.
Pagination List Builder
First obtain an instance of a PaginationList.Builder
:
import org.spongepowered.api.service.pagination.PaginationList;
PaginationList.Builder builder = PaginationList.builder();
Es gibt zwei verschiedene Wege zum Festlegen der Inhalte einer Pagination:
Mit einer
Iterable<Text>
import org.spongepowered.api.text.Text; import java.util.ArrayList; import java.util.List; List<Text> contents = new ArrayList<>(); contents.add(Text.of("Item 1")); contents.add(Text.of("Item 2")); contents.add(Text.of("Item 3")); builder.contents(contents);Bemerkung
If the
Iterable
is aList
, then bidirectional navigation is supported. Otherwise, only forwards navigation is supported.
Mit einem Array von
Text
en
builder.contents(Text.of("Item 1"), Text.of("Item 2"), Text.of("Item 3"));
You can also specify various other components of a paginated list, such as a title, header, footer, and padding. The diagram below shows which component is displayed in each part of the paginated list. In the following diagram, the padding string is shown as the letter p.
pppppppppppppppppppppppp Title pppppppppppppppppppppppp
Header
Item 1
Item 2
Item 3
...
ppppppppppppppppppppppp < 2/3 > ppppppppppppppppppppppp
Footer
To achieve the preceding output, we might use the following builder pattern:
builder.title(Text.of("Title"))
.contents(Text.of("Item 1"), Text.of("Item 2"), Text.of("Item 3"))
.header(Text.of("Header"))
.footer(Text.of("Footer"))
.padding(Text.of("p"));
Bemerkung
Mit Ausnahme der Inhalte sind alle Komponenten der nummerierten Liste optional. Ein Titel wird jedoch dringend empfohlen.
Finally, to send the paginated list to a MessageReceiver, use PaginationList.Builder#sendTo(MessageReceiver).
And that’s it! To recap, a fully functional paginated list could be generated and sent to a previously defined
msgReceiver
using the following code:
PaginationList.builder()
.title(Text.of("Title"))
.contents(Text.of("Item 1"), Text.of("Item 2"), Text.of("Item 3"))
.header(Text.of("Header"))
.footer(Text.of("Footer"))
.padding(Text.of("p"))
.sendTo(msgReceiver);