Since net.mygwt.ui.client.viewer.TableViewer#setSelection(ISelection, boolean) uses fairly ineffective approach and selects/deselects every item in a table, there is enormous amounts of SelectionChange events fired even for simple cases.
For instance, if none is selected and I call setSelection(new DefaultSelection()) on a table with 100 rows, 100 SelectionChange events will be generated.
One possible way to fix is in attached patch.
It also fixes a little problem with render listener.