Confirm
Un ConfirmDialog es un diálogo modal diseñado para permitir al usuario elegir una de un conjunto de hasta 3 opciones. El diálogo bloquea la ejecución de la aplicación hasta que el usuario interactúa con él o se cierra debido a un tiempo de espera.
Usos
El ConfirmDialog proporciona una forma de preguntar a los usuarios por confirmación o de elegir entre múltiples opciones, como Sí/No o Aceptar/Cancelar, asegurando que reconozcan y confirmen sus acciones.
Mostrar Código
- ConfirmDialogConstructorView.java
Tipos
Tipo de opción
El ConfirmDialog admite los siguientes tipos de opción, que determinan los botones mostrados en el diálogo:
OK: Muestra un botónOK.OK_CANCEL: Muestra botonesOKyCancelar.ABORT_RETRY_IGNORE: Muestra botonesAbortar,ReintentareIgnorar.YES_NO_CANCEL: Muestra botonesSí,NoyCancelar.YES_NO: Muestra botonesSíyNo.RETRY_CANCEL: Muestra botonesReintentaryCancelar.CUSTOM: Muestra botones personalizados según se especifique.
Tipo de mensaje
El ConfirmDialog admite los siguientes tipos de mensaje. Cuando configuras un tipo, el diálogo muestra un ícono al lado del mensaje y el tema del diálogo se actualiza de acuerdo con las reglas del sistema de diseño de webforJ.
PLAIN: Muestra el mensaje sin un ícono, utilizando el tema predeterminado.ERROR: Muestra un ícono de error junto al mensaje con el tema de error aplicado.QUESTION: Muestra un ícono de signo de interrogación junto al mensaje, utilizando el tema primario.WARNING: Muestra un ícono de advertencia junto al mensaje con el tema de advertencia aplicado.INFO: Muestra un ícono de información junto al mensaje, utilizando el tema de información.
En el siguiente ejemplo, el código configura un diálogo de confirmación del tipo CUSTOM con un título y un mensaje personalizados.
Mostrar Código
- ConfirmDialogOptionsView.java
Resultado
El ConfirmDialog devuelve un resultado basado en la interacción del usuario con el diálogo. Este resultado indica qué botón hizo clic el usuario o si el diálogo fue cerrado debido a un tiempo de espera.
El resultado se devolverá del método show(), o el método equivalente de OptionDialog como se muestra a continuación.
La enumeración ConfirmDialog.Result incluye los siguientes posibles resultados:
OK: El usuario hizo clic en el botónOK.CANCEL: El usuario hizo clic en el botónCANCEL.YES: El usuario hizo clic en el botónYES.NO: El usuario hizo clic en el botónNO.ABORT: El usuario hizo clic en el botónABORT.RETRY: El usuario hizo clic en el botónRETRY.IGNORE: El usuario hizo clic en el botónIGNORE.FIRST_CUSTOM_BUTTON: El usuario hizo clic en el primer botón personalizado.SECOND_CUSTOM_BUTTON: El usuario hizo clic en el segundo botón personalizado.THIRD_CUSTOM_BUTTON: El usuario hizo clic en el tercer botón personalizado.TIMEOUT: El diálogo tiempo de espera.UNKNOWN: Un resultado desconocido, generalmente utilizado como un estado predeterminado o de error.
if (result == ConfirmDialog.Result.FIRST_CUSTOM_BUTTON) {
OptionDialog.showMessageDialog("Cambios descartados", "Descartado", "Entendido");
} else {
OptionDialog.showMessageDialog(
"Cambios guardados", "Guardado", "Entendido", MessageDialog.MessageType.INFO);
}
Botón predeterminado
El ConfirmDialog permite especificar un botón predeterminado que se selecciona automáticamente cuando se muestra el diálogo. Esto mejora la experiencia del usuario al proporcionar una acción sugerida que se puede confirmar rápidamente presionando la tecla Enter.
ConfirmDialog dialog = new ConfirmDialog(
"¿Estás seguro?", "Confirmar", ConfirmDialog.OptionType.YES_NO);
dialog.setDefaultButton(Button.SECOND); // segundo botón
dialog.show();
Texto de botones
Puedes configurar el texto de los botones utilizando el método setButtonText(ConfirmDialog.Button button, String text).
ConfirmDialog dialog = new ConfirmDialog(
"¿Estás seguro?", "Confirmar", ConfirmDialog.OptionType.CUSTOM);
dialog.setButtonText(ConfirmDialog.Button.FIRST, "Absolutamente");
dialog.setButtonText(ConfirmDialog.Button.SECOND, "No");
dialog.show();
Procesamiento de HTML
Por defecto, el diálogo de confirmación procesa y renderiza contenido HTML. Puedes desactivar esta función configurándolo para mostrar texto sin formato en su lugar.
ConfirmDialog dialog = new ConfirmDialog(
"<b>¿Estás seguro?</b>", "Confirmar",
ConfirmDialog.OptionType.YES_NO, ConfirmDialog.MessageType.QUESTION);
dialog.setRawText(true);
dialog.show();
Tiempo de espera
El ConfirmDialog permite establecer una duración de tiempo de espera después de la cual el diálogo se cierra automáticamente. Esta característica es útil para confirmaciones no críticas o acciones que no requieren la interacción inmediata del usuario.
Puedes configurar el tiempo de espera para el diálogo utilizando el método setTimeout(int timeout). La duración del tiempo de espera está en segundos. Si el tiempo especificado transcurre sin ninguna interacción del usuario, el diálogo se cierra automáticamente.
ConfirmDialog dialog = new ConfirmDialog(
"¿Estás seguro?", "Confirmar", ConfirmDialog.OptionType.YES_NO);
dialog.setDefaultButton(Button.SECOND);
dialog.setTimeout(3);
ConfirmDialog.Result result = dialog.show();
switch (result) {
case TIMEOUT:
OptionDialog.showMessageDialog(
"Te tomó demasiado tiempo decidir", "Tiempo de espera", "Entendido",
MessageDialog.MessageType.WARNING);
break;
case YES:
OptionDialog.showMessageDialog(
"Hiciste clic en Sí", "Sí", "Entendido",
MessageDialog.MessageType.INFO);
break;
default:
OptionDialog.showMessageDialog(
"Hiciste clic en No", "No", "Entendido",
MessageDialog.MessageType.INFO);
break;
}
Mejores prácticas
- Prompts claros y concisos: Asegúrate de que el mensaje del aviso explique claramente qué acción se está pidiendo confirmar al usuario. Evita la ambigüedad.
- Tipos de opción apropiados: Elige tipos de opción que coincidan con el contexto de la acción. Para decisiones simples de sí/no, utiliza opciones sencillas. Para escenarios más complejos, proporciona botones adicionales como "Cancelar" para permitir a los usuarios retroceder sin tomar una decisión.
- Botón predeterminado lógico: Establece un botón predeterminado que se alinee con la acción más probable o recomendada para facilitar la toma de decisiones.
- Tematización coherente: Alinea el diálogo y los temas de los botones con el diseño de tu aplicación para una experiencia de usuario cohesionada.
- Uso juicioso del tiempo de espera: Establece tiempos de espera para confirmaciones no críticas, asegurando que los usuarios tengan suficiente tiempo para leer y comprender el aviso.
- Minimizar el uso excesivo: Utiliza diálogos de confirmación con moderación para evitar frustración en el usuario. Resérvalos para acciones críticas que requieran una confirmación explícita del usuario.