Pular para o conteúdo
CrossFly é 100% open sourceSiga no GitHub
CrossFlyCrossFly
Começar

FilePicker

🔴 · Pacote: dev.crossfly.ui.picker · Estende: Picker · Status: reservado (indisponível)

FilePicker está reservado na API 2026: no código atual é apenas um esqueleto vazio —

public class FilePicker extends Picker {}

— sem construtores, campos, layout ou getAnswer() próprio. Ele herda o getAnswer() da base (Picker), que devolve null; portanto não produz resultado e não deve ser usado.

Exemplo completo (copiar, colar e rodar)

FilePicker está reservado e não produz resultado (herda getAnswer() da base, que devolve null). O exemplo abaixo é executável e demonstra honestamente essa limitação: ele mostra o picker, coleta o getAnswer() e reporta que veio null. Para escolher mídia de fato, o botão ao lado usa a alternativa disponível, PhotoPicker.

package com.exemplo;

import dev.crossfly.ui.*;
import dev.crossfly.ui.layout.*;
import dev.crossfly.ui.picker.*;

/** Tela principal executável. Aponte o launcher (classname) e rode: gradlew :lwjgl3:run */
public class MainWindow extends Window
{
   @Override
   public void onShow() throws Exception
   {
      super.onShow();
      setLayout(new VerticalLayout());

      Label saida = new Label("Resultado: —");
      add(LAY_AUTO, saida);

      // FilePicker é um esqueleto reservado: getAnswer() sempre devolve null.
      Button tentarFilePicker = new Button("Tentar FilePicker (reservado)")
         .onAction(c ->
         {
            FilePicker fp = new FilePicker();
            fp.show(answer ->
               saida.setText("FilePicker devolveu: " + answer + " (reservado, sem resultado)"));
         });
      add(LAY_AUTO, tentarFilePicker);

      // Alternativa real para capturar mídia: PhotoPicker.
      Button usarPhotoPicker = new Button("Alternativa: PhotoPicker")
         .onAction(c ->
         {
            PhotoPicker pp = new PhotoPicker(PhotoPicker.Preview.PHOTO);
            pp.show(answer ->
            {
               String caminho = (String) answer;
               if (pp.isError())
                  saida.setText("Erro de câmera: " + caminho);
               else
                  saida.setText("Foto salva em: " + caminho);
            });
         });
      add(LAY_AUTO, usarPhotoPicker);
   }
}

Os trechos abaixo mostram só o miolo (o que vai dentro de onShow()). Para rodar, coloque-os no esqueleto MainWindow acima.

Objetivo pretendido

Navegar o sistema de arquivos e devolver o caminho do arquivo/pasta selecionado. O comentário no fonte indica a intenção de migrar de um seletor baseado em árvore lazy a partir de um root — mas isso ainda não foi portado.

O que NÃO existe (não documente como disponível)

A implementação anterior (árvore lazy com Tree/TreeModel, preview de imagem, volumes via Dropdown, seleção múltipla) foi removida, coerente com a remoção do módulo ui/tree na modernização. As APIs antigas — Filter, initialPath, multipleSelection, mountTree, getTree, etc. — não existem mais.

Alternativas enquanto está reservado

  • Para capturar mídia da câmera, use PhotoPicker.
  • Para escolher uma cor/data/hora, use os pickers específicos.
  • Trate FilePicker como indisponível até o código ganhar corpo.

Veja também

Esta página foi útil?