Skip to content

Instantly share code, notes, and snippets.

@jesusbmx
Last active July 27, 2018 20:56
Show Gist options
  • Save jesusbmx/f50819000adbc17244574b00030ac40f to your computer and use it in GitHub Desktop.
Save jesusbmx/f50819000adbc17244574b00030ac40f to your computer and use it in GitHub Desktop.
Proporciona una interfaz de usuario para indicar que un control de un formulario tiene un error asociado al mismo.
import java.awt.Color;
import java.util.HashMap;
import java.util.Map;
import javax.swing.*;
import javax.swing.border.Border;
/**
* Proporciona una interfaz de usuario para indicar que un control de un
* formulario tiene un error asociado al mismo.
*
* @author Jesus
*/
public class ErrorProvider {
private static final Border BORDER_ERROR =
javax.swing.BorderFactory.createLineBorder(Color.RED);
private final Map<JComponent, BorderPart> controls
= new HashMap<JComponent, BorderPart>();
/**
* Obtiene el numero de errores asociados a este componente.
*
* @return int
*/
public int size() {
return controls.size();
}
/**
* Borra todos los valores de configuración asociados a este componente.
*/
public void clear() {
for (Map.Entry<JComponent, BorderPart> entry : controls.entrySet()) {
JComponent control = entry.getKey();
BorderPart part = entry.getValue();
control.setBorder(part.border);
control.setToolTipText(part.oldToolTipText);
}
controls.clear();
}
/**
* Devuelve la cadena de descripción del error actual para el control
* especificado.
*
* @param control
* @return string
*/
public String getError(JComponent control) {
BorderPart part = controls.get(control);
if (part == null) return null;
return part.oldToolTipText;
}
/**
* Establece la cadena de descripción del error para el control especificado.
*
* @param control
* @param error
*/
public void setError(JComponent control, String error) {
if (control == null) return;
Border oldBorder = control.getBorder();
String oldToolTipText = control.getToolTipText();
control.setBorder(BORDER_ERROR);
control.setToolTipText(error);
if (!controls.containsKey(control)) {
controls.put(control, new BorderPart(oldBorder, oldToolTipText));
}
control.requestFocus();
log(control);
}
static void log(JComponent c) {
//Toast t = Toast.makeToast(c, c.getToolTipText(), 3000, Toast.Style.ERROR);
//t.parent().setLocation(c.getLocationOnScreen());
//t.show();
}
public static class BorderPart {
Border border;
String oldToolTipText;
public BorderPart(Border border, String oldToolTipText) {
this.border = border;
this.oldToolTipText = oldToolTipText;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment