2015-10-06 2 views
0

Я пытаюсь примеры из hereдерево не расшириться в NatTable

Я заметил rowHeaderLayer, ColumnHeaderLayer, CornerLayer, GridLayer и непосредственно установить viewPortLayer в nattable. Дерево появляется, но я не могу развернуть и свернуть дерево, хотя у меня есть rowHideShowLayer.

Вот фрагмент кода:

EventList<Datum> eventList = GlazedLists.eventList(datums.values()); 
    SortedList<Datum> sortedList = new SortedList<Datum>(eventList, null); 

    String[] propertyNames = new String[] { "self", "bar" }; 
    IColumnPropertyAccessor<Datum> columnPropertyAccessor = new ReflectiveColumnPropertyAccessor<Datum>(propertyNames); 

    // Column header layer 
    IDataProvider columnHeaderDataProvider = new DefaultColumnHeaderDataProvider(propertyNames); 
    DataLayer columnHeaderDataLayer = new DefaultColumnHeaderDataLayer(columnHeaderDataProvider); 

    ISortModel sortModel = new GlazedListsSortModel<Datum>(
      sortedList, 
      columnPropertyAccessor, 
      configRegistry, 
      columnHeaderDataLayer); 

    final TreeList <Datum> treeList = new TreeList<Datum>(sortedList, new DatumTreeFormat(sortModel), new DatumExpansionModel()); 
    GlazedListTreeData <Datum> treeData = new DatumTreeData(treeList); 

    GlazedListsDataProvider<Datum> bodyDataProvider = new GlazedListsDataProvider<Datum>(treeList, columnPropertyAccessor); 
    final DataLayer bodyDataLayer = new DataLayer(bodyDataProvider); 

    // Body layer 
    ColumnReorderLayer columnReorderLayer = new ColumnReorderLayer(bodyDataLayer); 
    ColumnHideShowLayer columnHideShowLayer = new ColumnHideShowLayer(columnReorderLayer); 
    SelectionLayer selectionLayer = new SelectionLayer(columnHideShowLayer); 

    RowHideShowLayer rowHideShowLayer = new RowHideShowLayer(selectionLayer); 

    final TreeLayer treeLayer = new TreeLayer(rowHideShowLayer, new GlazedListTreeRowModel<Datum>(treeData)); 

    ViewportLayer viewportLayer = new ViewportLayer(treeLayer); 

    NatTable natTable = new NatTable(parent, viewportLayer, false);` 

ответ

0

Уф, какие места наш код можно найти действительно странно ...

Я бы не смотреть в googlesource, а мы размещаем наши источники в Eclipse, а также источники IIRC, реплицируются в GitHub. Таким образом, лучший пример будет

https://github.com/eclipse/nebula.widgets.nattable/blob/master/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_600_GlazedLists/_604_Tree/_6041_TreeGridExample.java

Что касается вашего вопроса, вам не нужен RowHideShowLayer, и я предлагаю, чтобы удалить его. Поскольку вы не используете композицию сетки, вам необходимо установить необходимую метку области в ViewportLayer, чтобы включить настроенные привязки интерфейса. Поэтому вам необходимо добавить следующую строку кода после создания ViewportLayer

viewportLayer.setRegionName(GridRegion.BODY); 
+0

Спасибо за правильную ссылку, Дрик. Я проведу ваши предложения с помощью моего кода сейчас :) –

Смежные вопросы