in empire-db-jakarta-faces/src/main/java/org/apache/empire/jakarta/controls/RadioInputControl.java [195:251]
public void syncOptions(HtmlSelectOneRadio input, TextResolver textResolver, Options options, boolean hasEmpty, String nullText)
{
// Compare child-items with options
Iterator<OptionEntry> ioe = options.iterator();
OptionEntry oe = (ioe.hasNext() ? ioe.next() : null);
List<UIComponent> childList = input.getChildren();
Iterator<UIComponent> ico = childList.iterator();
int lastIndex = 0;
while (ico.hasNext())
{
lastIndex++;
UIComponent co = ico.next();
if (!(co instanceof UISelectItem))
{
continue;
}
UISelectItem si = (UISelectItem) co;
Object ov = si.getItemValue();
if (ObjectUtils.isEmpty(ov) && hasEmpty)
{
continue;
}
if (oe == null)
{ // remove obsolete items
lastIndex--;
for (int index = childList.size() - 1; index >= lastIndex; index--)
{
childList.remove(index);
}
// done
return;
}
if (ObjectUtils.compareEqual(ov, oe.getValue()))
{ // next
oe = (ioe.hasNext() ? ioe.next() : null);
continue;
}
// Not equal - do a full reload
input.getChildren().clear();
if (hasEmpty)
{
addSelectItem(input, textResolver, new OptionEntry("", nullText));
}
for (OptionEntry e : options)
{ // Option entries
addSelectItem(input, textResolver, e);
}
// done
return;
}
// Are there any items left?
while (oe != null)
{ // add missing item
addSelectItem(input, textResolver, oe);
oe = (ioe.hasNext() ? ioe.next() : null);
}
}