Le Service de Pagination
Astuce
Pour une compréhension simple des services, assurez-vous de lire Services tout d’abord.
Le PaginationService agit de manière à séparer un contenu en pages discrètes. Le service fournit une classe PaginationList.Builder avec laquelle vous pouvez spécifier des attributs tels qu’un titre, des contenus, des entêtes, et des marges.
Pagination List Builder
Tout d’abord, obtenez une instance de PaginationList.Builder
:
import org.spongepowered.api.service.pagination.PaginationList;
PaginationList.Builder builder = PaginationList.builder();
Il y a deux manières de spécifier les contenus d’une liste paginée:
En utilisant l’interface
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);Note
Si l”
Iterable
est une classeList
, alors la navigation bidirectionnelle est supportée. Autrement, seule la navigation vers l’avant est supportée.
Avec un tableau de
Text
s
builder.contents(Text.of("Item 1"), Text.of("Item 2"), Text.of("Item 3"));
Vous pouvez aussi spécifier divers autres composants d’une liste paginée, tels qu’un titre, un entête, un pied de page, une marge. Le diagramme ci-dessous montre quel composant est affiché dans chaque partie de la liste paginée. Dans ce diagramme, la chaîne de caractères formant la marge est représentée par la lettre p.
pppppppppppppppppppppppp Title pppppppppppppppppppppppp
Header
Item 1
Item 2
Item 3
...
ppppppppppppppppppppppp < 2/3 > ppppppppppppppppppppppp
Footer
Pour accomplir l’affichage précédent, il faudrait s’y prendre de cette manière:
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"));
Note
A l’exception des contenus, tous les composants d’une liste paginée sont optionnels. Néanmoins, il est fortement recommandé de donner un titre.
Finalement, pour envoyer la liste paginée à un MessageReceiver, utilisez PaginationList.Builder#sendTo(MessageReceiver).
Et c’est tout ! Pour récapituler, une liste paginée pleinement fonctionnelle pourrait être générée et envoyée à un msgReceiver
, précédemment défini, en utilisant le code suivant :
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);