Fix issues in examples

Change-Id: I51de193d8dc868e153080d7e6f702d9c2a92f6a7
Signed-off-by: Dirk Fauth <dirk.fauth@googlemail.com>
diff --git a/org.eclipse.nebula.widgets.nattable.examples.e4/src/org/eclipse/nebula/widgets/nattable/examples/e4/part/DarkExample.java b/org.eclipse.nebula.widgets.nattable.examples.e4/src/org/eclipse/nebula/widgets/nattable/examples/e4/part/DarkExample.java
index 73b5acd..f6150b4 100644
--- a/org.eclipse.nebula.widgets.nattable.examples.e4/src/org/eclipse/nebula/widgets/nattable/examples/e4/part/DarkExample.java
+++ b/org.eclipse.nebula.widgets.nattable.examples.e4/src/org/eclipse/nebula/widgets/nattable/examples/e4/part/DarkExample.java
@@ -1,5 +1,5 @@
 /*****************************************************************************
- * Copyright (c) 2015, 2020 CEA LIST.
+ * Copyright (c) 2015, 2021 CEA LIST.
  *
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
@@ -548,8 +548,8 @@
             this.bodyDataProvider = this.bodyDataLayer.getDataProvider();
 
             // layer for event handling of GlazedLists and PropertyChanges
-            GlazedListsEventLayer<T> glazedListsEventLayer =
-                    new GlazedListsEventLayer<>(this.bodyDataLayer, this.filterList);
+            GlazedListsEventLayer<Object> glazedListsEventLayer =
+                    new GlazedListsEventLayer<>(this.bodyDataLayer, this.bodyDataLayer.getTreeList());
 
             // NOTE:
             // we need to tell the GroupByDataLayer to clear its cache if
diff --git a/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_500_Layers/_501_Data/_5013_PercentageSizingGridExample.java b/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_500_Layers/_501_Data/_5013_PercentageSizingGridExample.java
index 09bae6f..90e91c4 100644
--- a/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_500_Layers/_501_Data/_5013_PercentageSizingGridExample.java
+++ b/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_500_Layers/_501_Data/_5013_PercentageSizingGridExample.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2012, 2020 Original authors and others.
+ * Copyright (c) 2012, 2021 Original authors and others.
  *
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
@@ -25,6 +25,7 @@
 import org.eclipse.nebula.widgets.nattable.grid.layer.ColumnHeaderLayer;
 import org.eclipse.nebula.widgets.nattable.grid.layer.CornerLayer;
 import org.eclipse.nebula.widgets.nattable.grid.layer.DefaultColumnHeaderDataLayer;
+import org.eclipse.nebula.widgets.nattable.grid.layer.DefaultGridLayer;
 import org.eclipse.nebula.widgets.nattable.grid.layer.DefaultRowHeaderDataLayer;
 import org.eclipse.nebula.widgets.nattable.grid.layer.GridLayer;
 import org.eclipse.nebula.widgets.nattable.grid.layer.RowHeaderLayer;
@@ -143,13 +144,14 @@
         // example for mixed fixed/percentage sizing in a grid configure not
         // every column with the exact percentage value, this way the columns
         // for which no exact values are set will use the remaining space
-        gridLayer = new SimpleGridLayer(dataProvider);
-        final DataLayer mixGridDataLayer = (DataLayer) gridLayer.getBodyDataLayer();
+        DefaultGridLayer defaultGridLayer = new DefaultGridLayer(dataProvider, new DummyColumnHeaderDataProvider(dataProvider));
+        final DataLayer mixGridDataLayer = (DataLayer) defaultGridLayer.getBodyDataLayer();
         mixGridDataLayer.setColumnPercentageSizing(true);
         mixGridDataLayer.setColumnPercentageSizing(0, false);
         mixGridDataLayer.setColumnPercentageSizing(1, false);
         mixGridDataLayer.setColumnWidthByPosition(0, 100);
         mixGridDataLayer.setColumnWidthByPosition(1, 100);
+        mixGridDataLayer.setMinColumnWidth(2, 10);
         // use different style bits to avoid rendering of inactive scrollbars
         // for small table when using percentage sizing, typically there should
         // be no scrollbars, as the table should take the available space
@@ -157,7 +159,7 @@
         // by the ViewportLayer. Without the ViewportLayer the scrollbars will
         // always be visible with the default style bits of NatTable.
         final NatTable mixGrid = new NatTable(
-                gridPanel, SWT.NO_BACKGROUND | SWT.NO_REDRAW_RESIZE | SWT.DOUBLE_BUFFERED, gridLayer, false);
+                gridPanel, defaultGridLayer, false);
         mixGrid.addConfiguration(new DefaultNatTableStyleConfiguration());
         mixGrid.addConfiguration(new HeaderMenuConfiguration(mixGrid));
         mixGrid.configure();
@@ -206,9 +208,6 @@
      * Simple grid implementation that doesn't contain a ViewportLayer in the
      * body layer stack. This is because it is used for percentage sizing and we
      * do not want to show scrollbars.
-     *
-     * @author Dirk Fauth
-     *
      */
     class SimpleGridLayer extends GridLayer {
 
diff --git a/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_600_GlazedLists/_605_GroupBy/_6051_GroupByExample.java b/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_600_GlazedLists/_605_GroupBy/_6051_GroupByExample.java
index c7bfd18..9dbb359 100644
--- a/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_600_GlazedLists/_605_GroupBy/_6051_GroupByExample.java
+++ b/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_600_GlazedLists/_605_GroupBy/_6051_GroupByExample.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2013, 2020 Dirk Fauth and others.
+ * Copyright (c) 2013, 2021 Dirk Fauth and others.
  *
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
@@ -51,7 +51,6 @@
 import org.eclipse.nebula.widgets.nattable.tree.command.TreeExpandAllCommand;
 import org.eclipse.nebula.widgets.nattable.tree.command.TreeExpandToLevelCommand;
 import org.eclipse.nebula.widgets.nattable.ui.menu.HeaderMenuConfiguration;
-import org.eclipse.nebula.widgets.nattable.ui.menu.IMenuItemProvider;
 import org.eclipse.nebula.widgets.nattable.ui.menu.PopupMenuBuilder;
 import org.eclipse.nebula.widgets.nattable.viewport.ViewportLayer;
 import org.eclipse.swt.SWT;
@@ -59,7 +58,6 @@
 import org.eclipse.swt.events.SelectionEvent;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
-import org.eclipse.swt.widgets.Menu;
 import org.eclipse.swt.widgets.MenuItem;
 
 import ca.odell.glazedlists.EventList;
@@ -171,66 +169,50 @@
             protected PopupMenuBuilder createCornerMenu(NatTable natTable) {
                 return super.createCornerMenu(natTable)
                         .withStateManagerMenuItemProvider()
-                        .withMenuItemProvider(new IMenuItemProvider() {
+                        .withMenuItemProvider((natTable1, popupMenu) -> {
+                            MenuItem menuItem = new MenuItem(popupMenu, SWT.PUSH);
+                            menuItem.setText("Toggle Group By Header"); //$NON-NLS-1$
+                            menuItem.setEnabled(true);
 
-                            @Override
-                            public void addMenuItem(NatTable natTable, Menu popupMenu) {
-                                MenuItem menuItem = new MenuItem(popupMenu, SWT.PUSH);
-                                menuItem.setText("Toggle Group By Header"); //$NON-NLS-1$
-                                menuItem.setEnabled(true);
+                            menuItem.addSelectionListener(new SelectionAdapter() {
+                                @Override
+                                public void widgetSelected(SelectionEvent event) {
+                                    groupByHeaderLayer.setVisible(!groupByHeaderLayer.isVisible());
+                                }
+                            });
+                        }).withMenuItemProvider((natTable1, popupMenu) -> {
+                            MenuItem menuItem = new MenuItem(popupMenu, SWT.PUSH);
+                            menuItem.setText("Collapse All"); //$NON-NLS-1$
+                            menuItem.setEnabled(true);
 
-                                menuItem.addSelectionListener(new SelectionAdapter() {
-                                    @Override
-                                    public void widgetSelected(SelectionEvent event) {
-                                        groupByHeaderLayer.setVisible(!groupByHeaderLayer.isVisible());
-                                    }
-                                });
-                            }
-                        }).withMenuItemProvider(new IMenuItemProvider() {
+                            menuItem.addSelectionListener(new SelectionAdapter() {
+                                @Override
+                                public void widgetSelected(SelectionEvent event) {
+                                    natTable1.doCommand(new TreeCollapseAllCommand());
+                                }
+                            });
+                        }).withMenuItemProvider((natTable1, popupMenu) -> {
+                            MenuItem menuItem = new MenuItem(popupMenu, SWT.PUSH);
+                            menuItem.setText("Expand All"); //$NON-NLS-1$
+                            menuItem.setEnabled(true);
 
-                            @Override
-                            public void addMenuItem(final NatTable natTable, Menu popupMenu) {
-                                MenuItem menuItem = new MenuItem(popupMenu, SWT.PUSH);
-                                menuItem.setText("Collapse All"); //$NON-NLS-1$
-                                menuItem.setEnabled(true);
+                            menuItem.addSelectionListener(new SelectionAdapter() {
+                                @Override
+                                public void widgetSelected(SelectionEvent event) {
+                                    natTable1.doCommand(new TreeExpandAllCommand());
+                                }
+                            });
+                        }).withMenuItemProvider((natTable1, popupMenu) -> {
+                            MenuItem menuItem = new MenuItem(popupMenu, SWT.PUSH);
+                            menuItem.setText("Expand to Level 2"); //$NON-NLS-1$
+                            menuItem.setEnabled(true);
 
-                                menuItem.addSelectionListener(new SelectionAdapter() {
-                                    @Override
-                                    public void widgetSelected(SelectionEvent event) {
-                                        natTable.doCommand(new TreeCollapseAllCommand());
-                                    }
-                                });
-                            }
-                        }).withMenuItemProvider(new IMenuItemProvider() {
-
-                            @Override
-                            public void addMenuItem(final NatTable natTable, Menu popupMenu) {
-                                MenuItem menuItem = new MenuItem(popupMenu, SWT.PUSH);
-                                menuItem.setText("Expand All"); //$NON-NLS-1$
-                                menuItem.setEnabled(true);
-
-                                menuItem.addSelectionListener(new SelectionAdapter() {
-                                    @Override
-                                    public void widgetSelected(SelectionEvent event) {
-                                        natTable.doCommand(new TreeExpandAllCommand());
-                                    }
-                                });
-                            }
-                        }).withMenuItemProvider(new IMenuItemProvider() {
-
-                            @Override
-                            public void addMenuItem(final NatTable natTable, Menu popupMenu) {
-                                MenuItem menuItem = new MenuItem(popupMenu, SWT.PUSH);
-                                menuItem.setText("Expand to Level 2"); //$NON-NLS-1$
-                                menuItem.setEnabled(true);
-
-                                menuItem.addSelectionListener(new SelectionAdapter() {
-                                    @Override
-                                    public void widgetSelected(SelectionEvent event) {
-                                        natTable.doCommand(new TreeExpandToLevelCommand(2));
-                                    }
-                                });
-                            }
+                            menuItem.addSelectionListener(new SelectionAdapter() {
+                                @Override
+                                public void widgetSelected(SelectionEvent event) {
+                                    natTable1.doCommand(new TreeExpandToLevelCommand(2));
+                                }
+                            });
                         });
             }
         });
@@ -276,8 +258,8 @@
             this.bodyDataProvider = bodyDataLayer.getDataProvider();
 
             // layer for event handling of GlazedLists and PropertyChanges
-            GlazedListsEventLayer<T> glazedListsEventLayer =
-                    new GlazedListsEventLayer<>(bodyDataLayer, this.sortedList);
+            GlazedListsEventLayer<Object> glazedListsEventLayer =
+                    new GlazedListsEventLayer<>(bodyDataLayer, bodyDataLayer.getTreeList());
 
             this.selectionLayer = new SelectionLayer(glazedListsEventLayer);
 
diff --git a/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_600_GlazedLists/_605_GroupBy/_6052_GroupByCustomTypesExample.java b/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_600_GlazedLists/_605_GroupBy/_6052_GroupByCustomTypesExample.java
index 2af76e3..b685396 100644
--- a/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_600_GlazedLists/_605_GroupBy/_6052_GroupByCustomTypesExample.java
+++ b/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_600_GlazedLists/_605_GroupBy/_6052_GroupByCustomTypesExample.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2013, 2020 Dirk Fauth and others.
+ * Copyright (c) 2013, 2021 Dirk Fauth and others.
  *
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
@@ -252,8 +252,8 @@
             this.bodyDataProvider = this.bodyDataLayer.getDataProvider();
 
             // layer for event handling of GlazedLists and PropertyChanges
-            GlazedListsEventLayer<T> glazedListsEventLayer =
-                    new GlazedListsEventLayer<>(this.bodyDataLayer, this.sortedList);
+            GlazedListsEventLayer<Object> glazedListsEventLayer =
+                    new GlazedListsEventLayer<>(this.bodyDataLayer, this.bodyDataLayer.getTreeList());
 
             ColumnReorderLayer reorderLayer = new ColumnReorderLayer(glazedListsEventLayer);
             this.selectionLayer = new SelectionLayer(reorderLayer);
diff --git a/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_600_GlazedLists/_605_GroupBy/_6053_GroupBySummaryExample.java b/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_600_GlazedLists/_605_GroupBy/_6053_GroupBySummaryExample.java
index 03a1843..281a148 100644
--- a/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_600_GlazedLists/_605_GroupBy/_6053_GroupBySummaryExample.java
+++ b/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_600_GlazedLists/_605_GroupBy/_6053_GroupBySummaryExample.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2013, 2020 Dirk Fauth and others.
+ * Copyright (c) 2013, 2021 Dirk Fauth and others.
  *
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
@@ -385,7 +385,8 @@
             this.bodyDataProvider = this.bodyDataLayer.getDataProvider();
 
             // layer for event handling of GlazedLists and PropertyChanges
-            GlazedListsEventLayer<T> glazedListsEventLayer = new GlazedListsEventLayer<>(this.bodyDataLayer, this.sortedList);
+            GlazedListsEventLayer<Object> glazedListsEventLayer =
+                    new GlazedListsEventLayer<>(this.bodyDataLayer, this.bodyDataLayer.getTreeList());
 
             ColumnReorderLayer columnReorderLayer = new ColumnReorderLayer(glazedListsEventLayer);
             ColumnHideShowLayer columnHideShowLayer = new ColumnHideShowLayer(columnReorderLayer);
diff --git a/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_808_SortableGroupByWithFilterExample.java b/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_808_SortableGroupByWithFilterExample.java
index d1b7bcd..008758a 100644
--- a/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_808_SortableGroupByWithFilterExample.java
+++ b/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_808_SortableGroupByWithFilterExample.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2013, 2020 Dirk Fauth and others.
+ * Copyright (c) 2013, 2021 Dirk Fauth and others.
  *
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
@@ -463,8 +463,8 @@
             this.bodyDataProvider = this.bodyDataLayer.getDataProvider();
 
             // layer for event handling of GlazedLists and PropertyChanges
-            GlazedListsEventLayer<T> glazedListsEventLayer =
-                    new GlazedListsEventLayer<>(this.bodyDataLayer, this.filterList);
+            GlazedListsEventLayer<Object> glazedListsEventLayer =
+                    new GlazedListsEventLayer<>(this.bodyDataLayer, this.bodyDataLayer.getTreeList());
 
             ColumnReorderLayer columnReorderLayer =
                     new ColumnReorderLayer(glazedListsEventLayer);
diff --git a/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_809_GroupBySummarySummaryRowExample.java b/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_809_GroupBySummarySummaryRowExample.java
index d6d59ea..3697623 100644
--- a/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_809_GroupBySummarySummaryRowExample.java
+++ b/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_809_GroupBySummarySummaryRowExample.java
@@ -571,7 +571,7 @@
 
         private final GroupByDataLayer<T> bodyDataLayer;
 
-        private final GlazedListsEventLayer<T> glazedListsEventLayer;
+        private final GlazedListsEventLayer<Object> glazedListsEventLayer;
 
         private final SelectionLayer selectionLayer;
 
@@ -601,7 +601,7 @@
 
             // layer for event handling of GlazedLists and PropertyChanges
             this.glazedListsEventLayer =
-                    new GlazedListsEventLayer<>(this.bodyDataLayer, this.sortedList);
+                    new GlazedListsEventLayer<>(this.bodyDataLayer, this.bodyDataLayer.getTreeList());
 
             // NOTE:
             // we need to tell the GroupByDataLayer to clear its cache if
@@ -659,7 +659,7 @@
             return this.bodyDataLayer;
         }
 
