I have ListBox in my UI. Its content is refreshed every time I change selection in other listbox. Besides I have custom view converter for this listbox.
So when I select some item in other list I do:
[java]
ListBox<ListBoxDisablebleEntry> levelsList = (ListBox<ListBoxDisablebleEntry>)
getScreen().findNiftyControl(“levelsList”, ListBox.class);
levelsList.clear();
// then fetch data for this list and do in a loop
for (SHLevel level : levels)
{
levelsList.addItem(new ListBoxDisablebleEntry(level, enabled));
// change enabled variable
}
[/java]
Here is my custom model for list
[java]
public class ListBoxDisablebleEntry
{
private T content;
private boolean enabled;
public ListBoxDisablebleEntry(T content, boolean enabled)
{
super();
this.content = content;
this.enabled = enabled;
}
public T getContent()
{
return content;
}
public void setContent(T content)
{
this.content = content;
}
public boolean isEnabled()
{
return enabled;
}
public void setEnabled(boolean enabled)
{
this.enabled = enabled;
}
/**
* {@inheritDoc}
*/
@Override
public String toString()
{
return content == null ? null : content.toString();
}
}[/java]
And view converter itself
[java]
public class ListBoxDisablableViewConverter implements ListBoxViewConverter<ListBoxDisablebleEntry>
{
private static final String LIST_ITEM_DISABLED_STYLE = "listitem-disabled";
/**
* {@inheritDoc}
*/
@Override
public void display(Element element, ListBoxDisablebleEntry model)
{
TextRenderer renderer = element.getRenderer(TextRenderer.class);
if (!model.isEnabled())
{
element.setStyle(LIST_ITEM_DISABLED_STYLE);
}
renderer.setText(model.toString());
}
/**
* {@inheritDoc}
*/
@Override
public int getWidth(Element element, ListBoxDisablebleEntry model)
{
TextRenderer renderer = element.getRenderer(TextRenderer.class);
int width = (renderer.getFont() == null)
? 0
: renderer.getFont().getWidth(model.toString());
return width;
}
}[/java]
It works fine first time. But when I change selection item that had disabled style will have disabled style (despite new model has ‘enabled=true’ and converter does not sets up disabled style). E.g. if I have list with (enabled, disabled, disabled), then clear it and set model (enabled, enabled, enabled) last two item will have disabled style. How to fix it?