Bug 565581 - Fix issues reported by Sonar

Change-Id: I463843c33d5fd089f1cafad83c45d4f0258267de
Signed-off-by: Dirk Fauth <dirk.fauth@googlemail.com>
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
index cf5d665..650592a 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/NatTable.java
@@ -117,15 +117,15 @@
 
     private final EventConflaterChain conflaterChain;
 
-    private final List<IOverlayPainter> overlayPainters = new ArrayList<IOverlayPainter>();
+    private final List<IOverlayPainter> overlayPainters = new ArrayList<>();
 
-    private final List<IPersistable> persistables = new LinkedList<IPersistable>();
+    private final List<IPersistable> persistables = new LinkedList<>();
 
     private ILayer underlyingLayer;
 
     private IConfigRegistry configRegistry;
 
-    protected final Collection<IConfiguration> configurations = new LinkedList<IConfiguration>();
+    protected final Collection<IConfiguration> configurations = new LinkedList<>();
 
     protected String id = GUIHelper.getSequenceNumber();
 
@@ -463,6 +463,7 @@
 
     @Override
     protected void checkSubclass() {
+        /* Do nothing - Subclassing is allowed */
     }
 
     protected void initInternalListener() {
@@ -493,11 +494,6 @@
         });
     }
 
-    @Override
-    public boolean forceFocus() {
-        return super.forceFocus();
-    }
-
     // Painting ///////////////////////////////////////////////////////////////
 
     public List<IOverlayPainter> getOverlayPainters() {
@@ -674,9 +670,7 @@
             throw new IllegalStateException("Layer must be set before configure is called"); //$NON-NLS-1$
         }
 