-        public GlazedListsEventLayer<T> getGlazedListsEventLayer() {
+        public GlazedListsEventLayer<Object> getGlazedListsEventLayer() {
             return this.glazedListsEventLayer;
         }
 
diff --git a/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_810_SortableGroupByFilterColumnGroupAndFreezeExample.java b/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_810_SortableGroupByFilterColumnGroupAndFreezeExample.java
index 656c0d6..b4f1ba2 100644
--- a/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_810_SortableGroupByFilterColumnGroupAndFreezeExample.java
+++ b/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_810_SortableGroupByFilterColumnGroupAndFreezeExample.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2013, 2020 Dirk Fauth and others.
+ * Copyright (c) 2013, 2021 Dirk Fauth and others.
  *
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
@@ -585,8 +585,8 @@
             this.bodyDataProvider = this.bodyDataLayer.getDataProvider();
 
             // layer for event handling of GlazedLists and PropertyChanges
-            GlazedListsEventLayer<T> glazedListsEventLayer =
-                    new GlazedListsEventLayer<>(this.bodyDataLayer, this.filterList);
+            GlazedListsEventLayer<Object> glazedListsEventLayer =
+                    new GlazedListsEventLayer<>(this.bodyDataLayer, this.bodyDataLayer.getTreeList());
 
             // NOTE:
             // we need to tell the GroupByDataLayer to clear its cache if
diff --git a/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_811_GroupBySummaryFixedSummaryRowExample.java b/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_811_GroupBySummaryFixedSummaryRowExample.java
index 0df2c7d..7c9fdcb 100644
--- a/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_811_GroupBySummaryFixedSummaryRowExample.java
+++ b/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_811_GroupBySummaryFixedSummaryRowExample.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2014, 2020 Dirk Fauth and others.
+ * Copyright (c) 2014, 2021 Dirk Fauth and others.
  *
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
@@ -569,7 +569,7 @@
 
         private final GroupByDataLayer<T> bodyDataLayer;
 
-        private final GlazedListsEventLayer<T> glazedListsEventLayer;
+        private final GlazedListsEventLayer<Object> glazedListsEventLayer;
 
         private final SelectionLayer selectionLayer;
 
@@ -599,7 +599,7 @@
 
             // layer for event handling of GlazedLists and PropertyChanges
             this.glazedListsEventLayer =
-                    new GlazedListsEventLayer<>(this.bodyDataLayer, this.sortedList);
+                    new GlazedListsEventLayer<>(this.bodyDataLayer, this.bodyDataLayer.getTreeList());
 
             ColumnReorderLayer columnReorderLayer = new ColumnReorderLayer(this.glazedListsEventLayer);
             ColumnHideShowLayer columnHideShowLayer = new ColumnHideShowLayer(columnReorderLayer);
@@ -637,7 +637,7 @@
             return this.bodyDataLayer;
         }
 
