List icon Conteúdo

Diálogos

Este guia mostra como lidar com JavaScript, Abrir/Salvar Arquivo, Cor, Certificados de Cliente e outras caixas de diálogo.

Você pode tratar as caixas de diálogo de forma programática utilizando a API JxBrowser descrita neste guia.

Existem diferentes tipos de diálogos. Quando o diálogo de um tipo específico deve ser apresentado, é invocada a chamada de retorno correspondente. Se a chamada de retorno não for registada, a caixa de diálogo será automaticamente fechada como se o usuário tivesse clicado no botão Cancelar da caixa de diálogo.

Durante a instanciação do BrowserView, a instância do Browser será configurada com as implementações de callback padrão para cada diálogo. A implementação padrão apresenta a caixa de diálogo utilizando a funcionalidade UI-toolkit correspondente.

Diálogos JavaScript

Alert

Quando uma caixa de diálogo de alerta JavaScript deve ser exibida, a chamada de retorno AlertCallback é invocada. Isso acontece quando a função JavaScript window.alert() é chamada.

Nesta chamada de retorno, você pode obter os parâmetros da caixa de diálogo, como o título, a mensagem e o texto localizado da ação “OK”. Quando o diálogo é fechado tell.ok() deve ser chamado. Por exemplo:

Java
Kotlin
browser.set(AlertCallback.class, (params, tell) -> {
    // Título do diálogo.
    var title = params.title();
    // Mensagem de diálogo.
    var message = params.message();
    // O texto localizado da ação de retorno de chamada "OK".
    var okActionText = params.okActionText();
    // Crie e exiba a caixa de diálogo, se necessário.
    // A caixa de diálogo foi fechada.
    tell.ok();
});
browser.register(AlertCallback { params, tell ->
    // Título do diálogo.
    val title = params.title()
    // Mensagem de diálogo.
    val message = params.message()
    // O texto localizado da ação de retorno de chamada "OK".
    val okActionText = params.okActionText()
    // Criar e apresentar a caixa de diálogo, se necessário.
    // O diálogo foi fechado.
    tell.ok()
})

A execução do JavaScript será bloqueada até que a caixa de diálogo Alerta seja fechada.

Confirm

Quando uma caixa de diálogo de confirmação JavaScript deve ser exibida, a chamada de retorno ConfirmCallback é invocada. Isso acontece quando a função JavaScript window.confirm() é chamada.

Nesta chamada de retorno pode obter os parâmetros da caixa de diálogo, como o título, a mensagem, o texto localizado das ações “Sim” e “Não”. Quando o diálogo é fechado tell.ok() ou tell.cancel() deve ser chamado. Por exemplo:

Java
Kotlin
browser.set(ConfirmCallback.class, (params, tell) -> {
    // Título do diálogo.
    var title = params.title();
    // Mensagem de diálogo.
    var message = params.message();
    // O texto localizado da ação "OK".
    var okActionText = params.okActionText();
    // O texto localizado da ação "Cancelar".
    var cancelActionText = params.cancelActionText();
    // A ação "OK" foi selecionada.
    tell.ok();
});
browser.register(ConfirmCallback { params, tell ->
    // Título do diálogo.
    val title = params.title()
    // Mensagem de diálogo.
    val message = params.message()
    // O texto localizado da ação "OK".
    val okActionText = params.okActionText()
    // O texto localizado da ação "Cancelar".
    val cancelActionText = params.cancelActionText()
    // A ação "OK" foi selecionada.
    tell.ok()
})

A execução do JavaScript será bloqueada até que a caixa de diálogo Confirmar seja fechada.

Prompt

Quando uma caixa de diálogo de prompt JavaScript deve ser exibida, a chamada de retorno PromptCallback é invocada. Isso acontece quando a função JavaScript window.prompt() é chamada.

Nesta chamada de retorno pode obter os parâmetros da caixa de diálogo, como o título, a mensagem, o texto, o texto localizado das acções “OK” e “Cancelar”. Quando o diálogo é fechado tell.ok(String) ou tell.cancel() deve ser chamado. Por exemplo:

Java
Kotlin
browser.set(PromptCallback.class, (params, tell) -> {
    // Título do diálogo.
    var title = params.title();
    // Mensagem de diálogo.
    var message = params.message();
    // O texto localizado da ação "OK".
    var okActionText = params.okActionText();
    // O texto localizado da ação "Cancelar".
    var cancelActionText = params.cancelActionText();
    // Foi introduzido um texto e foi selecionada a ação "OK".
    tell.ok("Entered text");
});
browser.register(PromptCallback { params, tell ->
    // Título do diálogo.
    val title = params.title()
    // Mensagem de diálogo.
    val message = params.message()
    // O texto localizado da ação "OK".
    val okActionText = params.okActionText()
    // O texto localizado da ação "Cancelar".
    val cancelActionText = params.cancelActionText()
    //  Foi introduzido um texto e foi selecionada a ação "OK".
    tell.ok("Entered text")
})

A execução do JavaScript será bloqueada até que a caixa de diálogo Prompt seja fechada.

BeforeUnload

