package org.societies.integration.api.selenium.components;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;

public class ProfileSettingsAddPreferenceDialog extends BasePageComponent {
    private static final String DIALOG_XPATH = "//*[@id='mainForm:addPreferenceDialog']";
    private static final String SAVE_BTN_XPATH = "//*[@id='mainForm:addPreferenceDialog']//*[contains(@class, 'ui-button-text') and text()='Save']";
    private static final String CANCEL_BTN_XPATH = "//*[@id='mainForm:addPreferenceDialog']//*[contains(@class, 'ui-button-text') and text()='Cancel']";
    private static final String NAME_INPUT_FIELD_XPATH = "//input[@name='mainForm:addPreferenceName_editableInput']";
    private static final String SERVICE_DROPDOWN_ID = "mainForm:addPreferenceService";

    public ProfileSettingsAddPreferenceDialog(WebDriver driver) {
        super(driver);
        waitUntilVisible(By.xpath(DIALOG_XPATH));
    }

    public ProfileSettingsAddPreferenceDialog clickSave() {
        clickButton(By.xpath(SAVE_BTN_XPATH));
        waitUntilNotVisible(By.xpath(DIALOG_XPATH));
        return this;
    }

    public ProfileSettingsAddPreferenceDialog clickCancel() {
        clickButton(By.xpath(CANCEL_BTN_XPATH));
        waitUntilNotVisible(By.xpath(DIALOG_XPATH));
        return this;
    }

    public ProfileSettingsAddPreferenceDialog setName(String value) {
        setFieldValue(value, By.xpath(NAME_INPUT_FIELD_XPATH));
        return this;
    }

    public ProfileSettingsAddPreferenceDialog setService(String service) {
        pickDropdownValue(service, SERVICE_DROPDOWN_ID);
        return this;
    }
}
