/* ************************************************************************
qxwebdriver-java
http://github.com/qooxdoo/qxwebdriver-java
Copyright:
2012-2013 1&1 Internet AG, Germany, http://www.1und1.de
License:
LGPL: http://www.gnu.org/licenses/lgpl.html
EPL: http://www.eclipse.org/org/documents/epl-v10.php
See the license.txt file in the project's top-level directory for details.
Authors:
* Daniel Wagner (danielwagner)
************************************************************************ */
package org.oneandone.qxwebdriver.ui;
import java.util.List;
import org.openqa.selenium.WebElement;
/**
* Represents a qx.Desktop widget. {@link org.openqa.selenium.WebElement}
* methods are forwarded to the widget's content element. click() and sendKeys()
* will generally workFor simple widgets that contain only one button and/or
* text field.
*
* For more advanced interactions on composite widgets such as qx.ui.formComboBox
* or qx.ui.tree.Tree, see the other interfaces in this namespace.
*
* @see Scrollable
* @see Selectable
*
*/
public interface Widget extends WebElement {
/**
* This widget's qooxdoo object registry ID
*/
public String getQxHash();
/**
* This widget's qooxdoo class name
*/
public String getClassname();
/**
* The WebElement representing this widget's content element
*/
public WebElement getContentElement();
/**
* Returns a {@link Widget} representing a child control of this widget.
*/
public Widget getChildControl(String childControlId);
/**
* Repeatedly checks if the child control with the given id is visible.
* Returns the child control if successful.
* @param timeout in seconds
* @return The child control widget
*/
public org.oneandone.qxwebdriver.ui.Widget waitForChildControl(String childControlId, Integer timeout);
/**
* Returns a {@link Widget} representing the layout parent.
*/
public Widget getLayoutParent();
/**
* Calls JavascriptExecutor.executeScript. The first argument is the widget's
* content element.
*
* @see org.openqa.selenium.JavascriptExecutor
*/
public Object executeJavascript(String script);
/**
* Returns the value of a qooxdoo property on this widget, serialized in JSON
* format.
* <strong>NOTE:</strong> Never use this for property values that are instances
* of qx.core.Object. Circular references in qooxoo's OO system will lead to
* JavaScript errors.
*/
public String getPropertyValueAsJson(String propertyName);
/**
* Returns the value of a qooxdoo property on this widget. See the {@link org.openqa.selenium.JavascriptExecutor}
* documentation for details on how JavaScript types are represented.
* <strong>NOTE:</strong> Never use this for property values that are instances
* of qx.core.Object. Circular references in qooxoo's OO system will lead to
* JavaScript errors.
*/
public Object getPropertyValue(String propertyName);
/**
* Returns a List of {@link Widget}s representing the value of a widget list property,
* e.g. <a href="http://demo.qooxdoo.org/current/apiviewer/#qx.ui.core.MMultiSelectionHandling~getSelection">MMultiSelectionHandling.getSelection</a>
*/
public List<Widget> getWidgetListFromProperty(String propertyName);
/**
* Returns a {@link Widget} representing the value of a widget property,
* e.g. <a href="http://demo.qooxdoo.org/current/apiviewer/#qx.ui.form.MenuButton~menu!property">the
* MenuButton's menu property</a>
*/
public Widget getWidgetFromProperty(String propertyName);
/**
* Returns a list of {@link Widget} objects representing this widget's children
* as defined using <a href="http://demo.qooxdoo.org/current/apiviewer/#qx.ui.core.MChildrenHandling~add!method_public">parent.add(child);</a> in the application code.
*/
public List<Widget> getChildren();
/**
* Finds a widget relative to the current one by traversing the qooxdoo
* widget hierarchy.
*/
public Widget findWidget(org.openqa.selenium.By by);
/**
* Drag and drop this widget onto another widget
*/
public void dragToWidget(Widget target);
/**
* Drag over this widget to another widget
*
*/
public void dragOver(Widget target) throws InterruptedException;
/**
* Drag and drop this widget onto another widget
*/
public void drop(Widget target) throws InterruptedException;
}