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 pedir a los usuarios 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 opciones, 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 mensajes. Cuando configuras un tipo, el diálogo muestra un ícono junto al 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 por defecto.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 de tipo CUSTOM con un título y 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 se desestimó 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.
El enum ConfirmDialog.Result incluye los siguientes resultados posibles:
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 supera el tiempo de espera.UNKNOWN: Un resultado desconocido, típicamente utilizado como un estado por defecto o de error.
if (result == ConfirmDialog.Result.FIRST_CUSTOM_BUTTON) {
OptionDialog.showMessageDialog("Cambios desechados", "Desechado", "Entendido");
} else {
OptionDialog.showMessageDialog(
"Cambios guardados", "Guardado", "Entendido", MessageDialog.MessageType.INFO);
}
Botón por defecto
El ConfirmDialog permite especificar un botón por defecto que estará preseleccionado cuando se muestre el diálogo. Esto mejora la experiencia del usuario al proporcionar una acción sugerida que puede ser confirmada rápidamente al presionar 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 usando 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 en bruto 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 función es útil para confirmaciones o acciones no críticas que no requieren la interacción inmediata del usuario.
Puedes configurar el tiempo de espera para el diálogo usando 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 tomaste demasiado tiempo para 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
- Indicaciones claras y concisas: Asegúrate de que el mensaje de la indicación explique claramente qué acción se está pidiendo confirmar al usuario. Evita ambigüedades.
- 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, usa 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 por defecto lógico: Establece un botón por defecto que se alinee con la acción más probable o recomendada del usuario para agilizar la toma de decisiones.
- Tematización consistente: Alinea los temas del diálogo y 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 entender la indicación.
- Minimiza el uso excesivo: Usa diálogos de confirmación con moderación para evitar frustraciones en el usuario. Resérvalos para acciones críticas que requieran una confirmación explícita del usuario.