You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@wicket.apache.org by Thies Edeling <te...@gmail.com> on 2014/06/05 00:41:37 UTC
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 ?
Posted by Thies Edeling <te...@gmail.com>.
I just noticed, thanks for the update !
On Thu, Jun 5, 2014 at 8:45 AM, Martin Makundi <
martin.makundi@koodaripalvelut.com> wrote:
> Ah.. and token was:
> private static final String TOKEN = " value=\"\"";
>
>
>
> 2014-06-05 9:42 GMT+03:00 Martin Makundi <
> martin.makundi@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 <te...@gmail.com>:
> >
> > thanks!
> >>
> >>
> >> On Thu, Jun 5, 2014 at 1:48 AM, Martin Makundi <
> >> martin.makundi@koodaripalvelut.com> wrote:
> >>
> >> > Look at:
> >> >
> >> >
> >> >
> >>
> http://mail-archives.apache.org/mod_mbox/wicket-users/200912.mbox/%3C303141550912040641r1e00841dudaacfefda94970b9@mail.gmail.com%3E
> >> >
> >> >
> >> > 2014-06-05 1:41 GMT+03:00 Thies Edeling <te...@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 ?
Posted by Martin Makundi <ma...@koodaripalvelut.com>.
Ah.. and token was:
private static final String TOKEN = " value=\"\"";
2014-06-05 9:42 GMT+03:00 Martin Makundi <martin.makundi@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 <te...@gmail.com>:
>
> thanks!
>>
>>
>> On Thu, Jun 5, 2014 at 1:48 AM, Martin Makundi <
>> martin.makundi@koodaripalvelut.com> wrote:
>>
>> > Look at:
>> >
>> >
>> >
>> http://mail-archives.apache.org/mod_mbox/wicket-users/200912.mbox/%3C303141550912040641r1e00841dudaacfefda94970b9@mail.gmail.com%3E
>> >
>> >
>> > 2014-06-05 1:41 GMT+03:00 Thies Edeling <te...@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 ?
Posted by Martin Makundi <ma...@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 <te...@gmail.com>:
> thanks!
>
>
> On Thu, Jun 5, 2014 at 1:48 AM, Martin Makundi <
> martin.makundi@koodaripalvelut.com> wrote:
>
> > Look at:
> >
> >
> >
> http://mail-archives.apache.org/mod_mbox/wicket-users/200912.mbox/%3C303141550912040641r1e00841dudaacfefda94970b9@mail.gmail.com%3E
> >
> >
> > 2014-06-05 1:41 GMT+03:00 Thies Edeling <te...@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 ?
Posted by Thies Edeling <te...@gmail.com>.
thanks!
On Thu, Jun 5, 2014 at 1:48 AM, Martin Makundi <
martin.makundi@koodaripalvelut.com> wrote:
> Look at:
>
>
> http://mail-archives.apache.org/mod_mbox/wicket-users/200912.mbox/%3C303141550912040641r1e00841dudaacfefda94970b9@mail.gmail.com%3E
>
>
> 2014-06-05 1:41 GMT+03:00 Thies Edeling <te...@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 ?
Posted by Martin Makundi <ma...@koodaripalvelut.com>.
Look at:
http://mail-archives.apache.org/mod_mbox/wicket-users/200912.mbox/%3C303141550912040641r1e00841dudaacfefda94970b9@mail.gmail.com%3E
2014-06-05 1:41 GMT+03:00 Thies Edeling <te...@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
>