Ahh, me too :/ So anyone able feel free to put this in minis.

2009/12/4 Martin Makundi <[email protected]>

> Busy... sorry. Feel free to put it.
>
> 2009/12/4 nino martinez wael <[email protected]>:
> > Martin, why not put something like this in minis?
> >
> > 2009/12/4 Martin Makundi <[email protected]>
> >
> >> Free4U
> >>
> >> public class DropDownChoiceWithStylingOptions<T> extends
> DropDownChoice<T>
> >> {
> >>  private String previouslyAppendedOptGroupLabel;
> >>  private int choices;
> >>
> >>  /**
> >>   * @param id
> >>   * @param choices
> >>   * @param renderer
> >>   */
> >>  public DropDownChoiceWithStylingOptions(String id,
> >>      IModel<? extends List<? extends T>> choices,
> >>      IChoiceRenderer<? super T> renderer) {
> >>    super(id, choices, renderer);
> >>  }
> >>
> >>  /**
> >>   * @param id
> >>   * @param choices
> >>   */
> >>  public DropDownChoiceWithStylingOptions(String id,
> >>      IModel<? extends List<? extends T>> choices) {
> >>    super(id, choices);
> >>  }
> >>
> >>  /**
> >>   * @param id
> >>   * @param model
> >>   * @param choices
> >>   * @param renderer
> >>   */
> >>  public DropDownChoiceWithStylingOptions(String id, IModel<T> model,
> >>      IModel<? extends List<? extends T>> choices,
> >>      IChoiceRenderer<? super T> renderer) {
> >>    super(id, model, choices, renderer);
> >>  }
> >>
> >>  /**
> >>   * @param id
> >>   * @param model
> >>   * @param choices
> >>   */
> >>  public DropDownChoiceWithStylingOptions(String id, IModel<T> model,
> >>      IModel<? extends List<? extends T>> choices) {
> >>    super(id, model, choices);
> >>  }
> >>
> >>  /**
> >>   * @param id
> >>   * @param model
> >>   * @param data
> >>   * @param renderer
> >>   */
> >>  public DropDownChoiceWithStylingOptions(String id, IModel<T> model,
> >>      List<? extends T> data, IChoiceRenderer<? super T> renderer) {
> >>    super(id, model, data, renderer);
> >>  }
> >>
> >>  /**
> >>   * @param id
> >>   * @param model
> >>   * @param choices
> >>   */
> >>  public DropDownChoiceWithStylingOptions(String id, IModel<T> model,
> >>      List<? extends T> choices) {
> >>    super(id, model, choices);
> >>  }
> >>
> >>  /**
> >>   * @param id
> >>   * @param data
> >>   * @param renderer
> >>   */
> >>  public DropDownChoiceWithStylingOptions(String id, List<? extends T>
> data,
> >>      IChoiceRenderer<? super T> renderer) {
> >>    super(id, data, renderer);
> >>  }
> >>
> >>  /**
> >>   * @param id
> >>   * @param choices
> >>   */
> >>  public DropDownChoiceWithStylingOptions(String id, List<? extends T>
> >> choices) {
> >>    super(id, choices);
> >>  }
> >>
> >>  /**
> >>   * @param id
> >>   */
> >>  public DropDownChoiceWithStylingOptions(String id) {
> >>    super(id);
> >>  }
> >>
> >>  /**
> >>   * @see
> >>
> org.apache.wicket.markup.html.form.AbstractChoice#onComponentTagBody(org.apache.wicket.markup.MarkupStream,
> >> org.apache.wicket.markup.ComponentTag)
> >>   */
> >>  @Override
> >>  protected void onComponentTagBody(MarkupStream markupStream,
> >>      ComponentTag openTag) {
> >>    previouslyAppendedOptGroupLabel = null;
> >>    choices = getChoices().size();
> >>    super.onComponentTagBody(markupStream, openTag);
> >>  }
> >>
> >>  /**
> >>   * @see
> >>
> org.apache.wicket.markup.html.form.AbstractChoice#appendOptionHtml(org.apache.wicket.util.string.AppendingStringBuffer,
> >> java.lang.Object, int, java.lang.String)
> >>   */
> >>  @Override
> >>  protected void appendOptionHtml(AppendingStringBuffer buffer, T choice,
> >>      int index, String selected) {
> >>    AppendingStringBuffer tmp = new AppendingStringBuffer(50);
> >>    super.appendOptionHtml(tmp, choice, index, selected);
> >>
> >>    if (getChoiceRenderer() instanceof IStyledChoiceRenderer) {
> >>      IStyledChoiceRenderer<T> styledChoiceRenderer =
> >> (IStyledChoiceRenderer<T>) getChoiceRenderer();
> >>
> >>      String currentOptGroupLabel =
> >> styledChoiceRenderer.getOptGroupLabel(choice);
> >>
> >>      if (!Utils.equalsOrNull(currentOptGroupLabel,
> >> previouslyAppendedOptGroupLabel)) {
> >>        // OptGroup changed
> >>        if (previouslyAppendedOptGroupLabel != null) {
> >>          endOptGroup(tmp);
> >>        }
> >>        if (currentOptGroupLabel != null) {
> >>          // OptGroup started
> >>          int start = tmp.indexOf("<option");
> >>          StringBuilder label = new
> >> StringBuilder(currentOptGroupLabel.length() + 19);
> >>          label.append("<optgroup
> >> label=\"").append(currentOptGroupLabel).append("\">");
> >>          tmp.insert(start, label);
> >>        }
> >>      }
> >>
> >>      if ((currentOptGroupLabel != null) && (index == (choices-1))) {
> >>        // Last option group must end too
> >>        endOptGroup(tmp);
> >>      }
> >>
> >>      {
> >>        String cssClass =
> >> styledChoiceRenderer.getOptionCssClassName(choice);
> >>        if (cssClass != null) {
> >>          int start = tmp.indexOf("<option");
> >>          tmp.insert(start + 7, new StringBuilder("
> >> class=\"").append(cssClass).append("\""));
> >>        }
> >>      }
> >>
> >>      previouslyAppendedOptGroupLabel = currentOptGroupLabel;
> >>    }
> >>
> >>    buffer.append(tmp);
> >>  }
> >>
> >>  /**
> >>   * @param tmp
> >>   */
> >>  private void endOptGroup(AppendingStringBuffer tmp) {
> >>    // OptGroup ended
> >>    int start = tmp.indexOf("</option>");
> >>    tmp.insert(start + 9, "</optgroup>");
> >>  }
> >> }
> >>
> >>
> >>
> >> public interface IStyledChoiceRenderer<T> extends IChoiceRenderer<T> {
> >>  /**
> >>   * @param t
> >>   * @return String
> >>   */
> >>  public String getOptGroupLabel(T t);
> >>
> >>  /**
> >>   * @param t
> >>   * @return String
> >>   */
> >>  public String getOptionCssClassName(T t);
> >> }
> >>
> >> ---------------------------------------------------------------------
> >> To unsubscribe, e-mail: [email protected]
> >> For additional commands, e-mail: [email protected]
> >>
> >>
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [email protected]
> For additional commands, e-mail: [email protected]
>
>

Reply via email to