Sayfalandırma hizmeti

Tüyo

Hizmetlerin ne olduğuna dair temel bir kavrama için, önce şurayı :doc:`../services`okuyun.

PaginationService, içeriği ayrı sayfalara ayırmanın bir yolu olarak işlev görür. Hizmet, başlık, içerik, üstbilgi ve dolgu gibi nitelikleri belirtebileceğiniz bir PaginationList.Builder sunar.

Sayfalandırma Liste Oluşturucu

Önce bir PaginationList.Builder örneğini edinin:

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

PaginationList.Builder builder = PaginationList.builder();

Sayfalık listenin içeriğini belirlemek için iki farklı yol vardır:

  • Iterable<Text> ile

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

Not

Iterable bir List ise, o zaman çift yönlü navigasyon desteklenir. Aksi takdirde, yalnızca ileri navigasyon desteklenir.

  • Text’lerin dizisi ile

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

Ayrıca, başlık, üstbilgi, altbilgi ve dolgu gibi sayfalandırılmış bir listenin diğer bileşenlerini de belirtebilirsiniz. Aşağıdaki şema, sayfa sıralı listesinin her bölümünde hangi bileşen görüntülendiğini gösterir. Aşağıdaki diyagramda dolgu dize ‘p’ harfi ile gösterilir.

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

Önceki çıktıyı elde etmek için aşağıdaki oluşturucu desenini kullanabiliriz:

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

Not

İçerikler haricinde, sayfalandırılmış listenin tüm bileşenleri isteğe bağlıdır. Bununla birlikte, bir başlık şiddetle tavsiye edilir.

Son olarak, paginated listesini bir MessageReceiver’a göndermek için :javadoc:`PaginationList.Builder#sendTo (MessageReceiver) `.

Ve bu kadar! Tekrar özetlemek için, tamamen işlevli sayfalandırılmış bir liste oluşturulabilir ve aşağıdaki kodu kullanarak önceden tanımlanmış bir msgReceiver’a gönderilebilir:

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