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] > >
