Ah.. and token was: private static final String TOKEN = " value=\"\"";
2014-06-05 9:42 GMT+03:00 Martin Makundi <martin.maku...@koodaripalvelut.com >: > The optgroup code might be buggy, here is a fresh one: > > private String previouslyAppendedOptGroupLabel; > private int choices; > > /** > * @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(buffer); > } > > 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, getClass(cssClass)); > } > } > > previouslyAppendedOptGroupLabel = currentOptGroupLabel; > } > > buffer.append(tmp); > } > > /** > * @param cssClass > * @return StringBuilder > */ > private StringBuilder getClass(String cssClass) { > return new StringBuilder(" class=\"").append(cssClass).append("\""); > } > > /** > * @see > org.apache.wicket.markup.html.form.AbstractSingleSelectChoice#getDefaultChoice(java.lang.Object) > */ > @Override > protected CharSequence getDefaultChoice(Object selected) { > CharSequence charSequence = super.getDefaultChoice(selected); > > if (charSequence.toString().contains(TOKEN) && (getChoiceRenderer() > instanceof IStyledChoiceRenderer)) { > AppendingStringBuffer buffer = new > AppendingStringBuffer(charSequence); > IStyledChoiceRenderer<T> styledChoiceRenderer = > (IStyledChoiceRenderer<T>) getChoiceRenderer(); > String cssClass = styledChoiceRenderer.getOptionCssClassName(null); > if (!Utils.isEmpty(cssClass)) { > buffer.insert(buffer.indexOf(TOKEN), getClass(cssClass)); > return buffer; > } > } > > return charSequence; > } > > /** > * @param tmp > */ > private void endOptGroup(AppendingStringBuffer tmp) { > // OptGroup ended > int start = tmp.lastIndexOf("</option>"); > tmp.insert(start + 9, "</optgroup>"); > } > > > 2014-06-05 9:37 GMT+03:00 Thies Edeling <tedel...@gmail.com>: > > thanks! >> >> >> On Thu, Jun 5, 2014 at 1:48 AM, Martin Makundi < >> martin.maku...@koodaripalvelut.com> wrote: >> >> > Look at: >> > >> > >> > >> http://mail-archives.apache.org/mod_mbox/wicket-users/200912.mbox/%3c303141550912040641r1e00841dudaacfefda9497...@mail.gmail.com%3E >> > >> > >> > 2014-06-05 1:41 GMT+03:00 Thies Edeling <tedel...@gmail.com>: >> > >> > > Is there any support for optgroup's in Wicket? I can only find some >> > > examples using ListView's and other hacky solutions so I'm guessing >> there >> > > isn't :) Thanks ! >> > > >> > > gr >> > > Thies >> > > >> > >> > >