-        if (this.underlyingLayer != null) {
-            this.underlyingLayer.configure(getConfigRegistry(), getUiBindingRegistry());
-        }
+        this.underlyingLayer.configure(getConfigRegistry(), getUiBindingRegistry());
 
         for (IConfiguration configuration : this.configurations) {
             configuration.configureLayer(this);
@@ -844,7 +838,7 @@
 
     // Events
 
-    private List<ILayerListener> listeners = new ArrayList<ILayerListener>();
+    private List<ILayerListener> listeners = new ArrayList<>();
 
     /**
      * {@link ReadWriteLock} that is used to ensure that no concurrent
@@ -863,7 +857,7 @@
     public void addLayerListener(ILayerListener listener) {
         this.eventListenerLock.writeLock().lock();
         try {
-            this.listeners = new ArrayList<ILayerListener>(this.listeners);
+            this.listeners = new ArrayList<>(this.listeners);
             this.listeners.add(listener);
         } finally {
             this.eventListenerLock.writeLock().unlock();
@@ -874,7 +868,7 @@
     public void removeLayerListener(ILayerListener listener) {
         this.eventListenerLock.writeLock().lock();
         try {
-            this.listeners = new ArrayList<ILayerListener>(this.listeners);
+            this.listeners = new ArrayList<>(this.listeners);
             this.listeners.remove(listener);
         } finally {
             this.eventListenerLock.writeLock().unlock();
@@ -974,7 +968,7 @@
 
     @Override
     public Collection<ILayer> getUnderlyingLayersByColumnPosition(int columnPosition) {
-        Collection<ILayer> underlyingLayers = new HashSet<ILayer>();
+        Collection<ILayer> underlyingLayers = new HashSet<>();
         underlyingLayers.add(this.underlyingLayer);
         return underlyingLayers;
     }
@@ -1062,7 +1056,7 @@
 
     @Override
     public Collection<ILayer> getUnderlyingLayersByRowPosition(int rowPosition) {
-        Collection<ILayer> underlyingLayers = new HashSet<ILayer>();
+        Collection<ILayer> underlyingLayers = new HashSet<>();
         underlyingLayers.add(this.underlyingLayer);
         return underlyingLayers;
     }
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/copy/command/InternalCopyDataCommandHandler.java b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/copy/command/InternalCopyDataCommandHandler.java
index 4ffbc9f..b43e931 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/copy/command/InternalCopyDataCommandHandler.java
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/copy/command/InternalCopyDataCommandHandler.java
@@ -69,6 +69,7 @@
      * disabling formula evaluation.
      */
     protected void preInternalCopy() {
+        // no specific action needed to be performed by default
     }
 
     /**
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/copy/command/InternalPasteDataCommandHandler.java b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/copy/command/InternalPasteDataCommandHandler.java
index 8a24c06..52b7592 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/copy/command/InternalPasteDataCommandHandler.java
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/copy/command/InternalPasteDataCommandHandler.java
@@ -171,6 +171,7 @@
      * disabling formula evaluation.
      */
     protected void preInternalPaste() {
+        // no specific action needed to be performed by default
     }
 
     /**
@@ -178,6 +179,7 @@
      * enabling formula evaluation.
      */
     protected void postInternalPaste() {
+        // no specific action needed to be performed by default
     }
 
     @Override
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/copy/command/RowSpanningCopyDataCommandHandler.java b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/copy/command/RowSpanningCopyDataCommandHandler.java
index 84f2a3a..130a6a1 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/copy/command/RowSpanningCopyDataCommandHandler.java
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/copy/command/RowSpanningCopyDataCommandHandler.java
@@ -128,6 +128,7 @@
      * disabling formula evaluation.
      */
     protected void preInternalCopy() {
+        // no specific action needed to be performed by default
     }
 
     /**
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/MultiLineTextCellEditor.java b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/MultiLineTextCellEditor.java
index 31c9315..94f2131 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/MultiLineTextCellEditor.java
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/MultiLineTextCellEditor.java
@@ -17,8 +17,8 @@
 import org.eclipse.nebula.widgets.nattable.style.HorizontalAlignmentEnum;
 import org.eclipse.nebula.widgets.nattable.widget.EditModeEnum;
 import org.eclipse.swt.SWT;
+import org.eclipse.swt.events.KeyAdapter;
 import org.eclipse.swt.events.KeyEvent;
-import org.eclipse.swt.events.KeyListener;
 import org.eclipse.swt.graphics.Point;
 import org.eclipse.swt.graphics.Rectangle;
 import org.eclipse.swt.widgets.Composite;
@@ -105,7 +105,7 @@
         // will only be performed if CTRL + ENTER is pressed.
         if (openInline) {
             this.commitOnEnter = true;
-            textControl.addKeyListener(new KeyListener() {
+            textControl.addKeyListener(new KeyAdapter() {
 
                 @Override
                 public void keyReleased(KeyEvent event) {
@@ -116,10 +116,6 @@
                         }
                     }
                 }
-
-                @Override
-                public void keyPressed(KeyEvent e) {
-                }
             });
         }
 
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/TableCellEditor.java b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/TableCellEditor.java
index e6d7b3c..1efde85 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/TableCellEditor.java
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/edit/editor/TableCellEditor.java
@@ -536,6 +536,7 @@
 
                 @Override
                 public void applyEditorValue() {
+                    // no additional or adjusted action needed
                 }
             });
 
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/export/config/DefaultExportBindings.java b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/export/config/DefaultExportBindings.java
index eaed674..749c060 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/export/config/DefaultExportBindings.java
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/export/config/DefaultExportBindings.java
@@ -47,6 +47,7 @@
 
     @Override
     public void configureLayer(ILayer layer) {
+        // no specific layer configuration applied by this configuration
     }
 
 }
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/export/csv/CsvExporter.java b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/export/csv/CsvExporter.java
index f988f0b..ad7612a 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/export/csv/CsvExporter.java
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/export/csv/CsvExporter.java
@@ -153,7 +153,7 @@
             // If double-quotes are used to enclose fields, then a double-quote
             // appearing inside a field must be escaped by preceding it with
             // another double quote.
-            value = value.replaceAll("\"", "\"\""); //$NON-NLS-1$ //$NON-NLS-2$
+            value = value.replace("\"", "\"\""); //$NON-NLS-1$ //$NON-NLS-2$
 
             // Fields containing line breaks (CRLF), double quotes, and commas
             // should be enclosed in double-quotes.
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/export/excel/ExcelExporter.java b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/export/excel/ExcelExporter.java
index 11da38f..dad957b 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/export/excel/ExcelExporter.java
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/export/excel/ExcelExporter.java
@@ -93,6 +93,7 @@
 
     @Override
     public void exportEnd(OutputStream outputStream) throws IOException {
+        // no specific action needed on export end in this exporter
     }
 
     @Override
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/filterrow/FilterRowRegularExpressionConverter.java b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/filterrow/FilterRowRegularExpressionConverter.java
index 55558fa..f132277 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/filterrow/FilterRowRegularExpressionConverter.java
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/filterrow/FilterRowRegularExpressionConverter.java
@@ -45,6 +45,7 @@
  *
  * @since 1.4
  */
+@SuppressWarnings("java:S5361") // suppress false positive Sonar findings
 public class FilterRowRegularExpressionConverter extends DisplayConverter {
 
     @Override
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/filterrow/ParseResult.java b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/filterrow/ParseResult.java
index 039de24..a69a76c 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/filterrow/ParseResult.java
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/filterrow/ParseResult.java
@@ -61,9 +61,6 @@
     private MatchType matchType = MatchType.NONE;
     private String valueToMatch;
 
-    public ParseResult() {
-    }
-
     public MatchType getMatchOperation() {
         return this.matchType;
     }
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/filterrow/combobox/FilterNatCombo.java b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/filterrow/combobox/FilterNatCombo.java
index 5e1aa59..369dd49 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/filterrow/combobox/FilterNatCombo.java
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/filterrow/combobox/FilterNatCombo.java
@@ -286,10 +286,12 @@
 
             @Override
             public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
+                // no action on inputChanged
             }
 
             @Override
             public void dispose() {
+                // no action on dispose
             }
 
             @SuppressWarnings("unchecked")
@@ -303,6 +305,7 @@
 
             @Override
             public void removeListener(ILabelProviderListener listener) {
+                // no additional listener support
             }
 
             @Override
@@ -312,10 +315,12 @@
 
             @Override
             public void dispose() {
+                // no action on dispose
             }
 
             @Override
             public void addListener(ILabelProviderListener listener) {
+                // no additional listener support
             }
 
             @Override
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/command/ColumnGroupExpandCollapseCommandHandler.java b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/command/ColumnGroupExpandCollapseCommandHandler.java
index 2d8f452..8d19872 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/command/ColumnGroupExpandCollapseCommandHandler.java
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/command/ColumnGroupExpandCollapseCommandHandler.java
@@ -45,43 +45,41 @@
 
         // if group of columnIndex is not collapseable return without any
         // further operation ...
-        if (columnGroup == null || !columnGroup.isCollapseable()) {
-            return true;
+        if (columnGroup != null && columnGroup.isCollapseable()) {
+            ArrayList<Integer> columnIndexes = new ArrayList<>(columnGroup.getMembers());
+            columnIndexes.removeAll(columnGroup.getStaticColumnIndexes());
+
+            boolean wasCollapsed = columnGroup.isCollapsed();
+
+            if (wasCollapsed) {
+                // we need to cleanup the column position list before we toggle
+                // because the columns are hidden before the toggle and will be
+                // visible afterwards
+                cleanupColumnIndexes(columnIndexes);
+            }
+
+            columnGroup.toggleCollapsed();
+
+            if (!wasCollapsed) {
+                // we need to cleanup the column position list after we toggle
+                // because the columns are hidden now
+                cleanupColumnIndexes(columnIndexes);
+            }
+
+            ILayerEvent event;
+            if (wasCollapsed) {
+                event = new ShowColumnPositionsEvent(
+                        this.columnGroupExpandCollapseLayer,
+                        columnIndexes.stream().mapToInt(Integer::intValue).toArray());
+            } else {
+                event = new HideColumnPositionsEvent(
+                        this.columnGroupExpandCollapseLayer,
+                        columnIndexes.stream().mapToInt(Integer::intValue).toArray());
+            }
+
+            this.columnGroupExpandCollapseLayer.fireLayerEvent(event);
         }
 
-        ArrayList<Integer> columnIndexes = new ArrayList<>(columnGroup.getMembers());
-        columnIndexes.removeAll(columnGroup.getStaticColumnIndexes());
-
-        boolean wasCollapsed = columnGroup.isCollapsed();
-
-        if (wasCollapsed) {
-            // we need to cleanup the column position list before we toggle
-            // because the columns are hidden before the toggle and will be
-            // visible afterwards
-            cleanupColumnIndexes(columnIndexes);
-        }
-
-        columnGroup.toggleCollapsed();
-
-        if (!wasCollapsed) {
-            // we need to cleanup the column position list after we toggle
-            // because the columns are hidden now
-            cleanupColumnIndexes(columnIndexes);
-        }
-
-        ILayerEvent event;
-        if (wasCollapsed) {
-            event = new ShowColumnPositionsEvent(
-                    this.columnGroupExpandCollapseLayer,
-                    columnIndexes.stream().mapToInt(Integer::intValue).toArray());
-        } else {
-            event = new HideColumnPositionsEvent(
-                    this.columnGroupExpandCollapseLayer,
-                    columnIndexes.stream().mapToInt(Integer::intValue).toArray());
-        }
-
-        this.columnGroupExpandCollapseLayer.fireLayerEvent(event);
-
         return true;
     }
 
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/model/RowGroupModel.java b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/model/RowGroupModel.java
index 53c70a6..50e64f3 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/model/RowGroupModel.java
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/group/model/RowGroupModel.java
@@ -218,10 +218,12 @@
 
     @Override
     public void saveState(String prefix, Properties properties) {
+        // no additional states that need to be saved
     }
 
     @Override
     public void loadState(String prefix, Properties properties) {
+        // no additional states that need to be saved
     }
 
     @Override
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/search/CellValueAsStringComparator.java b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/search/CellValueAsStringComparator.java
index cef688f..e08a14f 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/search/CellValueAsStringComparator.java
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/search/CellValueAsStringComparator.java
@@ -21,9 +21,6 @@
  */
 public class CellValueAsStringComparator<T extends Comparable<String>> implements Comparator<T> {
 
-    public CellValueAsStringComparator() {
-    }
-
     @Override
     public int compare(T firstValue, T secondValue) {
         String firstCellValue = firstValue.toString();
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/sort/config/DefaultSortConfiguration.java b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/sort/config/DefaultSortConfiguration.java
index 0aea31f..4e1293f 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/sort/config/DefaultSortConfiguration.java
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/sort/config/DefaultSortConfiguration.java
@@ -61,6 +61,7 @@
 
     @Override
     public void configureLayer(ILayer layer) {
+        // no specific layer configuration applied
     }
 
     @Override
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/style/editor/command/DisplayColumnStyleEditorCommandHandler.java b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/style/editor/command/DisplayColumnStyleEditorCommandHandler.java
index e0029a2..4461bdb 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/style/editor/command/DisplayColumnStyleEditorCommandHandler.java
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/style/editor/command/DisplayColumnStyleEditorCommandHandler.java
@@ -78,20 +78,18 @@
         this.dialog = new ColumnStyleEditorDialog(Display.getCurrent().getActiveShell(), clickedCellStyle);
         this.dialog.open();
 
-        if (this.dialog.isCancelPressed()) {
-            return true;
-        }
-
-        int[] selectedColumns = getSelectedColumnIndeces();
-        if (selectedColumns.length > 0) {
-            applySelectedStyleToColumns(command, selectedColumns);
-            // fire refresh event
-            this.selectionLayer.fireLayerEvent(
-                    new ColumnVisualUpdateEvent(this.selectionLayer, this.selectionLayer.getSelectedColumnPositions()));
-        } else {
-            applySelectedStyle();
-            // fire refresh event
-            this.selectionLayer.fireLayerEvent(new VisualRefreshEvent(this.selectionLayer));
+        if (!this.dialog.isCancelPressed()) {
+            int[] selectedColumns = getSelectedColumnIndeces();
+            if (selectedColumns.length > 0) {
+                applySelectedStyleToColumns(command, selectedColumns);
+                // fire refresh event
+                this.selectionLayer.fireLayerEvent(
+                        new ColumnVisualUpdateEvent(this.selectionLayer, this.selectionLayer.getSelectedColumnPositions()));
+            } else {
+                applySelectedStyle();
+                // fire refresh event
+                this.selectionLayer.fireLayerEvent(new VisualRefreshEvent(this.selectionLayer));
+            }
         }
 
         return true;
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/action/NoOpMouseAction.java b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/action/NoOpMouseAction.java
index 868e825..946622b 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/action/NoOpMouseAction.java
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/action/NoOpMouseAction.java
@@ -19,6 +19,7 @@
 
     @Override
     public void run(NatTable natTable, MouseEvent event) {
+        // no action should be performed
     }
 
 }
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/mode/AbstractModeEventHandler.java b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/mode/AbstractModeEventHandler.java
index e5122e7..014b44e 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/mode/AbstractModeEventHandler.java
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/ui/mode/AbstractModeEventHandler.java
@@ -42,46 +42,57 @@
 
     @Override
     public void cleanup() {
+        // not implemented
     }
 
     @Override
     public void keyPressed(KeyEvent event) {
+        // not implemented
     }
 
     @Override
     public void keyReleased(KeyEvent event) {
+        // not implemented
     }
 
     @Override
     public void mouseDoubleClick(MouseEvent event) {
+        // not implemented
     }
 
     @Override
     public void mouseDown(MouseEvent event) {
+        // not implemented
     }
 
     @Override
     public void mouseUp(MouseEvent event) {
+        // not implemented
     }
 
     @Override
     public void mouseMove(MouseEvent event) {
+        // not implemented
     }
 
     @Override
     public void mouseEnter(MouseEvent e) {
+        // not implemented
     }
 
     @Override
     public void mouseExit(MouseEvent e) {
+        // not implemented
     }
 
     @Override
     public void mouseHover(MouseEvent e) {
+        // not implemented
     }
 
     @Override
     public void focusGained(FocusEvent event) {
+        // not implemented
     }
 
     @Override
diff --git a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/viewport/command/RecalculateScrollBarsCommand.java b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/viewport/command/RecalculateScrollBarsCommand.java
index 8e31d5f..9ae6662 100644
--- a/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/viewport/command/RecalculateScrollBarsCommand.java
+++ b/org.eclipse.nebula.widgets.nattable.core/src/org/eclipse/nebula/widgets/nattable/viewport/command/RecalculateScrollBarsCommand.java
@@ -15,7 +15,4 @@
 import org.eclipse.nebula.widgets.nattable.command.AbstractContextFreeCommand;
 
 public class RecalculateScrollBarsCommand extends AbstractContextFreeCommand {
-
-    public RecalculateScrollBarsCommand() {
-    }
 }
diff --git a/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_600_GlazedLists/_603_Filter/_6036_SingleFieldFilterExample.java b/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_600_GlazedLists/_603_Filter/_6036_SingleFieldFilterExample.java
index 861a841..30fc13f 100644
--- a/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_600_GlazedLists/_603_Filter/_6036_SingleFieldFilterExample.java
+++ b/org.eclipse.nebula.widgets.nattable.examples/src/org/eclipse/nebula/widgets/nattable/examples/_600_GlazedLists/_603_Filter/_6036_SingleFieldFilterExample.java
@@ -50,6 +50,8 @@
 import org.eclipse.swt.SWT;
 import org.eclipse.swt.events.KeyAdapter;
 import org.eclipse.swt.events.KeyEvent;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
 import org.eclipse.swt.layout.GridLayout;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.swt.widgets.Control;
@@ -195,6 +197,19 @@
             }
         });
 
