@Override
  public boolean processMouseMove(int x, int y, int cellSize) {
    if (pressed) {
      if (!complete) {
        area.setArea(
            area.getTopLeft(),
            (double) y / cellSize - area.getTopLeft().get(1),
            (double) x / cellSize - area.getTopLeft().get(0));
        return true;
      } else {

        Coordinate currMousePos = new Coordinate(null, x / cellSize, y / cellSize);
        Coordinate shift = currMousePos.minus(prevMousePress);

        area.setArea(area.getTopLeft().plus(shift), area.getHeight(), area.getWidth());

        if (shift.get(0) != 0 || shift.get(1) != 0) {
          prevMousePress = currMousePos;
        }
        return true;
      }
    }
    return false;
  }