@Override
  public void mouseDown(MouseEvent event) {
    if (this.natTable.commitAndCloseActiveCellEditor()) {
      IMouseAction mouseDownAction = this.natTable.getUiBindingRegistry().getMouseDownAction(event);
      if (mouseDownAction != null) {
        event.data = NatEventData.createInstanceFromEvent(event);
        mouseDownAction.run(this.natTable, event);
      }

      IMouseAction singleClickAction = getUiBindingRegistry().getSingleClickAction(event);
      IMouseAction doubleClickAction = getUiBindingRegistry().getDoubleClickAction(event);
      IDragMode dragMode = this.natTable.getUiBindingRegistry().getDragMode(event);

      if (singleClickAction != null || doubleClickAction != null || dragMode != null) {
        switchMode(
            new MouseModeEventHandler(
                getModeSupport(),
                this.natTable,
                event,
                singleClickAction,
                doubleClickAction,
                dragMode));
      }
    }
  }
 @Override
 public synchronized void mouseHover(MouseEvent event) {
   if (event.x >= 0 && event.y >= 0) {
     IMouseAction mouseHoverAction = getUiBindingRegistry().getMouseHoverAction(event);
     if (mouseHoverAction != null) {
       event.data = NatEventData.createInstanceFromEvent(event);
       mouseHoverAction.run(this.natTable, event);
     }
   }
 }