+        input.addModifyListener(new ModifyListener() {
+
+            @Override
+            public void modifyText(ModifyEvent e) {
+                String text = input.getText();
+                if (text == null || text.isEmpty()) {
+                    matcherEditor.setFilterText(new String[] {});
+                    regexMarkup.setRegexValue("");
+                    natTable.refresh(false);
+                }
+            }
+        });
+
         return natTable;
     }
 
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 9c2b08f..b6e6943 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
@@ -123,7 +123,6 @@
 import org.eclipse.nebula.widgets.nattable.tree.TreeLayer;
 import org.eclipse.nebula.widgets.nattable.tree.command.TreeCollapseAllCommand;
 import org.eclipse.nebula.widgets.nattable.tree.command.TreeExpandAllCommand;
-import org.eclipse.nebula.widgets.nattable.ui.action.IKeyAction;
 import org.eclipse.nebula.widgets.nattable.ui.binding.UiBindingRegistry;
 import org.eclipse.nebula.widgets.nattable.ui.matcher.KeyEventMatcher;
 import org.eclipse.nebula.widgets.nattable.ui.matcher.MouseEventMatcher;
@@ -135,7 +134,6 @@
 import org.eclipse.nebula.widgets.nattable.util.GUIHelper;
 import org.eclipse.nebula.widgets.nattable.viewport.ViewportLayer;
 import org.eclipse.swt.SWT;
