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