void setRowColumn(TableItem row, TableColumn column, boolean notify) {
   if (this.row == row && this.column == column) {
     return;
   }
   if (this.row != null && this.row != row) {
     this.row.removeListener(SWT.Dispose, disposeItemListener);
     this.row = null;
   }
   if (this.column != null && this.column != column) {
     this.column.removeListener(SWT.Dispose, disposeColumnListener);
     this.column.removeListener(SWT.Move, resizeListener);
     this.column.removeListener(SWT.Resize, resizeListener);
     this.column = null;
   }
   if (row != null) {
     if (this.row != row) {
       this.row = row;
       row.addListener(SWT.Dispose, disposeItemListener);
       table.showItem(row);
     }
     if (this.column != column && column != null) {
       this.column = column;
       column.addListener(SWT.Dispose, disposeColumnListener);
       column.addListener(SWT.Move, resizeListener);
       column.addListener(SWT.Resize, resizeListener);
       table.showColumn(column);
     }
     int columnIndex = column == null ? 0 : table.indexOf(column);
     setBounds(row.getBounds(columnIndex));
     redraw();
     if (notify) {
       notifyListeners(SWT.Selection, new Event());
     }
   }
   getAccessible().setFocus(ACC.CHILDID_SELF);
 }