-        public GlazedListsEventLayer<T> getGlazedListsEventLayer() {
+        public GlazedListsEventLayer<Object> getGlazedListsEventLayer() {
             return this.glazedListsEventLayer;
         }
 
diff --git a/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_812_EditableGroupBySummarySummaryRowExample.java b/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_812_EditableGroupBySummarySummaryRowExample.java
index 907f05b..da83ec9 100644
--- a/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_812_EditableGroupBySummarySummaryRowExample.java
+++ b/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_812_EditableGroupBySummarySummaryRowExample.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2013, 2020 Dirk Fauth and others.
+ * Copyright (c) 2013, 2021 Dirk Fauth and others.
  *
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
@@ -716,9 +716,8 @@
                     this.bodyDataLayer.getDataProvider();
 
             // layer for event handling of GlazedLists and PropertyChanges
-            @SuppressWarnings({ "rawtypes", "unchecked" })
-            GlazedListsEventLayer glazedListsEventLayer =
-                    new GlazedListsEventLayer(this.bodyDataLayer, this.bodyDataLayer.getTreeList());
+            GlazedListsEventLayer<Object> glazedListsEventLayer =
+                    new GlazedListsEventLayer<>(this.bodyDataLayer, this.bodyDataLayer.getTreeList());
 
             // NOTE:
             // we need to tell the GroupByDataLayer to clear its cache if
diff --git a/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_813_SortableGroupByWithComboBoxFilterExample.java b/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_813_SortableGroupByWithComboBoxFilterExample.java
index 718495b..706fb1d 100644
--- a/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_813_SortableGroupByWithComboBoxFilterExample.java
+++ b/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_813_SortableGroupByWithComboBoxFilterExample.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2016, 2020 Dirk Fauth and others.
+ * Copyright (c) 2016, 2021 Dirk Fauth and others.
  *
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
@@ -631,7 +631,7 @@
 
         private final GroupByModel groupByModel = new GroupByModel();
 
-        private final GlazedListsEventLayer<T> glazedListsEventLayer;
+        private final GlazedListsEventLayer<Object> glazedListsEventLayer;
 
         @SuppressWarnings("unchecked")
         public BodyLayerStack(List<T> values,
@@ -667,7 +667,7 @@
 
             // layer for event handling of GlazedLists and PropertyChanges
             this.glazedListsEventLayer =
-                    new GlazedListsEventLayer<>(this.bodyDataLayer, this.filterList);
+                    new GlazedListsEventLayer<>(this.bodyDataLayer, this.bodyDataLayer.getTreeList());
 
             // NOTE:
             // we need to tell the GroupByDataLayer to clear its cache if
diff --git a/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_814_EditableSortableGroupByWithFilterExample.java b/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_814_EditableSortableGroupByWithFilterExample.java
index b8f1d17..471e160 100644
--- a/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_814_EditableSortableGroupByWithFilterExample.java
+++ b/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_814_EditableSortableGroupByWithFilterExample.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2013, 2020 Dirk Fauth and others.
+ * Copyright (c) 2013, 2021 Dirk Fauth and others.
  *
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
@@ -812,8 +812,8 @@
                             new IdIndexKeyHandler<>(new ListDataProvider<>(this.eventList, columnPropertyAccessor), rowIdAccessor)));
 
             // layer for event handling of GlazedLists and PropertyChanges
