El Servicio de Paginación

Truco

Para un entendimiento básico del los servicios, asegúrese de leer primero Servicios.

El PaginationService actúa como una manera de dividir el contenido en páginas discretas. El servicio proporciona un PaginationList.Builder con el que puede especificar atributos como título, contenidos, encabezado y relleno.

Generador de Lista de Paginación

Primero obtenga una instancia de una PaginationList.Builder:

import org.spongepowered.api.service.pagination.PaginationList;

PaginationList.Builder builder = PaginationList.builder();

Hay dos maneras diferentes de especificar el contenido de la lista paginada:

  • Con un 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);

Nota

Si el Iterable es una Lista, es aceptada la navegación bidireccional. De lo contrario, solo es aceptada la navegación hacia adelante.

  • Con un arreglo de Texts

builder.contents(Text.of("Item 1"), Text.of("Item 2"), Text.of("Item 3"));

Puede también especificar varios otros componentes de una lista paginada, como un título, encabezado, pie de página y relleno. El diagrama a continuación muestra como el componente es presentado en cada parte de la lista paginada. En el siguiente diagrama, la cadena de relleno se muestra como la letra p.

pppppppppppppppppppppppp Title pppppppppppppppppppppppp
Header
Item 1
Item 2
Item 3
...
ppppppppppppppppppppppp < 2/3 > ppppppppppppppppppppppp
Footer

Para conseguir la salida anterior, podemos utilizar el siguiente patrón generador:

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"));

Nota

Con la excepción de los contenidos, todos los componentes de la lista paginada son opcionales. Sin embargo, un título es fuertemente recomendado.

Finalmente, al enviar la lista paginada a un MessageReceiver, utilice PaginationList.Builder#sendTo(MessageReceiver).

¡Y eso es! Para recapitular, una lista paginada totalmente funcional podría ser generada y enviada a un msgReceiver previamente definido utilizando el siguiente código:

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