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 classe List, alors la navigation bidirectionnelle est supportée. Autrement, seule la navigation vers l’avant est supportée.

  • Avec un tableau de Texts

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 mgsReceiver, 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);