-import org.eclipse.swt.events.KeyEvent;
 import org.eclipse.swt.events.MouseEvent;
 import org.eclipse.swt.events.SelectionAdapter;
 import org.eclipse.swt.events.SelectionEvent;
@@ -919,20 +917,10 @@
         public void configureUiBindings(UiBindingRegistry uiBindingRegistry) {
             uiBindingRegistry.registerKeyBinding(
                     new KeyEventMatcher(SWT.MOD1, 's'),
-                    new IKeyAction() {
-                        @Override
-                        public void run(NatTable natTable, KeyEvent event) {
-                            natTable.doCommand(new SaveDataChangesCommand());
-                        }
-                    });
+                    (natTable, event) -> natTable.doCommand(new SaveDataChangesCommand()));
             uiBindingRegistry.registerKeyBinding(
                     new KeyEventMatcher(SWT.MOD1, 'd'),
-                    new IKeyAction() {
-                        @Override
-                        public void run(NatTable natTable, KeyEvent event) {
-                            natTable.doCommand(new DiscardDataChangesCommand());
-                        }
-                    });
+                    (natTable, event) -> natTable.doCommand(new DiscardDataChangesCommand()));
 
         }
 
diff --git a/org.eclipse.nebula.widgets.nattable.extension.glazedlists/src/org/eclipse/nebula/widgets/nattable/extension/glazedlists/groupBy/GroupByHeaderLayer.java b/org.eclipse.nebula.widgets.nattable.extension.glazedlists/src/org/eclipse/nebula/widgets/nattable/extension/glazedlists/groupBy/GroupByHeaderLayer.java
index 32d9186..b84f840 100644
--- a/org.eclipse.nebula.widgets.nattable.extension.glazedlists/src/org/eclipse/nebula/widgets/nattable/extension/glazedlists/groupBy/GroupByHeaderLayer.java
+++ b/org.eclipse.nebula.widgets.nattable.extension.glazedlists/src/org/eclipse/nebula/widgets/nattable/extension/glazedlists/groupBy/GroupByHeaderLayer.java
@@ -189,8 +189,8 @@
             }
 
             @Override
