Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Dúvida em relação a paginação #21

Closed
BADnotice opened this issue Jan 21, 2022 · 4 comments
Closed

Dúvida em relação a paginação #21

BADnotice opened this issue Jan 21, 2022 · 4 comments
Labels
question It's just a question

Comments

@BADnotice
Copy link

Olá, estou com uma dúvida em relação ao setar o item de ir para a próxima página e voltar usando o inventário paginado, como faço para definir eles?

@DevNatan DevNatan added the question It's just a question label Jan 21, 2022
@DevNatan
Copy link
Owner

DevNatan commented Jan 21, 2022

Olá, estou com uma dúvida em relação ao setar o item de ir para a próxima página e voltar usando o inventário paginado, como faço para definir eles?

Você pode definir por View ou globalmente através do ViewFrame.

Definir globalmente fará com que o item seja o mesmo pra todos as Views que você criar.

viewFrame.setDefaultPreviousPageItem((context) -> item(Material.ARROW));
viewFrame.setDefaultNextPageItem((context) -> item(Material.ARROW));

Ou por View, irá se aplicar somente àquela View em específico.

public final class MyView extends View {

    @Override
    public final ViewItem getPreviousPageItem(final ViewContext context) {
        return item(Material.ARROW);
    }

    @Override
    public final ViewItem getPreviousNextItem(final ViewContext context) {
        return item(Material.ARROW);
    }

}

Caso esteja usando uma PaginatedView você pode usar os caracteres < (representa página anterior) ou > (representa próxima página), que os itens serão definidos na sua View sem necessidade de colocação manual.

... no construtor da sua Paginated View
setLayout(
    "XXXXXXXXX"
    "<OOOOOOO>"
    "XXXXXXXXX
)
...

Se você não tiver fazendo uso do layout nem funções de paginação e quiser definir o item manualmente, você pode usar as funções switchToPreviousPage() e switchToNextPage() para tratar da paginação.

... no constructor da sua PaginatedView
lastSlot(new ItemStack(Material.ARROW)).onClick(click -> {
    click.paginated().switchToNextPage();
    click.updateTitle(String.format("Página %d", click.paginated().getPage()));
});
...

As função de click é definida automáticamente

@BADnotice
Copy link
Author

Deu certo obrigado! outra dúvida, tem algum método que só faz aparecer os itens de ir para outra pagina e voltar caso tenha outras paginas?

@DevNatan
Copy link
Owner

Deu certo obrigado! outra dúvida, tem algum método que só faz aparecer os itens de ir para outra pagina e voltar caso tenha outras paginas?

Se você retornar null nas funções de paginação o item some. Você pode usar a extensão paginated() em conjunto de hasPreviousPage() e hasNextPage() pra decidir se vai exibir o item ou não.

Exemplo: o item de "Próxima página" só vai ser exibido se houver uma próxima página.

@Override
public final ViewItem getNextPageItem(final ViewContext context) {
  return context.paginated().hasNextPage() ? item(Material.ARROW) : null;
}

Também funciona com as funções padronizadas.

viewFrame.setDefaultNextPageItem((context) -> {
  return context.paginated().hasNextPage() ? item(Material.ARROW) : null;
});

@BADnotice
Copy link
Author

Se retornar null usando o layout ele não encontra um item e retorna IllegalArgumentException.

Codigo
image

Erro
image

Layout
image

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
question It's just a question
Projects
None yet
Development

No branches or pull requests

2 participants