O evento onbeforeunload é disparado quando a página web está prestes a ser descarregada. Este evento lhe permite apresentar uma mensagem numa caixa de diálogo de confirmação para informar ao usuário se deseja ficar ou sair da página atual.

A chamada de retorno BeforeUnloadCallback é invocada, quando o diálogo de confirmação deve ser exibido. Nesta chamada de retorno pode obter os parâmetros da caixa de diálogo, como o título, a mensagem, o texto localizado das ações “Ficar” e “Sair”. Quando o diálogo é fechado, tell.stay() ou tell.leave() deve ser chamado. Por exemplo:

Java
Kotlin
browser.set(BeforeUnloadCallback.class, (params, tell) -> {
    // Título do diálogo.
    var title = params.title();
    // Mensagem de diálogo.
    var message = params.message();
    // O texto localizado da ação "Ficar".
    var stayActionText = params.stayActionText();
    // O texto localizado da ação "Sair".
    var leaveActionText = params.leaveActionText();
    // A ação "Ficar" foi selecionada.
    tell.stay();
});
browser.register(BeforeUnloadCallback { params, tell ->
    // Título do diálogo.
    val title = params.title()
    // Mensagem de diálogo.
    val message = params.message()
    // O texto localizado da ação "Ficar".
    val stayActionText = params.stayActionText()
    // O texto localizado da ação "Sair".
    val leaveActionText = params.leaveActionText()
    // A ação "Ficar" foi selecionada.
    tell.stay()
})

Esta chamada de retorno não será invocada ao fechar a instância Browser via Browser.close().

Se você deseja apresentar a caixa de diálogo ao fechar o Browser, feche o Browser utilizando a seguinte abordagem:

Java
Kotlin
browser.close(CloseOptions.newBuilder().fireBeforeUnload().build());
browser.close(fireBeforeUnload = true)

Selecionar cor

Quando uma cor deve ser selecionada, é invocada uma chamada de retorno SelectColorCallback. Acontece quando um utilizador clica no elemento input com o tipo color:

<input type="color" value="#ff0000">

Nesta chamada de retorno, pode obter os parâmetros da caixa de diálogo, como a cor padrão. Quando o diálogo é fechado tell.select(Color) ou tell.cancel() deve ser chamado. Por exemplo:

Java
Kotlin
browser.set(SelectColorCallback.class, (params, tell) -> {
    // A cor padrão.
    var defaultColor = params.defaultColor();
    // A cor selecionada.
    var selectedColor = Color.newBuilder()
        .red(1.0f)
        .green(1.0f)
        .blue(1.0f)
        .build();
    // Esta cor foi selecionada.
    tell.select(selectedColor);
});
browser.register(SelectColorCallback { params, tell ->
    // A cor padrão.
    val defaultColor = params.defaultColor()
    // A cor selecionada.
    val selectedColor = Color(red = 1.0f, green = 1.0f, blue = 1.0f)
    // Esta cor foi selecionada.
    tell.select(selectedColor)
})

Abrir Arquivo

Quando uma página Web deseja que o usuário escolha um arquivo do seu dispositivo de armazenamento, é invocada a chamada de retorno OpenFileCallback. Acontece quando o usuário clica no elemento input com o tipo file:

<input type="file" accept="image/png, image/jpeg">

Nesta chamada de retorno, pode obter os parâmetros da caixa de diálogo, como o nome do arquivo padrão, as extensões de arquivo aceitáveis e a descrição das extensões de arquivo aceitáveis. Quando o diálogo é fechado tell.open(Path) ou tell.cancel() devem ser chamados. Por exemplo:

Java
Kotlin
browser.set(OpenFileCallback.class, (params, tell) -> {
    // O diretório sugerido.
    var suggestedDirectory = params.suggestedDirectory();
    // Extensões aceitáveis.
    var acceptableExtensions = params.acceptableExtensions();
    // Este arquivo deve ser aberto.
    tell.open(Paths.get("<path-to-selected-file>"));
});
browser.register(OpenFileCallback { params, tell ->
    // O nome do arquivo padrão.
    val suggestedDirectory = params.suggestedDirectory()
    // Extensões aceitáveis.
    val acceptableExtensions: List<String> = params.acceptableExtensions()
    // Este arquivo deve ser aberto.
    tell.open(Path("<path-to-selected-file>"))
})

Abrir Arquivos

Quando uma página Web pretende que o usuário escolha vários arquivos do seu dispositivo de armazenamento, é invocada a chamada de retorno OpenFilesCallback. Acontece quando o usuário clica no elemento input com o tipo file e o atributo multiple:

<input type="file" accept="image/png, image/jpeg" multiple>

Nesta chamada de retorno, você pode obter os parâmetros da caixa de diálogo, como o nome do arquivo padrão, as extensões de arquivo aceitáveis e a descrição das extensões de arquivo aceitáveis. Quando o diálogo é fechado tell.open(Path...) ou tell.cancel() deve ser chamado. Por exemplo:

