// Path: src/main/java/ru/colibri/ui/core/steps/AbsSteps.java
// @Log
// public abstract class AbsSteps extends Steps implements InitializingBean {
// 
//     private static final int TIMEOUT = 7;
//     private int currentTimeout;
// 
//     @Autowired
//     protected TestContext testContext;
// 
//     @Autowired
//     protected AppiumDriver driver;
// 
//     @Autowired(required = false)
//     protected IFinder finder;
// 
//     @Autowired
//     protected IPageProvider pageProvider;
// 
//     @Autowired
//     protected DriversSettings driverSettings;
// 
//     protected IPage getCurrentPage() {
//         return pageProvider.getCurrentPage();
//     }
// 
//     @Override
//     public void afterPropertiesSet() throws Exception {
//         log.info(String.format("Bean %s loaded", this.getClass().getSimpleName()));
//     }
// 
//     protected DriversSettings getDriversSettings() {
//         return driverSettings;
//     }
// 
//     protected WebElement getWebElementByName(String elementName) {
//         IElement element = getCurrentPage().getElementByName(elementName);
//         return finder.findWebElement(element);
//     }
// 
//     protected void decreaseImplicitlyWait() {
//         decreaseImplicitlyWait(TIMEOUT);
//     }
// 
//     protected void decreaseImplicitlyWait(int timeout) {
//         currentTimeout = getDriversSettings().getImplicitlyWaitInSeconds();
//         driver.manage().timeouts().implicitlyWait(timeout, TimeUnit.SECONDS);
//     }
// 
//     protected void increaseImplicitlyWait() {
//         driver.manage().timeouts().implicitlyWait(currentTimeout, TimeUnit.SECONDS);
//     }
// }


import io.appium.java_client.TouchAction;
import io.appium.java_client.ios.IOSElement;
import org.jbehave.core.annotations.When;
import org.openqa.selenium.By;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.Point;
import org.openqa.selenium.WebElement;
import org.springframework.stereotype.Component;
import ru.colibri.ui.core.steps.AbsSteps;
import ru.yandex.qatools.allure.annotations.Step;
import static io.appium.java_client.touch.offset.PointOption.point;
        setNextPickerWheelValue(webElement);
    }

    @Step
    @When("установить пикер в предыдущее значение")
    public void setPrevPickerWheelValue() {
        WebElement webElement = driver.findElement(By.xpath(pickerWheelXPath));
        setPrevPickerWheelValue(webElement);
    }

    @Step
    @When("установить пикер в первое значение")
    public void setFirstPickerWheelValue() {
        WebElement webElement = driver.findElement(By.xpath(pickerWheelXPath));
        Point center = ((IOSElement) webElement).getCenter();
        Dimension size = webElement.getSize();
        int height = size.getHeight();
        Point target = new Point(center.getX(), center.getY() - (int) (height * stepToLast));
        TouchAction touchAction = new TouchAction(driver);
        touchAction.press(point(target.getX(), target.getY())).release();
        touchAction.perform();
    }

    @Step
    @When("установить пикер в последнее значение")
    public void setLastPickerWheelValue() {
        WebElement webElement = driver.findElement(By.xpath(pickerWheelXPath));
        Point center = ((IOSElement) webElement).getCenter();
        Dimension size = webElement.getSize();
        int height = size.getHeight();
// Path: src/main/java/ru/colibri/ui/core/steps/AbsSteps.java
// @Log
// public abstract class AbsSteps extends Steps implements InitializingBean {
// 
//     private static final int TIMEOUT = 7;
//     private int currentTimeout;
// 
//     @Autowired
//     protected TestContext testContext;
// 
//     @Autowired
//     protected AppiumDriver driver;
// 
//     @Autowired(required = false)
//     protected IFinder finder;
// 
//     @Autowired
//     protected IPageProvider pageProvider;
// 
//     @Autowired
//     protected DriversSettings driverSettings;
// 
//     protected IPage getCurrentPage() {
//         return pageProvider.getCurrentPage();
//     }
// 
//     @Override
//     public void afterPropertiesSet() throws Exception {
//         log.info(String.format("Bean %s loaded", this.getClass().getSimpleName()));
//     }
// 
//     protected DriversSettings getDriversSettings() {
//         return driverSettings;
//     }
// 
//     protected WebElement getWebElementByName(String elementName) {
//         IElement element = getCurrentPage().getElementByName(elementName);
//         return finder.findWebElement(element);
//     }
// 
//     protected void decreaseImplicitlyWait() {
//         decreaseImplicitlyWait(TIMEOUT);
//     }
// 
//     protected void decreaseImplicitlyWait(int timeout) {
//         currentTimeout = getDriversSettings().getImplicitlyWaitInSeconds();
//         driver.manage().timeouts().implicitlyWait(timeout, TimeUnit.SECONDS);
//     }
// 
//     protected void increaseImplicitlyWait() {
//         driver.manage().timeouts().implicitlyWait(currentTimeout, TimeUnit.SECONDS);
//     }
// }


// Path: src/main/java/ru/colibri/ui/steps/ios/BaseIOSPickerWheelSteps.java
import io.appium.java_client.TouchAction;
import io.appium.java_client.ios.IOSElement;
import org.jbehave.core.annotations.When;
import org.openqa.selenium.By;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.Point;
import org.openqa.selenium.WebElement;
import org.springframework.stereotype.Component;
import ru.colibri.ui.core.steps.AbsSteps;
import ru.yandex.qatools.allure.annotations.Step;
import static io.appium.java_client.touch.offset.PointOption.point;

        setNextPickerWheelValue(webElement);
    }

    @Step
    @When("установить пикер в предыдущее значение")
    public void setPrevPickerWheelValue() {
        WebElement webElement = driver.findElement(By.xpath(pickerWheelXPath));
        setPrevPickerWheelValue(webElement);
    }

    @Step
    @When("установить пикер в первое значение")
    public void setFirstPickerWheelValue() {
        WebElement webElement = driver.findElement(By.xpath(pickerWheelXPath));
        Point center = ((IOSElement) webElement).getCenter();
        Dimension size = webElement.getSize();
        int height = size.getHeight();
        Point target = new Point(center.getX(), center.getY() - (int) (height * stepToLast));
        TouchAction touchAction = new TouchAction(driver);
        touchAction.press(point(target.getX(), target.getY())).release();
        touchAction.perform();
    }

    @Step
    @When("установить пикер в последнее значение")
    public void setLastPickerWheelValue() {
        WebElement webElement = driver.findElement(By.xpath(pickerWheelXPath));
        Point center = ((IOSElement) webElement).getCenter();
        Dimension size = webElement.getSize();
        int height = size.getHeight();
        Point target = new Point(center.getX(), center.getY() + (int) (height * stepToLast));