@Override
  public void run(final NatTable natTable, final MouseEvent event) {
    final long position =
        CellEdgeDetectUtil.getPositionToResize(natTable, new LPoint(event.x, event.y), HORIZONTAL);
    if (position < 0) {
      return;
    }

    final InitializeAutoResizeCommand command =
        new InitializeAutoResizeCommand(natTable.getDim(HORIZONTAL), position);
    natTable.doCommand(command);
  }
 @Override
 public void run(final NatTable natTable, final MouseEvent event) {
   final ILayerCell cell =
       natTable.getCellByPosition(
           natTable.getColumnPositionByX(event.x), natTable.getRowPositionByY(event.y));
   if (cell == null) {
     return;
   }
   final ILayerDim layerDim = natTable.getDim(this.orientation);
   final ILayerCellDim cellDim = cell.getDim(this.orientation);
   if (cellDim.getPositionSpan() > 1) {
     final List<LRange> positions =
         Collections.singletonList(
             new LRange(
                 cellDim.getOriginPosition(),
                 cellDim.getOriginPosition() + cellDim.getPositionSpan()));
     natTable.doCommand(
         new ViewportSelectDimPositionsCommand(
             layerDim,
             cellDim.getPosition(),
             positions,
             cellDim.getPosition(),
             SelectionFlags.swt2Flags(event.stateMask)));
   } else {
     natTable.doCommand(
         new ViewportSelectDimPositionsCommand(
             layerDim, cellDim.getPosition(), SelectionFlags.swt2Flags(event.stateMask)));
   }
 }
 @Override
 public void run(final NatTable natTable, final KeyEvent event) {
   natTable.doCommand(new TickUpdateCommand(natTable.getConfigRegistry(), this.increment));
 }
 @Override
 public void run(final NatTable natTable, final MouseEvent event) {
   final long columnPosition = ((NatEventData) event.data).getColumnPosition();
   natTable.doCommand(
       new SortDimPositionCommand(natTable.getDim(HORIZONTAL), columnPosition, this.accumulate));
 }