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]
