/*
* Copyright (C) 2010 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.android.monkeyrunner.recorder.actions;
import com.android.monkeyrunner.MonkeyDevice;
/**
* Action to drag the "finger" across the device.
*/
public class DragAction implements Action {
private final long timeMs;
private final int steps;
private final int startx;
private final int starty;
private final int endx;
private final int endy;
private final Direction dir;
public enum Direction {
NORTH, SOUTH, EAST, WEST;
private static String[] names;
static {
Direction[] values = Direction.values();
names = new String[values.length];
for (int x = 0; x < values.length; x++) {
names[x] = values[x].name();
}
}
public static String[] getNames() {
return names;
}
}
public DragAction(Direction dir,
int startx, int starty, int endx, int endy,
int numSteps, long millis) {
this.dir = dir;
this.startx = startx;
this.starty = starty;
this.endx = endx;
this.endy = endy;
steps = numSteps;
timeMs = millis;
}
@Override
public String getDisplayName() {
return String.format("Fling %s", dir.name().toLowerCase());
}
@Override
public String serialize() {
float duration = timeMs / 1000.0f;
String pydict = PyDictUtilBuilder.newBuilder().
addTuple("start", startx, starty).
addTuple("end", endx, endy).
add("duration", duration).
add("steps", steps).
build();
return "DRAG|" + pydict;
}
@Override
public void execute(MonkeyDevice device) {
device.drag(startx, starty, endx, endy, steps, timeMs);
}
}