-            public void setDataValue(int columnIndex, int rowIndex,
-                    Object newValue) {
+            public void setDataValue(int columnIndex, int rowIndex, Object newValue) {
+                // no local data storage
             }
 
             @Override
diff --git a/org.eclipse.nebula.widgets.nattable.extension.glazedlists/src/org/eclipse/nebula/widgets/nattable/extension/glazedlists/groupBy/action/GroupByDragMode.java b/org.eclipse.nebula.widgets.nattable.extension.glazedlists/src/org/eclipse/nebula/widgets/nattable/extension/glazedlists/groupBy/action/GroupByDragMode.java
index 9719b3f..7778629 100644
--- a/org.eclipse.nebula.widgets.nattable.extension.glazedlists/src/org/eclipse/nebula/widgets/nattable/extension/glazedlists/groupBy/action/GroupByDragMode.java
+++ b/org.eclipse.nebula.widgets.nattable.extension.glazedlists/src/org/eclipse/nebula/widgets/nattable/extension/glazedlists/groupBy/action/GroupByDragMode.java
@@ -35,23 +35,21 @@
     @Override
     public void mouseDown(NatTable natTable, MouseEvent event) {
         int columnPosition = natTable.getColumnPositionByX(event.x);
-        this.selectedColumnIndex = natTable
-                .getColumnIndexByPosition(columnPosition);
+        this.selectedColumnIndex = natTable.getColumnIndexByPosition(columnPosition);
     }
 
     @Override
     public void mouseMove(NatTable natTable, MouseEvent event) {
+        // no action on mouse move
     }
 
     @Override
     public void mouseUp(NatTable natTable, MouseEvent event) {
-        LabelStack regionLabels = natTable
-                .getRegionLabelsByXY(event.x, event.y);
+        LabelStack regionLabels = natTable.getRegionLabelsByXY(event.x, event.y);
         if (regionLabels != null
                 && regionLabels.hasLabel(GroupByHeaderLayer.GROUP_BY_REGION)
                 && this.selectedColumnIndex != -1) {
-            natTable.doCommand(new GroupByColumnIndexCommand(
-                    this.selectedColumnIndex));
+            natTable.doCommand(new GroupByColumnIndexCommand(this.selectedColumnIndex));
             this.selectedColumnIndex = -1;
         }
     }
diff --git a/org.eclipse.nebula.widgets.nattable.extension.glazedlists/src/org/eclipse/nebula/widgets/nattable/extension/glazedlists/hideshow/GlazedListsRowHideShowLayer.java b/org.eclipse.nebula.widgets.nattable.extension.glazedlists/src/org/eclipse/nebula/widgets/nattable/extension/glazedlists/hideshow/GlazedListsRowHideShowLayer.java
index e084582..fb1265e 100644
--- a/org.eclipse.nebula.widgets.nattable.extension.glazedlists/src/org/eclipse/nebula/widgets/nattable/extension/glazedlists/hideshow/GlazedListsRowHideShowLayer.java
+++ b/org.eclipse.nebula.widgets.nattable.extension.glazedlists/src/org/eclipse/nebula/widgets/nattable/extension/glazedlists/hideshow/GlazedListsRowHideShowLayer.java
@@ -14,7 +14,6 @@
 
 import java.io.ByteArrayInputStream;
 import java.io.ByteArrayOutputStream;
-import java.io.IOException;
 import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.io.Serializable;
@@ -366,10 +365,8 @@
                     + PERSISTENCE_KEY_HIDDEN_ROW_IDS_COUNT,
                     Integer.valueOf(this.rowIdsToHide.size()).toString());
 
