Last active
July 27, 2018 20:56
-
-
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.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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