lol -igor
On Fri, Dec 4, 2009 at 6:43 AM, nino martinez wael <[email protected]> wrote: > 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] >> >> > --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
