Java tutorial
package com.vaadin.addon.spreadsheet.elements; /* * #%L * Vaadin Spreadsheet Testbench API * %% * Copyright (C) 2013 - 2016 Vaadin Ltd * %% * This program is available under Commercial Vaadin Add-On License 3.0 * (CVALv3). * * See the file license.html distributed with this software for more * information about licensing. * * You should have received a copy of the CVALv3 along with this program. * If not, see <http://vaadin.com/license/cval-3>. * #L% */ import java.util.List; import org.openqa.selenium.Keys; import org.openqa.selenium.WebElement; import com.vaadin.testbench.By; import com.vaadin.testbench.elementsbase.AbstractElement; /** * This class represents one cell within the currently active sheet of a * Spreadsheet. * * @author Vaadin Ltd. */ public class SheetCellElement extends AbstractElement { private SpreadsheetElement parent; /** * Sets the given value to this cell. This method does not support setting * values to cells containing custom editors. To set values to custom * editors, you should directly set the value to the custom editor which is * a child of this element. * * Note: Calling this method will set the current selection to this cell. * * @param newValue * Value to set. */ public void setValue(String newValue) { if (isNormalCell()) { doubleClick(); WebElement cellValueInput = parent.getCellValueInput(); cellValueInput.clear(); cellValueInput.sendKeys(newValue); cellValueInput.sendKeys(Keys.TAB); getCommandExecutor().waitForVaadin(); } } /** * Gets the current value of this cell as a string. * * @return Current value */ public String getValue() { return getText(); } /** * Finds out if this cell is selected. * * @return True if cell selected, false otherwise. */ public boolean isCellSelected() { return parent.isElementSelected(this); } /** * Determines if this cell is normal in the sense that it uses the default * in-line editor for editing the cell value. * * @return true if this cell uses the normal in-line editor, false if this * cell has e.g. a custom editor component. */ public boolean isNormalCell() { List<WebElement> children = findElements(By.xpath(".//*")); // might have an inner div for example when content is overflowing, cell has a comment // or cell contains an invalid formula return noneOfTheElementsIsWidget(children); } private boolean noneOfTheElementsIsWidget(List<WebElement> children) { for (WebElement e : children) { if (e.getAttribute("class").contains("v-widget")) { return false; } } return true; } /** * Determines if this cell has a PopupButton set. * * @return true if this cell has a pop-up button, false otherwise */ public boolean hasPopupButton() { List<WebElement> buttons = findElements(By.className("popupbutton")); return !buttons.isEmpty(); } /** * Click the PopupButton in the cell. * * @throws IllegalArgumentException * if the cell doesn't contain a PopupButton */ public void popupButtonClick() { if (!hasPopupButton()) { throw new IllegalStateException("This cell doesn't have a PopupuButton"); } findElement(By.className("popupbutton")).click(); } void setParent(SpreadsheetElement parent) { this.parent = parent; } /** * Determines if the cell has invalid formula indicator * * @return true if this cell has a invalid formula indicator */ public boolean hasInvalidFormulaIndicator() { List<WebElement> indicators = findElements(By.className("cell-invalidformula-triangle")); return !indicators.isEmpty(); } /** * Determines if the cell has comment indicator * * @return true if this cell has a comment indicator */ public boolean hasCommentIndicator() { List<WebElement> indicators = findElements(By.className("cell-comment-triangle")); return !indicators.isEmpty(); } }