Eclipse Nebula NatTable 1.2.0

Release Date
Compatibility

The following changes where made that might break backwards compatibility in case custom NatTable components where created. Developers that simply use the delivered NatTable components shouldn't face compatibility issues:

  1. ISelectionModel - added a callback function updateSelection() which is called by the SelectionLayerStructuralChangeEventHandler so the ISelectionModel itself is responsible for handling structural updates (e.g. simply clear) instead of the handler.
  2. ICellEditor - added activateOnTraversal(IConfigRegistry, List<String>) which is called when an editor should be activated on traversal after a commit. The default implementation for this method is added in the abstract classes, so this change should only affect users that directly implement the interface for their custom editors instead of the abstract implementations.
  3. MoveSelectionCommandHandler - changed method signature to take an ITraversalStrategy as parameter so support different traversal strategies on movement. This won't affect existing applications if the command handler was not extended.
  4. RowOverrideLabelAccumulator - change method name registerOverrides(int, String[]) to registerRowOverrides(int, String[]) because of ambigiuous method signatures
  5. ITreeRowModel - added methods expandToLevel(int, int), expandToLevel(T, int), expandToLevel(int) which allow to expand a tree node and even the whole tree to a certain level, added necessary implementations in TreeRowModel and GlazedListTreeRowModel
  6. ITreeRowModel - renamed isCollapseable(int) to isCollapsible()
  7. ITreeRowModel - added convenience methods to expand and collapse by object, added implementations to AbstractTreeRowModel
  8. GlazedListTreeData & GlazedListTreeRowModel - set expand/collapse related methods in GlazedListTreeData to deprecated and moved them accordingly to GlazedListTreeRowModel because this class is responsible for expand/collapse operations
  9. TreeLayer - added methods expandTreeRowToLevel(int, int), expandAllToLevel(int) which allow to expand a tree node and even the whole tree to a certain level, method calls are triggered by the newly introduced TreeExpandToLevelCommand/TreeExpandToLevelCommandHandler
  10. PopupMenuBuilder - on #build() a DisposeListener is automatically added to the NatTable instance the menus are created for
  11. PopupMenuBuilder - internally operates using a MenuManager to support handling of visibility and enablement states when using e4 menus
  12. ISelectionModel extends ILayerEventHandler<StructuralChangeEvent>, therefore every ISelectionModel implementation is itself responsible for handling selection updates on structural changes
  13. GroupByObject constructor takes a Map<Integer, Object> as parameter instead of a List<Map.Entry<Integer, Object>>. This should only affect users that use the GroupByObject manually for custom use cases. But as the GroupByObject is intended to be used in conjunction with the GroupBy feature internally, it shouldn't affect anyone.
  14. Renamed AggregrateConfigLabelAccumulator to AggregateConfigLabelAccumulator so users are able to find that class without the need to take care of the typo
  15. TreeExportFormatter now uses DefaultExportFormatter#formatForExport(ILayerCell, IConfigRegistry) which is using the IDisplayConverter to convert the data value. There is no need for ITreeData#formatDataForDepth() or ITreeRowModel#getObjectAtIndexAndDepth() which were used to retrieve the converted value in a tree. Those methods are not used anymore internally and are marked as deprecated now.
  16. ISortModel was extended to receive the method Comparator<?> getColumnComparator(int) which is necessary for the GroupBy feature that wraps the row objects in GroupByObjects and need to sort the grouping values correctly using the configured comparator. If that feature is not used, this method can be null for custom implementations.
  17. GroupByObject does not implement Comparable anymore
  18. GroupByExpansionModel now keeps track of the expanded states. This is necessary because of the workaround that updates the whole tree structure on changes to the TreeList#Format on grouping
  19. Introduced the GroupByComparator that is able to compare a tree list that is created using the GroupBy feature. It correctly uses the configured column Comparator for the tree and is able to compare summary values for grouped columns if the GroupByDataLayer is initialized with the necessary information like ISortModel, TreeLayer and GroupByDataLayer reference configuration.