Не получается отобразить для каждой строки разное содержимое

Здравствуйте!
Я использую detailsGEnerator, как в примере, и в функции getContent, создаю таблицу с выбранным элементом большой таблицы , как мне сделать, чтобы при выборе другой строки таблицы, подробная информация о предыдущей выбранной строке автоматически закрывалась, а не по кнопке closeButton. Или пусть не закрывается,но проблема в том,что содержимое таблицы маленькой из detailsGenerator меняется на содержимое вновь выбранной строки…
16393059493061064881908884759146
16393060058196552349811655157240

Можно немного модифицировать метод обработки клика на строке из примера чтобы добиться такого поведения.
Добавить на экран атрибут для сохранения предыдущего элемента, для которого мы отобразили детали.
А в обработчике клика, перед отображением деталей строки, скрывать ранее отображенное окно деталей.

@UiController("td_NewEntity.browse")
@UiDescriptor("new-entity-browse.xml")
@LookupComponent("newEntitiesTable")
public class NewEntityBrowse extends StandardLookup<NewEntity> {
    @Autowired
    private UiComponents uiComponents;
    @Autowired
    private DataGrid<NewEntity> newEntitiesTable;

    private NewEntity prevSelected = null;


    @Install(to = "newEntitiesTable", subject = "detailsGenerator")
    private Component newEntitiesTableDetailsGenerator(NewEntity newEntity) {
        VBoxLayout mainLayout = uiComponents.create(VBoxLayout.class);
        mainLayout.setWidth("100%");
        mainLayout.setMargin(true);

        Label<String> infoLabel = uiComponents.create(Label.TYPE_STRING);
        infoLabel.setHtmlEnabled(true);
        infoLabel.setStyleName("h1");
        infoLabel.setValue("Detail info:" + newEntity.getName());

        mainLayout.add(infoLabel);

        return mainLayout;
    }

    @Subscribe("newEntitiesTable")
    public void onNewEntitiesTableItemClick(DataGrid.ItemClickEvent<NewEntity> event) {
        newEntitiesTable.setItemClickAction(new BaseAction("itemClickAction")
                .withHandler(actionPerformedEvent -> {
                    if (prevSelected != null) {
                        newEntitiesTable.setDetailsVisible(prevSelected, false);
                    }
                    newEntitiesTable.setDetailsVisible(newEntitiesTable.getSingleSelected(), true);
                    prevSelected = newEntitiesTable.getSingleSelected();
                }));
    }
}
1 симпатия

Спасибо большое, работает. Но по двойному клику, а нельзя сделать это через один клик,чтобы не возникало исключения nullpointexception?

NPE точно нет.
Тестовый проект приложил.
Чтобы детали отображались по первому клику надо сесть на другое событие - SelectionEvent.
Выделение меняется при первом клике в строку.
В приложенном проекте есть оба варианта.
На событии ItemClickEvent закомментировано.
Работает на SelectionEvent по первому клику.

testDetail.zip (87.3 КБ)

1 симпатия