package org.nocket.component.form.behaviors; import org.apache.commons.lang.StringUtils; import org.apache.wicket.Component; import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.feedback.FeedbackMessage; import org.apache.wicket.markup.ComponentTag; import org.apache.wicket.markup.html.form.FormComponent; import org.apache.wicket.markup.transformer.AbstractTransformerBehavior; // TODO: Auto-generated Javadoc /** * Zeigt ein ?-Image hinter dem fehlerhaften Eingabefeld an. Das Image hat einen * Tooltip, der die Fehlermeldung enthält. * * @author meis026 * */ public class ValidationTooltipStyleBehavior extends AbstractTransformerBehavior { /** The Constant serialVersionUID. */ private static final long serialVersionUID = 1L; /** * Instantiates a new validation tooltip style behavior. */ public ValidationTooltipStyleBehavior() { super(); } /** * Instantiates a new validation tooltip style behavior. * * @param irgendeinWert the irgendein wert */ public ValidationTooltipStyleBehavior(boolean irgendeinWert) { super(); // Mir ist vollkommen unklar, wafür der Paramter ist. Sinn macht er für mich nicht. Aber er wird aus dem Generator mit boolean aufgerufen } /* (non-Javadoc) * @see org.apache.wicket.behavior.Behavior#onComponentTag(org.apache.wicket.Component, org.apache.wicket.markup.ComponentTag) */ @Override public void onComponentTag(Component component, ComponentTag tag) { FormComponent<?> c = (FormComponent<?>) component; if (!c.isValid()) { tag.append("class", "error", " "); } } /* (non-Javadoc) * @see org.apache.wicket.markup.transformer.AbstractTransformerBehavior#transform(org.apache.wicket.Component, java.lang.CharSequence) */ @Override public CharSequence transform(Component component, CharSequence cs) { CharSequence res = cs; FormComponent<?> fc = (FormComponent<?>) component; String span = ""; if (!fc.isValid()) { for (FeedbackMessage message : fc.getFeedbackMessages()) { message.markRendered(); String id = getWicketIdForErrorSpan(component); span = "<span id=\"" + id + "\" class=\"error-icon\">" + "<i class=\"" + ValidationTooltipStyleGroupBehavior.VALIDATION_ERROR_ICON_CLASS + "\" title = \"" + message.getMessage() + "\"></i></span>"; } } res = cs + span; return res; } /** * Gets the wicket id for error span. * * @param component the component * @return the wicket id for error span */ protected String getWicketIdForErrorSpan(Component component) { return component.getId() + "Error"; } /** * Gets the wicket id for error span as j query selector. * * @param component the component * @return the wicket id for error span as j query selector */ protected String getWicketIdForErrorSpanAsJQuerySelector(Component component) { return StringUtils.replace(component.getId(), ".", "\\\\.") + "Error"; } /* (non-Javadoc) * @see org.apache.wicket.behavior.Behavior#onConfigure(org.apache.wicket.Component) */ @Override public void onConfigure(Component component) { super.onConfigure(component); AjaxRequestTarget ajaxRequestTarget = component.getRequestCycle().find(AjaxRequestTarget.class); if (ajaxRequestTarget != null) { ajaxRequestTarget.prependJavaScript("if ($('#" + getWicketIdForErrorSpanAsJQuerySelector(component) + "')) $('#" + getWicketIdForErrorSpanAsJQuerySelector(component) + "').remove();"); } } }