package org.sikuli.slides.driver; import org.sikuli.api.ScreenRegion; import org.sikuli.api.Target; import org.sikuli.api.robot.Keyboard; import org.sikuli.api.robot.Mouse; import org.sikuli.api.robot.desktop.DesktopKeyboard; import org.sikuli.api.robot.desktop.DesktopMouse; import org.sikuli.api.visual.Canvas; import org.sikuli.api.visual.DesktopCanvas; import com.google.common.base.Objects; class DefaultWidget implements Widget { private Target target; private String label; private ScreenRegion screenRegion = null; private Mouse mouse = new DesktopMouse(); private Keyboard keyboard = new DesktopKeyboard(); private Canvas canvas = new DesktopCanvas(); public DefaultWidget(){ } public DefaultWidget(Target t, String label){ this.target = t; this.label = label; } public Target getTarget() { return target; } public String getLabel() { return label; } public void click(){ ScreenRegion r = getScreenRegion(); if (r != null){ mouse.click(r.getCenter()); } } @Override public void doubeClick() { ScreenRegion r = getScreenRegion(); if (r != null){ mouse.doubleClick(r.getCenter()); } } @Override public void type(String text) { ScreenRegion r = getScreenRegion(); if (r != null){ mouse.click(r.getCenter()); keyboard.type(text); } } @Override public void paste(String text) { ScreenRegion r = getScreenRegion(); if (r != null){ mouse.click(r.getCenter()); keyboard.paste(text); } } public String toString(){ return Objects.toStringHelper(getClass().getSimpleName()) .add("label", label) .add("target", target) .toString(); } @Override public void setScreenRegion(ScreenRegion screenRegion) { this.screenRegion = screenRegion; } @Override public ScreenRegion getScreenRegion(){ return screenRegion; } @Override public void highlight() { ScreenRegion r = getScreenRegion(); if (r != null){ canvas.clear(); canvas.add().box().around(r); canvas.display(1); } } @Override public void rightClick() { ScreenRegion r = getScreenRegion(); if (r != null){ mouse.rightClick(r.getCenter()); } } @Override public void hover() { ScreenRegion r = getScreenRegion(); if (r != null){ mouse.hover(r.getCenter()); } } @Override public void drag() { ScreenRegion r = getScreenRegion(); if (r != null){ mouse.drag(r.getCenter()); } } @Override public void drop() { ScreenRegion r = getScreenRegion(); if (r != null){ mouse.drop(r.getCenter()); } } }