CellList с ячейками CellTree
Я использовал пример gwt CellList для реализации списка на основе ячеек. Он использовал ячейки TextCell для представления данных, так как это был просто текст, и работал отлично.
Теперь я должен расширить этот список, включив в него элементы типа "дерево" (я имею в виду, что вы можете щелкнуть по некоторому элементу списка, и, если это не лист, он открывается и отображает информацию о его дочерних элементах). Итак, я реализовал виджет на основе CellTree. ( CellTree)
Моя проблема в том, что я не знаю, как вставить элементы типа "дерево", которые на самом деле являются CellTrees, в мой CellList.
Единственный подход, который я мог представить, - это создать новый тип ячеек, представляющих CellTree, расширяющий "AbstractCell", и использовать его в качестве элементов CellList.
Моя реализация:
private class TreeCell extends AbstractCell<CellTreeListBox> {
public TreeCell() {}
@Override
public void render(Context context, CellTreeListBox value,
SafeHtmlBuilder sb)
{
sb.appendEscaped(value.getElement().getInnerHTML());
}
}
Когда-то включенный в CellList, он отображает только корневые узлы, но когда я нажимаю на них, они не открываются! так что этот подход не сохраняет события, ни функциональность selectionModel...
Так что я не знаю, возможно ли реализовать ячейку, которая представляет целое TreeTree и сохраняет его события и функциональные возможности (если вы нажмете, узел будет открыт, и отобразится информация о его дочерних элементах и т. Д.).
Буду очень признателен за любую информацию об этом!
1 ответ
Вы должны заменить свой CellList
с CellTree
,
Либо это, либо замена CellList
с какой-то панелью контейнера (FlowPanel
, VerticalPanel
) в который вы бы (вручную) поместили виджеты (Label
с или, возможно, CellWidget
с TextCell
) и вставьте свой CellTree
между ними, чтобы показать это. Тогда вы потеряете другие функции виджетов ячеек: SelectionModel
, пейджинг и т. д.
В любом случае угробите CellList
, Вы не можете вставлять виджеты в виджеты ячеек.