2015-10-06 18 views
0

扩大我试图从here树没有在NatTable

例子我评论rowHeaderLayer,ColumnHeaderLayer,CornerLayer,GridLayer和直接设置viewPortLayer到nattable。 Tree显示出来,但我无法展开和折叠树,尽管我有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以启用配置的UI绑定。因此,您需要在创建ViewportLayer后添加以下代码行

viewportLayer.setRegionName(GridRegion.BODY); 
+0

感谢您的正确链接,Drik。我会用我的代码现在测试你的建议:) –