@Override
  public void close() {
    Display display = getDisplay();
    display.getContainerMouseListeners().remove(displayMouseHandler);

    super.close();
  }
        @Override
        public boolean mouseWheel(
            Container container,
            Mouse.ScrollType scrollType,
            int scrollAmount,
            int wheelRotation,
            int x,
            int y) {
          Display display = (Display) container;
          Window window = (Window) display.getComponentAt(x, y);

          return (window != TableViewRowEditor.this);
        }
        @Override
        public boolean mouseDown(Container container, Mouse.Button button, int x, int y) {
          Display display = (Display) container;
          Window window = (Window) display.getComponentAt(x, y);

          boolean consumed;
          if (window != TableViewRowEditor.this && (window == null || !isOwner(window))) {
            endEdit(true);
            consumed = true;
          } else {
            consumed = false;
          }

          return consumed;
        }
  @Override
  public void open(Display display, Window owner) {
    if (tableView == null) {
      throw new IllegalStateException();
    }

    super.open(display, owner);
    display.getContainerMouseListeners().add(displayMouseHandler);
  }