package org.sikuli.slides.driver; import org.sikuli.api.DesktopScreenRegion; import org.sikuli.api.ScreenRegion; import org.sikuli.api.Target; import org.sikuli.slides.api.models.Slide; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class DefaultSlideDriver implements SlideDriver { static Logger log = LoggerFactory.getLogger(DefaultSlideDriver.class); private SlideSpec spec; public DefaultSlideDriver(Slide slide){ interpretSlide(slide); } public DefaultSlideDriver(){ spec = new SlideSpec(); } void interpretSlide(Slide slide){ spec = new DefaultUISpecInterpreter().interpret(slide); } @Override public Widget findElement(String label) { Widget element = spec.findElementByLabel(label); if (element == null) // element of the given label does not exist return null; log.debug("attempt to find: "+ element); Target target = element.getTarget(); ScreenRegion screen = getScreenRegion(); ScreenRegion found = screen.find(target); if (found != null){ log.debug("target is found at: " + found); element.setScreenRegion(found); }else{ log.debug("target is not found!"); } return element; } private ScreenRegion getScreenRegion() { return new DesktopScreenRegion(); } }