-            ObjectOutputStream out = null;
-            try {
-                ByteArrayOutputStream bos = new ByteArrayOutputStream();
-                out = new ObjectOutputStream(bos);
+            try (ByteArrayOutputStream bos = new ByteArrayOutputStream();
+                    ObjectOutputStream out = new ObjectOutputStream(bos)) {
                 for (Serializable serializable : this.rowIdsToHide) {
                     out.writeObject(serializable);
                 }
@@ -377,14 +374,6 @@
                         new String(Base64.encodeBase64(bos.toByteArray())));
             } catch (Exception e) {
                 LOG.error("Error while persisting GlazedListsRowHideShowLayer state", e); //$NON-NLS-1$
-            } finally {
-                if (out != null) {
-                    try {
-                        out.close();
-                    } catch (IOException e) {
-                        LOG.error("Error on closing the output stream", e); //$NON-NLS-1$
-                    }
-                }
             }
         }
 
@@ -398,10 +387,7 @@
         int count = property != null ? Integer.valueOf(property) : 0;
         property = properties.getProperty(prefix + PERSISTENCE_KEY_HIDDEN_ROW_IDS);
         if (property != null) {
-            ObjectInputStream in = null;
-            try {
-                ByteArrayInputStream bis = new ByteArrayInputStream(Base64.decodeBase64(property.getBytes()));
-                in = new ObjectInputStream(bis);
+            try (ObjectInputStream in = new ObjectInputStream(new ByteArrayInputStream(Base64.decodeBase64(property.getBytes())))) {
                 Serializable ser = null;
                 for (int i = 0; i < count; i++) {
                     ser = (Serializable) in.readObject();
@@ -409,14 +395,6 @@
                 }
             } catch (Exception e) {
                 LOG.error("Error while restoring GlazedListsRowHideShowLayer state", e); //$NON-NLS-1$
-            } finally {
-                if (in != null) {
-                    try {
-                        in.close();
-                    } catch (IOException e) {
-                        LOG.error("Error on closing the input stream", e); //$NON-NLS-1$
-                    }
-                }
             }
         }
         this.hideRowByIdMatcherEditor.fireChange();
diff --git a/org.eclipse.nebula.widgets.nattable.extension.nebula/src/org/eclipse/nebula/widgets/nattable/extension/nebula/richtext/RegexMarkupValue.java b/org.eclipse.nebula.widgets.nattable.extension.nebula/src/org/eclipse/nebula/widgets/nattable/extension/nebula/richtext/RegexMarkupValue.java
index 9d84bbc..bd88a4a 100644
--- a/org.eclipse.nebula.widgets.nattable.extension.nebula/src/org/eclipse/nebula/widgets/nattable/extension/nebula/richtext/RegexMarkupValue.java
+++ b/org.eclipse.nebula.widgets.nattable.extension.nebula/src/org/eclipse/nebula/widgets/nattable/extension/nebula/richtext/RegexMarkupValue.java
@@ -77,9 +77,8 @@
         String result = "";
         if (getOriginalRegexValue() != null && !getOriginalRegexValue().isEmpty()) {
             XMLEventReader parser = null;
-            try {
-                parser = this.factory.createXMLEventReader(
-                        new StringReader(RichTextPainter.FAKE_ROOT_TAG_START + input + RichTextPainter.FAKE_ROOT_TAG_END));
+            try (StringReader reader = new StringReader(RichTextPainter.FAKE_ROOT_TAG_START + input + RichTextPainter.FAKE_ROOT_TAG_END)) {
+                parser = this.factory.createXMLEventReader(reader);
 
                 while (parser.hasNext()) {
                     XMLEvent event = parser.nextEvent();