Разбиение на страницы

Совет

Для понимания основ, прочитайте сначала Сервисы.

PaginationService - это способ разделить содержимое на отдельные страницы. Сервис предоставляет PaginationList.Builder, с помощью которого вы можете указать такие атрибуты, как название, содержимое, заголовок и нижний колонтитул.

Строитель разделителя страниц

Сначала получите экземпляр PaginationList.Builder:

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

PaginationList.Builder builder = PaginationList.builder();

Существует два разных способа указать содержимое нумерованного списка:

  • С помощью 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);

Примечание

Если Iterable является List, то поддерживается двунаправленная навигация. В противном случае поддерживается только навигация вперед.

  • С помощью массива Text

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

Вы также можете указать различные другие компоненты разбитого на страницы списка, такие как название, заголовок, нижний колонтитул и отступы. На приведенном ниже примере показано, какой компонент отображается в каждой части разбитого списка. В данном примере строка заполняется буквой p.

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

Для достижения предыдущего примера, вы можете использовать следующий шаблон билдера:

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

Примечание

Все компоненты разбитого списка, за исключением содержимого, являются необязательными. Тем не менее, название настоятельно рекомендуется.

Чтобы отправить разбитый список в MessageReceiver, используйте PaginationList.Builder#sendTo(MessageReceiver).

Вот и все! Напомним, что полностью функциональный разбитый на страницы список, может быть сгенерирован и отправлен в ранее определенный msgReceiver, используя следующий код:

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