You can easily... here is a simple example, you can improvize from there:

public class FeedbackStyler extends AttributeModifier {
  /**
   * @param formComponent
   * @return FormComponent<?>
   */
  public static FormComponent<?> add(FormComponent<?> formComponent) {
    formComponent.add(new FeedbackStyler(formComponent));
    return formComponent;
  }

  /**
   * @param formComponent
   */
  private FeedbackStyler(FormComponent formComponent) {
    this(formComponent, null);
  }

  /**
   * @param formComponent
   * @param defaultStyle
   */
  public FeedbackStyler(FormComponent formComponent, String defaultStyle) {
    super(WebPageConstants.STYLE, true, new
FeedbackStyleModel(formComponent, defaultStyle));
  }

  /**
   * @see 
org.apache.wicket.AttributeModifier#isEnabled(org.apache.wicket.Component)
   */
  @Override
  public boolean isEnabled(Component component) {
    return !Utils.isEmpty((String) getReplaceModel().getObject());
  }
}


public class FeedbackStyleModel extends AbstractReadOnlyModel<String> {
  private final FormComponent<?> formComponent;
  private String defaultStyle;
  private ComponentFeedbackMessageFilter componentFeedbackMessageFilter;

  /**
   * @param formComponent
   * @param defaultStyle
   */
  public FeedbackStyleModel(FormComponent<?> formComponent, String
defaultStyle) {
    this.formComponent = formComponent;
    this.defaultStyle = defaultStyle;
  }

  /**
   * @see org.apache.wicket.model.AbstractReadOnlyModel#getObject()
   */
  @Override
  public String getObject() {
    boolean inError = 0 < TakpSession.get().getFeedbackMessages().messages(
        getComponentFeedbackMessageFilter()).size();

    if (inError) {
      return "border: red solid 1px;" + Utils.noNull(getDefaultStyle());
    }

    return "" + Utils.noNull(getDefaultStyle());
  }

  /**
   * @return IFeedbackMessageFilter
   */
  protected IFeedbackMessageFilter getComponentFeedbackMessageFilter() {
    if (componentFeedbackMessageFilter == null) {
      componentFeedbackMessageFilter = new ComponentFeedbackMessageFilter(
          formComponent);
    }

    return componentFeedbackMessageFilter;
  }

  /**
   * @return the defaultStyle
   */
  public String getDefaultStyle() {
    return defaultStyle;
  }

  /**
   * @param defaultStyle
   *          the defaultStyle to set
   */
  public void setDefaultStyle(String defaultStyle) {
    this.defaultStyle = defaultStyle;
  }
}

**
Martin

2009/1/13 walnutmon <justin.m.boy...@gmail.com>:
>
> This leaves one thing out of the problem though.  Because FeedbackIndicator
> is a panel, it still needs some HTML markup, and I am trying to avoid adding
> a dozens of feedback panels to the markup and java code.  However, I'm also
> confident that there is some way to accomplish this.  I was thinking, you
> could make a custom panel which always includes a feedback component.  But
> that would require me to change all of my add(new TextField(...)); to a
> add(new FeedbackTextField()); and also have to change some of the
> corresponding markup to remove the references to "<input>" instead
> converting them all to "" elements.
>
> Thanks!
> Justin
>
>
>
> Martin Makundi wrote:
>>
>> Hi!
>>
>> There are:
>> * FormComponentFeedbackBorder
>> * FormComponentFeedbackIndicator
>>
>> ... and you can also make your own, it is easy to react to the
>> feedback message status of a component and just make your own effect.
>> Have a look at the source code within the abovementioned...
>>
>> **
>> Martin
>>
>> 2009/1/13 walnutmon <justin.m.boy...@gmail.com>:
>>>
>>> All,
>>>
>>> I have a page with many form components, nearly all of them have some
>>> kind
>>> of validation associated with them.  I have a feedback panel at the top,
>>> I'd
>>> like to move feedback next to each component.  I have thought of some
>>> ways
>>> to do this without changing a ton of code, however none really work in
>>> the
>>> end because I would still need to add some kind of HTML in order to
>>> display
>>> messages.
>>>
>>> Also, nearly everything like this that I have developed in wicket is
>>> usually
>>> accompanied by the discovery that wicket already has the functionality
>>> I'm
>>> looking for out of the box.  Searching has given me surprisingly little
>>> with
>>> regard to this topic though.  Can someone point me in the right
>>> direction?
>>> --
>>> View this message in context:
>>> http://www.nabble.com/Form-Components-With-Built-In-Feedback-tp21443674p21443674.html
>>> Sent from the Wicket - User mailing list archive at Nabble.com.
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>>> For additional commands, e-mail: users-h...@wicket.apache.org
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
>> For additional commands, e-mail: users-h...@wicket.apache.org
>>
>>
>>
>
> --
> View this message in context: 
> http://www.nabble.com/Form-Components-With-Built-In-Feedback-tp21443674p21444965.html
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
> For additional commands, e-mail: users-h...@wicket.apache.org
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org
For additional commands, e-mail: users-h...@wicket.apache.org

Reply via email to