/* * Copyright 2004-2016 EPAM Systems * * This file is part of JDI project. * * JDI is free software: you can redistribute it and/or modify * it under the terms of the GNU Lesser General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * JDI is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; * without even the implied warranty ofMERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. * See the GNU Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with JDI. If not, see <http://www.gnu.org/licenses/>. */ /** * ************************************************************************* * Copyright (C) 2014 GGA Software Services LLC * <p> * This file may be distributed and/or modified under the terms of the * GNU General Public License version 3 as published by the Free Software * Foundation. * <p> * This file is provided AS IS with NO WARRANTY OF ANY KIND, INCLUDING THE * WARRANTY OF DESIGN, MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. * <p> * You should have received a copy of the GNU General Public License * along with this program; if not, see <http://www.gnu.org/licenses>. * ************************************************************************* */ package com.epam.jdi.uitests.web.selenium.elements.complex; import com.epam.jdi.uitests.core.interfaces.complex.IComboBox; import com.epam.jdi.uitests.web.selenium.elements.GetElementType; import com.epam.jdi.uitests.web.selenium.elements.common.TextField; import org.openqa.selenium.By; /** * ComboBox control implementation * * @author Alexeenko Yan */ public class ComboBox<TEnum extends Enum> extends Dropdown<TEnum> implements IComboBox<TEnum> { private GetElementType textField = new GetElementType(); public ComboBox() { super(); } public ComboBox(By valueLocator) { super(valueLocator); textField = new GetElementType(valueLocator); } public ComboBox(By selectorLocator, By optionsNamesLocatorTemplate) { super(selectorLocator, optionsNamesLocatorTemplate); textField = new GetElementType(selectorLocator); } public ComboBox(By selectorLocator, By optionsNamesLocatorTemplate, By valueLocator) { super(selectorLocator, optionsNamesLocatorTemplate); textField = new GetElementType(valueLocator); } public ComboBox(By selectorLocator, By optionsNamesLocatorTemplate, By valueLocator, By allOptionsNamesLocator) { super(selectorLocator, optionsNamesLocatorTemplate, allOptionsNamesLocator); textField = new GetElementType(valueLocator); } protected TextField textField() { return textField.get(new TextField(), getAvatar()); } @Override protected void setValueAction(String value) { newInput(value); } @Override protected String getTextAction() { return textField().getText(); } protected void inputAction(CharSequence text) { textField().sendKeys(text); } protected void clearAction() { textField().clear(); } protected void focusAction() { textField().focus(); } public final void input(CharSequence text) { actions.input(text, this::inputAction); } public void sendKeys(CharSequence text) { input(text); } public void newInput(CharSequence text) { clear(); input(text); } public final void clear() { actions.clear(this::clearAction); } public final void focus() { actions.focus(this::focusAction); } }