Re: Support for optgroup ?
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
Re: Support for optgroup ?
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) { IStyledChoiceRendererT styledChoiceRenderer = (IStyledChoiceRendererT) 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); IStyledChoiceRendererT styledChoiceRenderer = (IStyledChoiceRendererT) 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
Re: Support for optgroup ?
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) { IStyledChoiceRendererT styledChoiceRenderer = (IStyledChoiceRendererT) 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); IStyledChoiceRendererT styledChoiceRenderer = (IStyledChoiceRendererT) 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
Re: Support for optgroup ?
I just noticed, thanks for the update ! On Thu, Jun 5, 2014 at 8:45 AM, Martin Makundi martin.maku...@koodaripalvelut.com wrote: 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) { IStyledChoiceRendererT styledChoiceRenderer = (IStyledChoiceRendererT) 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); IStyledChoiceRendererT styledChoiceRenderer = (IStyledChoiceRendererT) 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
Support for optgroup ?
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
Re: Support for optgroup ?
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