@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; }