-            GlazedListsEventLayer<T> glazedListsEventLayer =
-                    new GlazedListsEventLayer<>(this.bodyDataLayer, this.filterList);
+            GlazedListsEventLayer<Object> glazedListsEventLayer =
+                    new GlazedListsEventLayer<>(this.bodyDataLayer, this.bodyDataLayer.getTreeList());
 
             // the DataChangeLayer can be placed on top of the
             // GlazedListsEventLayer or directly on the DataLayer. Best results
diff --git a/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_815_SortableGroupByFilterPerformanceColumnGroupAndFreezeExample.java b/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_815_SortableGroupByFilterPerformanceColumnGroupAndFreezeExample.java
index 7c3b87d..a88f27d 100644
--- a/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_815_SortableGroupByFilterPerformanceColumnGroupAndFreezeExample.java
+++ b/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_800_Integration/_815_SortableGroupByFilterPerformanceColumnGroupAndFreezeExample.java
@@ -1,5 +1,5 @@
 /*******************************************************************************
- * Copyright (c) 2019, 2020 Dirk Fauth and others.
+ * Copyright (c) 2019, 2021 Dirk Fauth and others.
  *
  * This program and the accompanying materials are made
  * available under the terms of the Eclipse Public License 2.0
@@ -583,8 +583,8 @@
             this.bodyDataProvider = this.bodyDataLayer.getDataProvider();
 
             // layer for event handling of GlazedLists and PropertyChanges
-            GlazedListsEventLayer<T> glazedListsEventLayer =
-                    new GlazedListsEventLayer<>(this.bodyDataLayer, this.filterList);
+            GlazedListsEventLayer<Object> glazedListsEventLayer =
+                    new GlazedListsEventLayer<>(this.bodyDataLayer, this.bodyDataLayer.getTreeList());
 
             // NOTE:
             // we need to tell the GroupByDataLayer to clear its cache if