Java
Kotlin
browser.set(OpenFilesCallback.class, (params, tell) -> {
    // Extensões aceitáveis.
    var acceptableExtensions = params.acceptableExtensions();
    var file1 = Paths.get("<path-to-selected-file1>");
    var file2 = Paths.get("<path-to-selected-file2>");
    // Estes arquivos devem ser abertos.
    tell.open(file1, file2);
});
browser.register(OpenFilesCallback { params, tell ->
    // Extensões aceitáveis.
    val acceptableExtensions: List<String> = params.acceptableExtensions()
    val file1 = Path("<path-to-selected-file1>")
    val file2 = Path("<path-to-selected-file2>")
    // Estes arquivos devem ser abertos.
    tell.open(file1, file2)
})

Abrir a pasta

Quando o Chromium deseja que o usuário escolha uma pasta do armazenamento do seu dispositivo, é invocada a chamada de retorno OpenFolderCallback.

Se necessário, é possível criar e apresentar uma caixa de diálogo onde o usuário pode selecionar a pasta. Quando o diálogo é fechado tell.open(Path) ou tell.cancel() deve ser chamado. Por exemplo:

Java
Kotlin
browser.set(OpenFolderCallback.class, (params, tell) -> {
    // Esta pasta deve ser aberta.
    tell.open(Paths.get("<path-to-folder>"));
});
browser.register(OpenFolderCallback { params, tell ->
    // Esta pasta deve ser aberta.
    tell.open(Path("<path-to-folder>"))
})

Salvar como PDF

Ao salvar uma página da Web como documento PDF através da caixa de diálogo Prévia de Impressão a chamada de retorno SaveAsPdfCallback é invocada.

Nesta chamada de retorno, é possível obter os parâmetros da caixa de diálogo, como o nome do arquivo padrão. Quando o diálogo é fechado, tell.save(Path) ou tell.cancel() deve ser chamado. Por exemplo:

Java
Kotlin
browser.set(SaveAsPdfCallback.class, (params, tell) -> {
    // O nome do arquivo sugerido.
    var suggestedFileName = params.suggestedFileName();
    // Este arquivo deve ser salvo.
    tell.save(Paths.get("<path-to-file>"));
});
browser.register(SaveAsPdfCallback { params, tell ->
    // O nome do arquivo padrão.
    val suggestedFileName = params.suggestedFileName()
    // Este arquivo deve ser salvo.
    tell.save(Path("<path-to-file>"))
})

Selecionar Certificado de Cliente

Quando o Chromium quer que o usuário selecione um certificado SSL do cliente a partir da lista de certificados disponíveis, é invocada a chamada de retorno SelectClientCertificateCallback.

Nesta chamada de retorno, você pode obter os parâmetros da caixa de diálogo, tais como o título da caixa de diálogo, a mensagem, o texto localizado das ações “Selecionar” e “Cancelar” e a lista de certificados disponíveis.

Quando o diálogo é fechado tell.select(int) ou tell.cancel() deve ser chamado. Por exemplo:

Java
Kotlin
browser.set(SelectClientCertificateCallback.class, (params, tell) -> {
    // O título da caixa de diálogo.
    var title = params.title();
    // A mensagem de diálogo.
    var message = params.message();
    // O texto localizado da ação "Selecionar".
    var selectActionText = params.selectActionText();
    // O texto localizado da ação "Cancelar".
    var cancelActionText = params.cancelActionText();
    // Certificados SSL disponíveis.
    var certificates = params.certificates();
    // O índice do último certificado da lista.
    var certificateIndex = certificates.size() - 1;
    // O último certificado da lista foi selecionado.
    tell.select(certificateIndex);
});
browser.register(SelectClientCertificateCallback { params, tell ->
    // O título da caixa de diálogo.
    val title = params.title()
    // A mensagem de diálogo.
    val message = params.message()
    // O texto localizado da ação "Selecionar".
    val selectActionText = params.selectActionText()
    // O texto localizado da ação "Cancelar".
    val cancelActionText = params.cancelActionText()
    // Certificados SSL disponíveis.
    val certificates = params.certificates()
    // O índice do último certificado da lista.
    val certificateIndex = certificates.size - 1
    // O último certificado da lista foi selecionado.
    tell.select(certificateIndex)
})

Abrir aplicação externa

Quando uma página Web deseja abrir um link na aplicação externa associada, é invocada a chamada de retorno OpenExternalAppCallback.

Nesta chamada de retorno, você pode obter o título da caixa de diálogo localizada, a mensagem e o texto das ações “Abrir” e “Cancelar”. É possível apresentar uma caixa de diálogo aos usuários finais para que estes decidam se o link pode ser aberto ou abrir a aplicação externa de forma programática, como se mostra no exemplo abaixo:

Java
Kotlin
browser.set(OpenExternalAppCallback.class, (params, tell) -> tell.open());
browser.register(OpenExternalAppCallback { params, tell ->
    tell.open()
})

Por padrão, os requests de abertura de uma aplicação externa são cancelados.

Se você criar um controle BrowserView e o incorporar na sua aplicação JavaFX, Swing, SWT, será registada a implementação específica UI-toolkit padrão da chamada de retorno. Os usuários finais verão a seguinte caixa de diálogo:

Abrir diálogo de aplicação externa