blob: 804ad6e4449f9ea59a104b9e6fc79ae67b859e2a [file] [log] [blame]
/*
* Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/
package org.netbeans.jemmy.operators;
import java.awt.AWTEvent;
import java.awt.Color;
import java.awt.Component;
import java.awt.ComponentOrientation;
import java.awt.Container;
import java.awt.Cursor;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.FontMetrics;
import java.awt.Graphics;
import java.awt.Image;
import java.awt.MenuComponent;
import java.awt.Point;
import java.awt.PopupMenu;
import java.awt.Rectangle;
import java.awt.Toolkit;
import java.awt.Window;
import java.awt.dnd.DropTarget;
import java.awt.event.ComponentListener;
import java.awt.event.FocusListener;
import java.awt.event.InputMethodListener;
import java.awt.event.KeyListener;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.awt.im.InputContext;
import java.awt.im.InputMethodRequests;
import java.awt.image.ColorModel;
import java.awt.image.ImageObserver;
import java.awt.image.ImageProducer;
import java.beans.PropertyChangeListener;
import java.io.PrintStream;
import java.io.PrintWriter;
import java.util.Hashtable;
import java.util.Locale;
import org.netbeans.jemmy.CharBindingMap;
import org.netbeans.jemmy.ComponentChooser;
import org.netbeans.jemmy.ComponentSearcher;
import org.netbeans.jemmy.EventDispatcher;
import org.netbeans.jemmy.JemmyException;
import org.netbeans.jemmy.JemmyProperties;
import org.netbeans.jemmy.Outputable;
import org.netbeans.jemmy.QueueTool;
import org.netbeans.jemmy.TestOut;
import org.netbeans.jemmy.TimeoutExpiredException;
import org.netbeans.jemmy.Timeoutable;
import org.netbeans.jemmy.Timeouts;
import org.netbeans.jemmy.Waitable;
import org.netbeans.jemmy.Waiter;
import org.netbeans.jemmy.drivers.DriverManager;
import org.netbeans.jemmy.drivers.FocusDriver;
import org.netbeans.jemmy.drivers.KeyDriver;
import org.netbeans.jemmy.drivers.MouseDriver;
/**
* Root class for all component operators.
*
* Provides basic methods to operate with mouse and keyboard.<BR>
* <BR>
* Almost all input methods can throw JemmyInputException or its subclass.<BR>
*
* ComponentOperator and its subclasses has a lot of methods which name and
* parameters just like consistent component has. In this case operator class
* just invokes consistent component method through AWT Event Queue
* (invokeAndWait method).
*
* <BR><BR>Timeouts used: <BR>
* ComponentOperator.PushKeyTimeout - time between key pressing and releasing
* <BR>
* ComponentOperator.MouseClickTimeout - time between mouse pressing and
* releasing <BR>
* ComponentOperator.WaitComponentTimeout - time to wait component displayed
* <BR>
* ComponentOperator.WaitComponentEnabledTimeout - time to wait component
* enabled <BR>
* ComponentOperator.BeforeDragTimeout - time to sleep before grag'n'drop
* operations <BR>
* ComponentOperator.AfterDragTimeout - time to sleep after grag'n'drop
* operations <BR>
* ComponentOperator.WaitFocusTimeout - time to wait component focus <BR>
* ComponentOperator.WaitStateTimeout- time to wait component to be in some
* state. Typically used from methods like
* {@code Operator.wait"something happened"(*)}<br>.
*
* @see org.netbeans.jemmy.Timeouts
*
* @author Alexandre Iline (alexandre.iline@oracle.com)
*/
public class ComponentOperator extends Operator
implements Timeoutable, Outputable {
/**
* Identifier for a name property.
*
* @see #getDump
*/
public static final String NAME_DPROP = "Name:";
/**
* Identifier for a visible property.
*
* @see #getDump
*/
public static final String IS_VISIBLE_DPROP = "Visible";
/**
* Identifier for a showing property.
*
* @see #getDump
*/
public static final String IS_SHOWING_DPROP = "Showing";
/**
* Identifier for a x coordinate property.
*
* @see #getDump
*/
public static final String X_DPROP = "X";
/**
* Identifier for a y coordinate property.
*
* @see #getDump
*/
public static final String Y_DPROP = "Y";
/**
* Identifier for a width property.
*
* @see #getDump
*/
public static final String WIDTH_DPROP = "Width";
/**
* Identifier for a height property.
*
* @see #getDump
*/
public static final String HEIGHT_DPROP = "Height";
private static final long PUSH_KEY_TIMEOUT = 0;
private static final long MOUSE_CLICK_TIMEOUT = 0;
private static final long BEFORE_DRAG_TIMEOUT = 0;
private static final long AFTER_DRAG_TIMEOUT = 0;
private static final long WAIT_COMPONENT_TIMEOUT = 60000;
private static final long WAIT_COMPONENT_ENABLED_TIMEOUT = 60000;
private static final long WAIT_FOCUS_TIMEOUT = 60000;
private static final long WAIT_STATE_TIMEOUT = 60000;
private final Component source;
private volatile Timeouts timeouts; // used in invokeSmoothly in clickMouse
private volatile TestOut output; // used in QueueTool.Locker
private volatile EventDispatcher dispatcher; // used in JInternalFrameByTitleFinder.checkComponent
private KeyDriver kDriver;
private MouseDriver mDriver;
private FocusDriver fDriver;
/**
* Constructor.
*
* @param comp a component
*/
public ComponentOperator(Component comp) {
super();
source = comp;
kDriver = DriverManager.getKeyDriver(getClass());
mDriver = DriverManager.getMouseDriver(getClass());
fDriver = DriverManager.getFocusDriver(getClass());
setEventDispatcher(new EventDispatcher(comp));
}
/**
* Constructs a ComponentOperator object.
*
* @param cont container
* @param chooser a component chooser specifying searching criteria.
* @param index an index between appropriate ones.
*/
public ComponentOperator(ContainerOperator<?> cont, ComponentChooser chooser, int index) {
this(waitComponent((Container) cont.getSource(),
chooser,
index, cont.getTimeouts(), cont.getOutput()));
copyEnvironment(cont);
}
/**
* Constructs a ComponentOperator object.
*
* @param cont container
* @param chooser a component chooser specifying searching criteria.
*/
public ComponentOperator(ContainerOperator<?> cont, ComponentChooser chooser) {
this(cont, chooser, 0);
}
/**
* Constructor. Waits for a component in a container to show. The component
* is iis the {@code index+1}'th {@code java.awt.Component} that
* shows and that lies below the container in the display containment
* hierarchy. Uses cont's timeout and output for waiting and to init
* operator.
*
* @param cont Operator for a java.awt.Container.
* @param index an index between appropriate ones.
* @throws TimeoutExpiredException
*/
public ComponentOperator(ContainerOperator<?> cont, int index) {
this(cont, ComponentSearcher.getTrueChooser("Any component"), index);
}
/**
* Constructor. Waits for a component in a container to show. The component
* is is the first {@code java.awt.Component} that shows and that lies
* below the container in the display containment hierarchy. Uses cont's
* timeout and output for waiting and to init operator.
*
* @param cont Operator for a java.awt.Container.
* @throws TimeoutExpiredException
*/
public ComponentOperator(ContainerOperator<?> cont) {
this(cont, 0);
}
/**
* Searches Component in container.
*
* @param cont Container to search component in.
* @param chooser org.netbeans.jemmy.ComponentChooser implementation.
* @param index Ordinal component index.
* @return Component instance or null if component was not found.
*/
public static Component findComponent(Container cont, ComponentChooser chooser, int index) {
return findComponent(cont, chooser, index, false);
}
/**
* Searches Component in container.
*
* @param cont Container to search component in.
* @param chooser org.netbeans.jemmy.ComponentChooser implementation.
* @return Component instance or null if component was not found.
*/
public static Component findComponent(Container cont, ComponentChooser chooser) {
return findComponent(cont, chooser, 0);
}
/**
* Waits Component in container.
*
* @param cont Container to search component in.
* @param chooser org.netbeans.jemmy.ComponentChooser implementation.
* @param index Ordinal component index.
* @return Component instance or null if component was not found.
* @throws TimeoutExpiredException
*/
public static Component waitComponent(Container cont, ComponentChooser chooser, int index) {
return (waitComponent(cont, chooser, index,
JemmyProperties.getCurrentTimeouts(),
JemmyProperties.getCurrentOutput()));
}
/**
* Waits Component in container.
*
* @param cont Container to search component in.
* @param chooser org.netbeans.jemmy.ComponentChooser implementation.
* @return Component instance or null if component was not found.
* @throws TimeoutExpiredException
*/
public static Component waitComponent(Container cont, ComponentChooser chooser) {
return waitComponent(cont, chooser, 0);
}
/**
* A method to be used from subclasses. Uses {@code contOper}'s
* timeouts and output during the waiting.
*
* @param contOper Container to search component in.
* @param chooser org.netbeans.jemmy.ComponentChooser implementation.
* @param index Ordinal component index.
* @return Component instance or null if component was not found.
* @throws TimeoutExpiredException
*/
protected static Component waitComponent(ContainerOperator<?> contOper,
ComponentChooser chooser, int index) {
return (waitComponent((Container) contOper.getSource(),
chooser, index,
contOper.getTimeouts(),
contOper.getOutput()));
}
/**
* A method to be used from subclasses. Uses timeouts and output passed as
* parameters during the waiting.
*
* @param cont Container to search component in.
* @param chooser org.netbeans.jemmy.ComponentChooser implementation.
* @param index Ordinal component index.
* @param timeouts timeouts to be used during the waiting.
* @param output an output to be used during the waiting.
* @return Component instance or null if component was not found.
* @throws TimeoutExpiredException
*/
protected static Component waitComponent(final Container cont,
final ComponentChooser chooser,
final int index,
Timeouts timeouts, final TestOut output) {
try {
Waiter<Component, Void> waiter = new Waiter<>(new Waitable<Component, Void>() {
@Override
public Component actionProduced(Void obj) {
return findComponent(cont, new VisibleComponentFinder(chooser), index,
output.createErrorOutput());
}
@Override
public String getDescription() {
return "Wait " + chooser.getDescription() + " loaded";
}
@Override
public String toString() {
return "ComponentOperator.waitComponent.Waitable{description = " + getDescription() + '}';
}
});
waiter.setTimeoutsToCloneOf(timeouts, "ComponentOperator.WaitComponentTimeout");
waiter.setOutput(output);
return waiter.waitAction(null);
} catch (InterruptedException e) {
return null;
}
}
/**
* Searches Components in container.
*
* @param cont Container to search components in.
* @param chooser org.netbeans.jemmy.ComponentChooser implementation.
* @return Component array or empty array if component was not found.
*/
public static Component[] findComponents(Container cont, ComponentChooser chooser) {
ComponentSearcher searcher = new ComponentSearcher(cont);
return searcher.findComponents(new VisibleComponentFinder(chooser));
}
private static Component findComponent(Container cont, ComponentChooser chooser, int index, TestOut output) {
ComponentSearcher searcher = new ComponentSearcher(cont);
searcher.setOutput(output);
return searcher.findComponent(new VisibleComponentFinder(chooser), index);
}
private static Component findComponent(Container cont, ComponentChooser chooser, int index, boolean supressOutout) {
return findComponent(cont, chooser, index, JemmyProperties.getCurrentOutput().createErrorOutput());
}
static {
Timeouts.initDefault("ComponentOperator.PushKeyTimeout", PUSH_KEY_TIMEOUT);
Timeouts.initDefault("ComponentOperator.MouseClickTimeout", MOUSE_CLICK_TIMEOUT);
Timeouts.initDefault("ComponentOperator.BeforeDragTimeout", BEFORE_DRAG_TIMEOUT);
Timeouts.initDefault("ComponentOperator.AfterDragTimeout", AFTER_DRAG_TIMEOUT);
Timeouts.initDefault("ComponentOperator.WaitComponentTimeout", WAIT_COMPONENT_TIMEOUT);
Timeouts.initDefault("ComponentOperator.WaitComponentEnabledTimeout", WAIT_COMPONENT_ENABLED_TIMEOUT);
Timeouts.initDefault("ComponentOperator.WaitStateTimeout", WAIT_STATE_TIMEOUT);
Timeouts.initDefault("ComponentOperator.WaitFocusTimeout", WAIT_FOCUS_TIMEOUT);
}
/**
* Returns component.
*/
@Override
public Component getSource() {
return source;
}
/**
* Returns org.netbeans.jemmy.EventDispatcher instance which is used to
* dispatch events.
*
* @return the dispatcher.
* @see org.netbeans.jemmy.EventDispatcher
*/
public EventDispatcher getEventDispatcher() {
return dispatcher;
}
////////////////////////////////////////////////////////
//Environment //
////////////////////////////////////////////////////////
@Override
public void setOutput(TestOut out) {
super.setOutput(out);
this.output = out;
if (dispatcher != null) {
dispatcher.setOutput(output.createErrorOutput());
}
}
@Override
public TestOut getOutput() {
return output;
}
@Override
public void setTimeouts(Timeouts timeouts) {
super.setTimeouts(timeouts);
this.timeouts = timeouts;
if (dispatcher != null) {
dispatcher.setTimeouts(getTimeouts());
}
}
@Override
public Timeouts getTimeouts() {
return timeouts;
}
@Override
public void copyEnvironment(Operator anotherOperator) {
super.copyEnvironment(anotherOperator);
kDriver = (KeyDriver) DriverManager.
getDriver(DriverManager.KEY_DRIVER_ID,
getClass(),
anotherOperator.getProperties());
mDriver = (MouseDriver) DriverManager.
getDriver(DriverManager.MOUSE_DRIVER_ID,
getClass(),
anotherOperator.getProperties());
fDriver = (FocusDriver) DriverManager.
getDriver(DriverManager.FOCUS_DRIVER_ID,
getClass(),
anotherOperator.getProperties());
}
////////////////////////////////////////////////////////
//Mouse operations
////////////////////////////////////////////////////////
/**
* Makes mouse click.
*
* @param x Horizontal click coordinate
* @param y Vertical click coordinate
* @param clickCount Click count
* @param mouseButton Mouse button (InputEvent.BUTTON1/2/3_MASK value)
* @param modifiers Modifiers (combination of InputEvent.*_MASK values)
* @param forPopup signals that click is intended to call popup.
*/
public void clickMouse(final int x, final int y, final int clickCount, final int mouseButton,
final int modifiers, final boolean forPopup) {
getQueueTool().invokeSmoothly(new QueueTool.QueueAction<Void>("Path selecting") {
@Override
public Void launch() {
mDriver.clickMouse(ComponentOperator.this, x, y, clickCount, mouseButton, modifiers,
timeouts.create("ComponentOperator.MouseClickTimeout"));
return null;
}
});
}
/**
* Makes mouse click.
*
* @param x Horizontal click coordinate
* @param y Vertical click coordinate
* @param clickCount Click count
* @param mouseButton Mouse button (InputEvent.BUTTON1/2/3_MASK value)
* @param modifiers Modifiers (combination of InputEvent.*_MASK values)
* @see #clickMouse(int, int, int, int, int, boolean)
*/
public void clickMouse(int x, int y, int clickCount, int mouseButton, int modifiers) {
clickMouse(x, y, clickCount, mouseButton, modifiers, false);
}
/**
* Makes mouse click with 0 modifiers.
*
* @param x Horizontal click coordinate
* @param y Vertical click coordinate
* @param clickCount Click count
* @param mouseButton Mouse button (InputEvent.BUTTON1/2/3_MASK value)
* @see #clickMouse(int, int, int, int, int)
*/
public void clickMouse(int x, int y, int clickCount, int mouseButton) {
clickMouse(x, y, clickCount, mouseButton, 0);
}
/**
* Makes mouse click by default mouse button with 0 modifiers.
*
* @param x Horizontal click coordinate
* @param y Vertical click coordinate
* @param clickCount Click count
* @see #clickMouse(int, int, int, int)
* @see #getDefaultMouseButton()
*/
public void clickMouse(int x, int y, int clickCount) {
clickMouse(x, y, clickCount, getDefaultMouseButton());
}
/**
* Press mouse.
*
* @param x Horizontal click coordinate
* @param y Vertical click coordinate
*/
public void pressMouse(int x, int y) {
mDriver.pressMouse(this, x, y, getDefaultMouseButton(), 0);
}
/**
* Releases mouse.
*
* @param x Horizontal click coordinate
* @param y Vertical click coordinate
*/
public void releaseMouse(int x, int y) {
mDriver.releaseMouse(this, x, y, getDefaultMouseButton(), 0);
}
/**
* Move mouse over the component.
*
* @param x Horisontal destination coordinate.
* @param y Vertical destination coordinate.
*/
public void moveMouse(int x, int y) {
mDriver.moveMouse(this, x, y);
}
/**
* Drag mouse over the component.
*
* @param x Horisontal destination coordinate.
* @param y Vertical destination coordinate.
* @param mouseButton Mouse button
* @param modifiers Modifiers
*/
public void dragMouse(int x, int y, int mouseButton, int modifiers) {
mDriver.dragMouse(this, x, y, getDefaultMouseButton(), 0);
}
/**
* Drag mouse over the component with 0 modifiers.
*
* @param x Horisontal destination coordinate.
* @param y Vertical destination coordinate.
* @param mouseButton Mouse button
* @see #dragMouse(int, int, int, int)
*/
public void dragMouse(int x, int y, int mouseButton) {
dragMouse(x, y, mouseButton, 0);
}
/**
* Drag mouse over the component with 0 modifiers and default mose button
* pressed.
*
* @param x Horisontal destination coordinate.
* @param y Vertical destination coordinate.
* @see #dragMouse(int, int, int)
* @see #getDefaultMouseButton()
*/
public void dragMouse(int x, int y) {
dragMouse(x, y, getDefaultMouseButton());
}
/**
* Makes drag'n'drop operation.
*
* @param start_x Start horizontal coordinate
* @param start_y Start vertical coordinate
* @param end_x End horizontal coordinate
* @param end_y End vertical coordinate
* @param mouseButton Mouse button
* @param modifiers Modifiers
*/
public void dragNDrop(int start_x, int start_y, int end_x, int end_y, int mouseButton, int modifiers) {
mDriver.dragNDrop(this, start_x, start_y, end_x, end_y, mouseButton, modifiers,
timeouts.create("ComponentOperator.BeforeDragTimeout"),
timeouts.create("ComponentOperator.AfterDragTimeout"));
}
/**
* Makes drag'n'drop operation with 0 modifiers.
*
* @param start_x Start horizontal coordinate
* @param start_y Start vertical coordinate
* @param end_x End horizontal coordinate
* @param end_y End vertical coordinate
* @param mouseButton Mouse button
* @see #dragNDrop(int, int, int, int, int, int)
*/
public void dragNDrop(int start_x, int start_y, int end_x, int end_y, int mouseButton) {
dragNDrop(start_x, start_y, end_x, end_y, mouseButton, 0);
}
/**
* Makes drag'n'drop operation by default mouse buttons with 0 modifiers.
*
* @param start_x Start horizontal coordinate
* @param start_y Start vertical coordinate
* @param end_x End horizontal coordinate
* @param end_y End vertical coordinate
* @see #dragNDrop(int, int, int, int, int)
* @see #getDefaultMouseButton()
*/
public void dragNDrop(int start_x, int start_y, int end_x, int end_y) {
dragNDrop(start_x, start_y, end_x, end_y, getDefaultMouseButton(), 0);
}
/**
* Clicks for popup.
*
* @param x Horizontal click coordinate.
* @param y Vertical click coordinate.
* @param mouseButton Mouse button.
* @see #clickMouse(int, int, int, int, int, boolean)
*/
public void clickForPopup(int x, int y, int mouseButton) {
makeComponentVisible();
clickMouse(x, y, 1, mouseButton, 0, true);
}
/**
* Clicks for popup by popup mouse button.
*
* @param x Horizontal click coordinate.
* @param y Vertical click coordinate.
* @see #clickForPopup(int, int, int)
* @see #getPopupMouseButton()
*/
public void clickForPopup(int x, int y) {
clickForPopup(x, y, getPopupMouseButton());
}
/**
* Makes mouse click on the component center with 0 modifiers.
*
* @param clickCount Click count
* @param mouseButton Mouse button (InputEvent.BUTTON1/2/3_MASK value)
* @see #clickMouse(int, int, int, int)
*/
public void clickMouse(final int clickCount, final int mouseButton) {
getQueueTool().invokeSmoothly(new QueueTool.QueueAction<Void>("Clicking the mouse button") {
@Override
public Void launch() {
clickMouse(getCenterXForClick(), getCenterYForClick(), clickCount, mouseButton);
return null;
}
});
}
/**
* Makes mouse click on the component center by default mouse button with 0
* modifiers.
*
* @param clickCount Click count
* @see #clickMouse(int, int)
* @see #getDefaultMouseButton()
*/
public void clickMouse(int clickCount) {
clickMouse(clickCount, getDefaultMouseButton());
}
/**
* Makes siple mouse click on the component center by default mouse button
* with 0 modifiers.
*
* @see #clickMouse(int)
* @see #getDefaultMouseButton()
*/
public void clickMouse() {
clickMouse(1);
}
/**
* Move mouse inside the component.
*/
public void enterMouse() {
mDriver.enterMouse(this);
}
/**
* Move mouse outside the component.
*/
public void exitMouse() {
mDriver.exitMouse(this);
}
/**
* Press mouse.
*/
public void pressMouse() {
getQueueTool().invokeSmoothly(new QueueTool.QueueAction<Void>("Pressing the mouse button") {
@Override
public Void launch() {
pressMouse(getCenterXForClick(), getCenterYForClick());
return null;
}
});
}
/**
* Releases mouse.
*/
public void releaseMouse() {
getQueueTool().invokeSmoothly(new QueueTool.QueueAction<Void>("Releasing the mouse button") {
@Override
public Void launch() {
releaseMouse(getCenterXForClick(), getCenterYForClick());
return null;
}
});
}
/**
* Clicks for popup at the component center.
*
* @param mouseButton Mouse button.
* @see #clickForPopup(int, int)
*/
public void clickForPopup(int mouseButton) {
clickForPopup(getCenterXForClick(), getCenterYForClick(), mouseButton);
}
/**
* Clicks for popup by popup mouse button at the component center.
*
* @see #clickForPopup(int)
* @see #getPopupMouseButton()
*/
public void clickForPopup() {
clickForPopup(getPopupMouseButton());
}
////////////////////////////////////////////////////////
//Keyboard operations
////////////////////////////////////////////////////////
/**
* Press key.
*
* @param keyCode Key code (KeyEvent.VK_* value)
* @param modifiers Modifiers (combination of InputEvent.*_MASK fields)
*/
public void pressKey(int keyCode, int modifiers) {
kDriver.pressKey(this, keyCode, modifiers);
}
/**
* Press key with no modifiers.
*
* @param keyCode Key code (KeyEvent.VK_* value)
*/
public void pressKey(int keyCode) {
pressKey(keyCode, 0);
}
/**
* Typed key.
*
* @param keyChar Char to be typed.
* @param modifiers Modifiers (combination of InputEvent.*_MASK fields)
*/
public void typedKey(char keyChar, int modifiers) {
kDriver.typedKey(this, getCharBindingMap().getCharKey(keyChar), keyChar, modifiers);
}
/**
* Releases key.
*
* @param keyCode Key code (KeyEvent.VK_* value)
* @param modifiers Modifiers (combination of InputEvent.*_MASK fields)
*/
public void releaseKey(int keyCode, int modifiers) {
kDriver.releaseKey(this, keyCode, modifiers);
}
/**
* Releases key with no modifiers.
*
* @param keyCode Key code (KeyEvent.VK_* value)
*/
public void releaseKey(int keyCode) {
releaseKey(keyCode, 0);
}
/**
* Pushs key.
*
* @param keyCode Key code (KeyEvent.VK_* value)
* @param modifiers Modifiers (combination of InputEvent.*_MASK fields)
*/
public void pushKey(int keyCode, int modifiers) {
kDriver.pushKey(this, keyCode, modifiers, timeouts.create("ComponentOperator.PushKeyTimeout"));
}
/**
* Pushs key.
*
* @param keyCode Key code (KeyEvent.VK_* value)
*/
public void pushKey(int keyCode) {
pushKey(keyCode, 0);
}
/**
* Types one char.
*
* @param keyCode Key code (KeyEvent.VK_* value)
* @param keyChar Char to be typed.
* @param modifiers Modifiers (combination of InputEvent.*_MASK fields)
*/
public void typeKey(int keyCode, char keyChar, int modifiers) {
kDriver.typeKey(this, keyCode, keyChar, modifiers, timeouts.create("ComponentOperator.PushKeyTimeout"));
}
/**
* Types one char. Uses map defined by setCharBindingMap(CharBindingMap)
* method to find a key should be pressed.
*
* @param keyChar Char to be typed.
* @param modifiers Modifiers (combination of InputEvent.*_MASK fields)
* @see org.netbeans.jemmy.CharBindingMap
* @see #setCharBindingMap(CharBindingMap)
* @see #typeKey(int, char, int)
*/
public void typeKey(char keyChar, int modifiers) {
typeKey(getCharKey(keyChar), keyChar, modifiers | getCharModifiers(keyChar));
}
/**
* Types one char. Uses map defined by setCharBindingMap(CharBindingMap)
* method to find a key and modifiers should be pressed.
*
* @param keyChar Char to be typed.
* @see #setCharBindingMap(CharBindingMap)
* @see #typeKey(char, int)
*/
public void typeKey(char keyChar) {
typeKey(keyChar, 0);
}
////////////////////////////////////////////////////////
//Util
////////////////////////////////////////////////////////
/**
* Activates component's window.
*
* @deprecated Use makeComponentVisible() instead.
* @see #makeComponentVisible()
*/
@Deprecated
public void activateWindow() {
getVisualizer().makeVisible(this);
}
/**
* Prepares component for user input. Uses visualizer defined by
* setVisualiser() method.
*/
public void makeComponentVisible() {
getVisualizer().makeVisible(this);
/*
final ComponentOperator compOper = (ComponentOperator)this;
runMapping(new MapVoidAction("add") {
public void map() {
getVisualizer().makeVisible(compOper);
}
});
*/
}
/**
* Gives input focus to the component.
*/
public void getFocus() {
fDriver.giveFocus(this);
}
/**
* Return the center x coordinate.
*
* @return the center x coordinate.
*/
public int getCenterX() {
return getWidth() / 2;
}
/**
* Return the center y coordinate.
*
* @return the center y coordinate.
*/
public int getCenterY() {
return getHeight() / 2;
}
/**
* Return the x coordinate which should be used for mouse operations by
* default.
*
* @return the center x coordinate of the visible component part.
*/
public int getCenterXForClick() {
return getCenterX();
}
/**
* Return the y coordinate which should be used for mouse operations by
* default.
*
* @return the center y coordinate of the visible component part.
*/
public int getCenterYForClick() {
return getCenterY();
}
/**
* Waits for the component to be enabled.
*
* @throws TimeoutExpiredException
* @throws InterruptedException
*/
public void waitComponentEnabled() throws InterruptedException {
Waiter<Component, Component> waiter = new Waiter<>(new Waitable<Component, Component>() {
@Override
public Component actionProduced(Component obj) {
if (obj.isEnabled()) {
return obj;
} else {
return null;
}
}
@Override
public String getDescription() {
return ("Component enabled: "
+ getSource().getClass().toString());
}
@Override
public String toString() {
return "ComponentOperator.waitComponentEnabled.Waitable{description = " + getDescription() + '}';
}
});
waiter.setOutput(output);
waiter.setTimeoutsToCloneOf(timeouts, "ComponentOperator.WaitComponentEnabledTimeout");
waiter.waitAction(getSource());
}
/**
* Waits for the component to be enabled. per request: 37831
*
* @throws TimeoutExpiredException
*/
public void wtComponentEnabled() {
try {
waitComponentEnabled();
} catch (InterruptedException e) {
throw (new JemmyException("Interrupted!", e));
}
}
/**
* Returns an array of containers for this component.
*
* @return an array of containers
*/
public Container[] getContainers() {
int counter = 0;
Container cont = getSource().getParent();
if (cont == null) {
return new Container[0];
}
do {
counter++;
} while ((cont = cont.getParent()) != null);
Container[] res = new Container[counter];
cont = getSource().getParent();
counter = 0;
do {
counter++;
res[counter - 1] = cont;
} while ((cont = cont.getParent()) != null);
return res;
}
/**
* Searches a container.
*
* @param chooser a chooser specifying the searching criteria.
* @return a containers specified by searching criteria.
*/
public Container getContainer(ComponentChooser chooser) {
int counter = 0;
Container cont = getSource().getParent();
if (cont == null) {
return null;
}
do {
if (chooser.checkComponent(cont)) {
return cont;
}
counter++;
} while ((cont = cont.getParent()) != null);
return null;
}
/**
* Searches the window under component.
*
* @return the component window.
*/
public Window getWindow() {
if (getSource() instanceof Window) {
return (Window) getSource();
}
Window window = (Window) getContainer(new ComponentChooser() {
@Override
public boolean checkComponent(Component comp) {
return comp instanceof Window;
}
@Override
public String getDescription() {
return "";
}
@Override
public String toString() {
return "ComponentOperator.getWindow.ComponentChooser{description = " + getDescription() + '}';
}
});
if (window == null && getSource() instanceof Window) {
return (Window) getSource();
} else {
return window;
}
}
/**
* Waits for this Component has the keyboard focus.
*
* @throws TimeoutExpiredException
*/
public void waitHasFocus() {
Waiter<String, Void> focusWaiter = new Waiter<>(new Waitable<String, Void>() {
@Override
public String actionProduced(Void obj) {
return hasFocus() ? "" : null;
}
@Override
public String getDescription() {
return "Wait component has focus";
}
@Override
public String toString() {
return "ComponentOperator.waitHasFocus.Waitable{description = " + getDescription() + '}';
}
});
focusWaiter.setTimeoutsToCloneOf(timeouts, "ComponentOperator.WaitFocusTimeout");
focusWaiter.setOutput(output.createErrorOutput());
try {
focusWaiter.waitAction(null);
} catch (InterruptedException e) {
output.printStackTrace(e);
}
}
/**
* Waits for the component to be visible or unvisible.
*
* @param visibility required visiblity.
* @throws TimeoutExpiredException
*/
public void waitComponentVisible(final boolean visibility) {
waitState(new ComponentChooser() {
@Override
public boolean checkComponent(Component comp) {
return isVisible() == visibility;
}
@Override
public String getDescription() {
return "Component is " + (visibility ? "" : " not ") + "visible";
}
@Override
public String toString() {
return "ComponentOperator.waitComponentVisible.ComponentChooser{description = " + getDescription() + '}';
}
});
}
public void waitComponentShowing(final boolean visibility) {
waitState(new ComponentChooser() {
@Override
public boolean checkComponent(Component comp) {
return isShowing() == visibility;
}
@Override
public String getDescription() {
return "Component is " + (visibility ? "" : " not ") + "showing";
}
@Override
public String toString() {
return "ComponentOperator.waitComponentShowing.ComponentChooser{description = " + getDescription() + '}';
}
});
}
/**
* Returns information about component.
*/
@Override
public Hashtable<String, Object> getDump() {
Hashtable<String, Object> result = super.getDump();
if (getSource().getName() != null) {
result.put(NAME_DPROP, getSource().getName());
}
result.put(IS_VISIBLE_DPROP, getSource().isVisible() ? "true" : "false");
result.put(IS_SHOWING_DPROP, getSource().isShowing() ? "true" : "false");
result.put(X_DPROP, Integer.toString(getSource().getX()));
result.put(Y_DPROP, Integer.toString(getSource().getY()));
result.put(WIDTH_DPROP, Integer.toString(getSource().getWidth()));
result.put(HEIGHT_DPROP, Integer.toString(getSource().getHeight()));
return result;
}
////////////////////////////////////////////////////////
//Mapping //
/**
* Maps {@code Component.add(PopupMenu)} through queue
*/
public void add(final PopupMenu popupMenu) {
runMapping(new MapVoidAction("add") {
@Override
public void map() {
getSource().add(popupMenu);
}
});
}
/**
* Maps {@code Component.addComponentListener(ComponentListener)}
* through queue
*/
public void addComponentListener(final ComponentListener componentListener) {
runMapping(new MapVoidAction("addComponentListener") {
@Override
public void map() {
getSource().addComponentListener(componentListener);
}
});
}
/**
* Maps {@code Component.addFocusListener(FocusListener)} through queue
*/
public void addFocusListener(final FocusListener focusListener) {
runMapping(new MapVoidAction("addFocusListener") {
@Override
public void map() {
getSource().addFocusListener(focusListener);
}
});
}
/**
* Maps {@code Component.addInputMethodListener(InputMethodListener)}
* through queue
*/
public void addInputMethodListener(final InputMethodListener inputMethodListener) {
runMapping(new MapVoidAction("addInputMethodListener") {
@Override
public void map() {
getSource().addInputMethodListener(inputMethodListener);
}
});
}
/**
* Maps {@code Component.addKeyListener(KeyListener)} through queue
*/
public void addKeyListener(final KeyListener keyListener) {
runMapping(new MapVoidAction("addKeyListener") {
@Override
public void map() {
getSource().addKeyListener(keyListener);
}
});
}
/**
* Maps {@code Component.addMouseListener(MouseListener)} through queue
*/
public void addMouseListener(final MouseListener mouseListener) {
runMapping(new MapVoidAction("addMouseListener") {
@Override
public void map() {
getSource().addMouseListener(mouseListener);
}
});
}
/**
* Maps {@code Component.addMouseMotionListener(MouseMotionListener)}
* through queue
*/
public void addMouseMotionListener(final MouseMotionListener mouseMotionListener) {
runMapping(new MapVoidAction("addMouseMotionListener") {
@Override
public void map() {
getSource().addMouseMotionListener(mouseMotionListener);
}
});
}
/**
* Maps {@code Component.addNotify()} through queue
*/
public void addNotify() {
runMapping(new MapVoidAction("addNotify") {
@Override
public void map() {
getSource().addNotify();
}
});
}
/**
* Maps
* {@code Component.addPropertyChangeListener(PropertyChangeListener)}
* through queue
*/
public void addPropertyChangeListener(final PropertyChangeListener propertyChangeListener) {
runMapping(new MapVoidAction("addPropertyChangeListener") {
@Override
public void map() {
getSource().addPropertyChangeListener(propertyChangeListener);
}
});
}
/**
* Maps
* {@code Component.addPropertyChangeListener(String, PropertyChangeListener)}
* through queue
*/
public void addPropertyChangeListener(final String string, final PropertyChangeListener propertyChangeListener) {
runMapping(new MapVoidAction("addPropertyChangeListener") {
@Override
public void map() {
getSource().addPropertyChangeListener(string, propertyChangeListener);
}
});
}
/**
* Maps {@code Component.checkImage(Image, int, int, ImageObserver)}
* through queue
*/
public int checkImage(final Image image, final int i, final int i1, final ImageObserver imageObserver) {
return (runMapping(new MapIntegerAction("checkImage") {
@Override
public int map() {
return getSource().checkImage(image, i, i1, imageObserver);
}
}));
}
/**
* Maps {@code Component.checkImage(Image, ImageObserver)} through queue
*/
public int checkImage(final Image image, final ImageObserver imageObserver) {
return (runMapping(new MapIntegerAction("checkImage") {
@Override
public int map() {
return getSource().checkImage(image, imageObserver);
}
}));
}
/**
* Maps {@code Component.contains(int, int)} through queue
*/
public boolean contains(final int i, final int i1) {
return (runMapping(new MapBooleanAction("contains") {
@Override
public boolean map() {
return getSource().contains(i, i1);
}
}));
}
/**
* Maps {@code Component.contains(Point)} through queue
*/
public boolean contains(final Point point) {
return (runMapping(new MapBooleanAction("contains") {
@Override
public boolean map() {
return getSource().contains(point);
}
}));
}
/**
* Maps {@code Component.createImage(int, int)} through queue
*/
public Image createImage(final int i, final int i1) {
return (runMapping(new MapAction<Image>("createImage") {
@Override
public Image map() {
return getSource().createImage(i, i1);
}
}));
}
/**
* Maps {@code Component.createImage(ImageProducer)} through queue
*/
public Image createImage(final ImageProducer imageProducer) {
return (runMapping(new MapAction<Image>("createImage") {
@Override
public Image map() {
return getSource().createImage(imageProducer);
}
}));
}
/**
* Maps {@code Component.dispatchEvent(AWTEvent)} through queue
*/
public void dispatchEvent(final AWTEvent aWTEvent) {
runMapping(new MapVoidAction("dispatchEvent") {
@Override
public void map() {
getSource().dispatchEvent(aWTEvent);
}
});
}
/**
* Maps {@code Component.doLayout()} through queue
*/
public void doLayout() {
runMapping(new MapVoidAction("doLayout") {
@Override
public void map() {
getSource().doLayout();
}
});
}
/**
* Maps {@code Component.enableInputMethods(boolean)} through queue
*/
public void enableInputMethods(final boolean b) {
runMapping(new MapVoidAction("enableInputMethods") {
@Override
public void map() {
getSource().enableInputMethods(b);
}
});
}
/**
* Maps {@code Component.getAlignmentX()} through queue
*/
public float getAlignmentX() {
return (runMapping(new MapFloatAction("getAlignmentX") {
@Override
public float map() {
return getSource().getAlignmentX();
}
}));
}
/**
* Maps {@code Component.getAlignmentY()} through queue
*/
public float getAlignmentY() {
return (runMapping(new MapFloatAction("getAlignmentY") {
@Override
public float map() {
return getSource().getAlignmentY();
}
}));
}
/**
* Maps {@code Component.getBackground()} through queue
*/
public Color getBackground() {
return (runMapping(new MapAction<Color>("getBackground") {
@Override
public Color map() {
return getSource().getBackground();
}
}));
}
/**
* Maps {@code Component.getBounds()} through queue
*/
public Rectangle getBounds() {
return (runMapping(new MapAction<Rectangle>("getBounds") {
@Override
public Rectangle map() {
return getSource().getBounds();
}
}));
}
/**
* Maps {@code Component.getBounds(Rectangle)} through queue
*/
public Rectangle getBounds(final Rectangle rectangle) {
return (runMapping(new MapAction<Rectangle>("getBounds") {
@Override
public Rectangle map() {
return getSource().getBounds(rectangle);
}
}));
}
/**
* Maps {@code Component.getColorModel()} through queue
*/
public ColorModel getColorModel() {
return (runMapping(new MapAction<ColorModel>("getColorModel") {
@Override
public ColorModel map() {
return getSource().getColorModel();
}
}));
}
/**
* Maps {@code Component.getComponentAt(int, int)} through queue
*/
public Component getComponentAt(final int i, final int i1) {
return (runMapping(new MapAction<Component>("getComponentAt") {
@Override
public Component map() {
return getSource().getComponentAt(i, i1);
}
}));
}
/**
* Maps {@code Component.getComponentAt(Point)} through queue
*/
public Component getComponentAt(final Point point) {
return (runMapping(new MapAction<Component>("getComponentAt") {
@Override
public Component map() {
return getSource().getComponentAt(point);
}
}));
}
/**
* Maps {@code Component.getComponentOrientation()} through queue
*/
public ComponentOrientation getComponentOrientation() {
return (runMapping(new MapAction<ComponentOrientation>("getComponentOrientation") {
@Override
public ComponentOrientation map() {
return getSource().getComponentOrientation();
}
}));
}
/**
* Maps {@code Component.getCursor()} through queue
*/
public Cursor getCursor() {
return (runMapping(new MapAction<Cursor>("getCursor") {
@Override
public Cursor map() {
return getSource().getCursor();
}
}));
}
/**
* Maps {@code Component.getDropTarget()} through queue
*/
public DropTarget getDropTarget() {
return (runMapping(new MapAction<DropTarget>("getDropTarget") {
@Override
public DropTarget map() {
return getSource().getDropTarget();
}
}));
}
/**
* Maps {@code Component.getFont()} through queue
*/
public Font getFont() {
return (runMapping(new MapAction<Font>("getFont") {
@Override
public Font map() {
return getSource().getFont();
}
}));
}
/**
* Maps {@code Component.getFontMetrics(Font)} through queue
*/
public FontMetrics getFontMetrics(final Font font) {
return (runMapping(new MapAction<FontMetrics>("getFontMetrics") {
@Override
public FontMetrics map() {
return getSource().getFontMetrics(font);
}
}));
}
/**
* Maps {@code Component.getForeground()} through queue
*/
public Color getForeground() {
return (runMapping(new MapAction<Color>("getForeground") {
@Override
public Color map() {
return getSource().getForeground();
}
}));
}
/**
* Maps {@code Component.getGraphics()} through queue
*/
public Graphics getGraphics() {
return (runMapping(new MapAction<Graphics>("getGraphics") {
@Override
public Graphics map() {
return getSource().getGraphics();
}
}));
}
/**
* Maps {@code Component.getHeight()} through queue
*/
public int getHeight() {
return (runMapping(new MapIntegerAction("getHeight") {
@Override
public int map() {
return getSource().getHeight();
}
}));
}
/**
* Maps {@code Component.getInputContext()} through queue
*/
public InputContext getInputContext() {
return (runMapping(new MapAction<InputContext>("getInputContext") {
@Override
public InputContext map() {
return getSource().getInputContext();
}
}));
}
/**
* Maps {@code Component.getInputMethodRequests()} through queue
*/
public InputMethodRequests getInputMethodRequests() {
return (runMapping(new MapAction<InputMethodRequests>("getInputMethodRequests") {
@Override
public InputMethodRequests map() {
return getSource().getInputMethodRequests();
}
}));
}
/**
* Maps {@code Component.getLocale()} through queue
*/
public Locale getLocale() {
return (runMapping(new MapAction<Locale>("getLocale") {
@Override
public Locale map() {
return getSource().getLocale();
}
}));
}
/**
* Maps {@code Component.getLocation()} through queue
*/
public Point getLocation() {
return (runMapping(new MapAction<Point>("getLocation") {
@Override
public Point map() {
return getSource().getLocation();
}
}));
}
/**
* Maps {@code Component.getLocation(Point)} through queue
*/
public Point getLocation(final Point point) {
return (runMapping(new MapAction<Point>("getLocation") {
@Override
public Point map() {
return getSource().getLocation(point);
}
}));
}
/**
* Maps {@code Component.getLocationOnScreen()} through queue
*/
public Point getLocationOnScreen() {
return (runMapping(new MapAction<Point>("getLocationOnScreen") {
@Override
public Point map() {
return getSource().getLocationOnScreen();
}
}));
}
/**
* Maps {@code Component.getMaximumSize()} through queue
*/
public Dimension getMaximumSize() {
return (runMapping(new MapAction<Dimension>("getMaximumSize") {
@Override
public Dimension map() {
return getSource().getMaximumSize();
}
}));
}
/**
* Maps {@code Component.getMinimumSize()} through queue
*/
public Dimension getMinimumSize() {
return (runMapping(new MapAction<Dimension>("getMinimumSize") {
@Override
public Dimension map() {
return getSource().getMinimumSize();
}
}));
}
/**
* Maps {@code Component.getName()} through queue
*/
public String getName() {
return (runMapping(new MapAction<String>("getName") {
@Override
public String map() {
return getSource().getName();
}
}));
}
/**
* Maps {@code Component.getParent()} through queue
*/
public Container getParent() {
return (runMapping(new MapAction<Container>("getParent") {
@Override
public Container map() {
return getSource().getParent();
}
}));
}
/**
* Maps {@code Component.getPreferredSize()} through queue
*/
public Dimension getPreferredSize() {
return (runMapping(new MapAction<Dimension>("getPreferredSize") {
@Override
public Dimension map() {
return getSource().getPreferredSize();
}
}));
}
/**
* Maps {@code Component.getSize()} through queue
*/
public Dimension getSize() {
return (runMapping(new MapAction<Dimension>("getSize") {
@Override
public Dimension map() {
return getSource().getSize();
}
}));
}
/**
* Maps {@code Component.getSize(Dimension)} through queue
*/
public Dimension getSize(final Dimension dimension) {
return (runMapping(new MapAction<Dimension>("getSize") {
@Override
public Dimension map() {
return getSource().getSize(dimension);
}
}));
}
/**
* Maps {@code Component.getToolkit()} through queue
*/
public Toolkit getToolkit() {
return (runMapping(new MapAction<Toolkit>("getToolkit") {
@Override
public Toolkit map() {
return getSource().getToolkit();
}
}));
}
/**
* Maps {@code Component.getTreeLock()} through queue
*/
public Object getTreeLock() {
return (runMapping(new MapAction<Object>("getTreeLock") {
@Override
public Object map() {
return getSource().getTreeLock();
}
}));
}
/**
* Maps {@code Component.getWidth()} through queue
*/
public int getWidth() {
return (runMapping(new MapIntegerAction("getWidth") {
@Override
public int map() {
return getSource().getWidth();
}
}));
}
/**
* Maps {@code Component.getX()} through queue
*/
public int getX() {
return (runMapping(new MapIntegerAction("getX") {
@Override
public int map() {
return getSource().getX();
}
}));
}
/**
* Maps {@code Component.getY()} through queue
*/
public int getY() {
return (runMapping(new MapIntegerAction("getY") {
@Override
public int map() {
return getSource().getY();
}
}));
}
/**
* Maps {@code Component.hasFocus()} through queue
*/
public boolean hasFocus() {
return (runMapping(new MapBooleanAction("hasFocus") {
@Override
public boolean map() {
return getSource().hasFocus();
}
}));
}
/**
* Maps {@code Component.imageUpdate(Image, int, int, int, int, int)}
* through queue
*/
public boolean imageUpdate(final Image image, final int i, final int i1, final int i2, final int i3, final int i4) {
return (runMapping(new MapBooleanAction("imageUpdate") {
@Override
public boolean map() {
return getSource().imageUpdate(image, i, i1, i2, i3, i4);
}
}));
}
/**
* Maps {@code Component.invalidate()} through queue
*/
public void invalidate() {
runMapping(new MapVoidAction("invalidate") {
@Override
public void map() {
getSource().invalidate();
}
});
}
/**
* Maps {@code Component.isDisplayable()} through queue
*/
public boolean isDisplayable() {
return (runMapping(new MapBooleanAction("isDisplayable") {
@Override
public boolean map() {
return getSource().isDisplayable();
}
}));
}
/**
* Maps {@code Component.isDoubleBuffered()} through queue
*/
public boolean isDoubleBuffered() {
return (runMapping(new MapBooleanAction("isDoubleBuffered") {
@Override
public boolean map() {
return getSource().isDoubleBuffered();
}
}));
}
/**
* Maps {@code Component.isEnabled()} through queue
*/
public boolean isEnabled() {
return (runMapping(new MapBooleanAction("isEnabled") {
@Override
public boolean map() {
return getSource().isEnabled();
}
}));
}
/**
* Maps {@code Component.isFocusTraversable()} through queue
*/
@Deprecated
public boolean isFocusTraversable() {
return (runMapping(new MapBooleanAction("isFocusTraversable") {
@Override
public boolean map() {
return getSource().isFocusTraversable();
}
}));
}
/**
* Maps {@code Component.isLightweight()} through queue
*/
public boolean isLightweight() {
return (runMapping(new MapBooleanAction("isLightweight") {
@Override
public boolean map() {
return getSource().isLightweight();
}
}));
}
/**
* Maps {@code Component.isOpaque()} through queue
*/
public boolean isOpaque() {
return (runMapping(new MapBooleanAction("isOpaque") {
@Override
public boolean map() {
return getSource().isOpaque();
}
}));
}
/**
* Maps {@code Component.isShowing()} through queue
*/
public boolean isShowing() {
return (runMapping(new MapBooleanAction("isShowing") {
@Override
public boolean map() {
return getSource().isShowing();
}
}));
}
/**
* Maps {@code Component.isValid()} through queue
*/
public boolean isValid() {
return (runMapping(new MapBooleanAction("isValid") {
@Override
public boolean map() {
return getSource().isValid();
}
}));
}
/**
* Maps {@code Component.isVisible()} through queue
*/
public boolean isVisible() {
return (runMapping(new MapBooleanAction("isVisible") {
@Override
public boolean map() {
return getSource().isVisible();
}
}));
}
/**
* Maps {@code Component.list()} through queue
*/
public void list() {
runMapping(new MapVoidAction("list") {
@Override
public void map() {
getSource().list();
}
});
}
/**
* Maps {@code Component.list(PrintStream)} through queue
*/
public void list(final PrintStream printStream) {
runMapping(new MapVoidAction("list") {
@Override
public void map() {
getSource().list(printStream);
}
});
}
/**
* Maps {@code Component.list(PrintStream, int)} through queue
*/
public void list(final PrintStream printStream, final int i) {
runMapping(new MapVoidAction("list") {
@Override
public void map() {
getSource().list(printStream, i);
}
});
}
/**
* Maps {@code Component.list(PrintWriter)} through queue
*/
public void list(final PrintWriter printWriter) {
runMapping(new MapVoidAction("list") {
@Override
public void map() {
getSource().list(printWriter);
}
});
}
/**
* Maps {@code Component.list(PrintWriter, int)} through queue
*/
public void list(final PrintWriter printWriter, final int i) {
runMapping(new MapVoidAction("list") {
@Override
public void map() {
getSource().list(printWriter, i);
}
});
}
/**
* Maps {@code Component.paint(Graphics)} through queue
*/
public void paint(final Graphics graphics) {
runMapping(new MapVoidAction("paint") {
@Override
public void map() {
getSource().paint(graphics);
}
});
}
/**
* Maps {@code Component.paintAll(Graphics)} through queue
*/
public void paintAll(final Graphics graphics) {
runMapping(new MapVoidAction("paintAll") {
@Override
public void map() {
getSource().paintAll(graphics);
}
});
}
/**
* Maps {@code Component.prepareImage(Image, int, int, ImageObserver)}
* through queue
*/
public boolean prepareImage(final Image image, final int i, final int i1, final ImageObserver imageObserver) {
return (runMapping(new MapBooleanAction("prepareImage") {
@Override
public boolean map() {
return getSource().prepareImage(image, i, i1, imageObserver);
}
}));
}
/**
* Maps {@code Component.prepareImage(Image, ImageObserver)} through queue
*/
public boolean prepareImage(final Image image, final ImageObserver imageObserver) {
return (runMapping(new MapBooleanAction("prepareImage") {
@Override
public boolean map() {
return getSource().prepareImage(image, imageObserver);
}
}));
}
/**
* Maps {@code Component.print(Graphics)} through queue
*/
public void print(final Graphics graphics) {
runMapping(new MapVoidAction("print") {
@Override
public void map() {
getSource().print(graphics);
}
});
}
/**
* Maps {@code Component.printAll(Graphics)} through queue
*/
public void printAll(final Graphics graphics) {
runMapping(new MapVoidAction("printAll") {
@Override
public void map() {
getSource().printAll(graphics);
}
});
}
/**
* Maps {@code Component.remove(MenuComponent)} through queue
*/
public void remove(final MenuComponent menuComponent) {
runMapping(new MapVoidAction("remove") {
@Override
public void map() {
getSource().remove(menuComponent);
}
});
}
/**
* Maps {@code Component.removeComponentListener(ComponentListener)}
* through queue
*/
public void removeComponentListener(final ComponentListener componentListener) {
runMapping(new MapVoidAction("removeComponentListener") {
@Override
public void map() {
getSource().removeComponentListener(componentListener);
}
});
}
/**
* Maps {@code Component.removeFocusListener(FocusListener)} through queue
*/
public void removeFocusListener(final FocusListener focusListener) {
runMapping(new MapVoidAction("removeFocusListener") {
@Override
public void map() {
getSource().removeFocusListener(focusListener);
}
});
}
/**
* Maps
* {@code Component.removeInputMethodListener(InputMethodListener)}
* through queue
*/
public void removeInputMethodListener(final InputMethodListener inputMethodListener) {
runMapping(new MapVoidAction("removeInputMethodListener") {
@Override
public void map() {
getSource().removeInputMethodListener(inputMethodListener);
}
});
}
/**
* Maps {@code Component.removeKeyListener(KeyListener)} through queue
*/
public void removeKeyListener(final KeyListener keyListener) {
runMapping(new MapVoidAction("removeKeyListener") {
@Override
public void map() {
getSource().removeKeyListener(keyListener);
}
});
}
/**
* Maps {@code Component.removeMouseListener(MouseListener)} through queue
*/
public void removeMouseListener(final MouseListener mouseListener) {
runMapping(new MapVoidAction("removeMouseListener") {
@Override
public void map() {
getSource().removeMouseListener(mouseListener);
}
});
}
/**
* Maps
* {@code Component.removeMouseMotionListener(MouseMotionListener)}
* through queue
*/
public void removeMouseMotionListener(final MouseMotionListener mouseMotionListener) {
runMapping(new MapVoidAction("removeMouseMotionListener") {
@Override
public void map() {
getSource().removeMouseMotionListener(mouseMotionListener);
}
});
}
/**
* Maps {@code Component.removeNotify()} through queue
*/
public void removeNotify() {
runMapping(new MapVoidAction("removeNotify") {
@Override
public void map() {
getSource().removeNotify();
}
});
}
/**
* Maps
* {@code Component.removePropertyChangeListener(PropertyChangeListener)}
* through queue
*/
public void removePropertyChangeListener(final PropertyChangeListener propertyChangeListener) {
runMapping(new MapVoidAction("removePropertyChangeListener") {
@Override
public void map() {
getSource().removePropertyChangeListener(propertyChangeListener);
}
});
}
/**
* Maps
* {@code Component.removePropertyChangeListener(String, PropertyChangeListener)}
* through queue
*/
public void removePropertyChangeListener(final String string, final PropertyChangeListener propertyChangeListener) {
runMapping(new MapVoidAction("removePropertyChangeListener") {
@Override
public void map() {
getSource().removePropertyChangeListener(string, propertyChangeListener);
}
});
}
/**
* Maps {@code Component.repaint()} through queue
*/
public void repaint() {
runMapping(new MapVoidAction("repaint") {
@Override
public void map() {
getSource().repaint();
}
});
}
/**
* Maps {@code Component.repaint(int, int, int, int)} through queue
*/
public void repaint(final int i, final int i1, final int i2, final int i3) {
runMapping(new MapVoidAction("repaint") {
@Override
public void map() {
getSource().repaint(i, i1, i2, i3);
}
});
}
/**
* Maps {@code Component.repaint(long)} through queue
*/
public void repaint(final long l) {
runMapping(new MapVoidAction("repaint") {
@Override
public void map() {
getSource().repaint(l);
}
});
}
/**
* Maps {@code Component.repaint(long, int, int, int, int)} through queue
*/
public void repaint(final long l, final int i, final int i1, final int i2, final int i3) {
runMapping(new MapVoidAction("repaint") {
@Override
public void map() {
getSource().repaint(l, i, i1, i2, i3);
}
});
}
/**
* Maps {@code Component.requestFocus()} through queue
*/
public void requestFocus() {
runMapping(new MapVoidAction("requestFocus") {
@Override
public void map() {
getSource().requestFocus();
}
});
}
/**
* Maps {@code Component.setBackground(Color)} through queue
*/
public void setBackground(final Color color) {
runMapping(new MapVoidAction("setBackground") {
@Override
public void map() {
getSource().setBackground(color);
}
});
}
/**
* Maps {@code Component.setBounds(int, int, int, int)} through queue
*/
public void setBounds(final int i, final int i1, final int i2, final int i3) {
runMapping(new MapVoidAction("setBounds") {
@Override
public void map() {
getSource().setBounds(i, i1, i2, i3);
}
});
}
/**
* Maps {@code Component.setBounds(Rectangle)} through queue
*/
public void setBounds(final Rectangle rectangle) {
runMapping(new MapVoidAction("setBounds") {
@Override
public void map() {
getSource().setBounds(rectangle);
}
});
}
/**
* Maps {@code Component.setComponentOrientation(ComponentOrientation)}
* through queue
*/
public void setComponentOrientation(final ComponentOrientation componentOrientation) {
runMapping(new MapVoidAction("setComponentOrientation") {
@Override
public void map() {
getSource().setComponentOrientation(componentOrientation);
}
});
}
/**
* Maps {@code Component.setCursor(Cursor)} through queue
*/
public void setCursor(final Cursor cursor) {
runMapping(new MapVoidAction("setCursor") {
@Override
public void map() {
getSource().setCursor(cursor);
}
});
}
/**
* Maps {@code Component.setDropTarget(DropTarget)} through queue
*/
public void setDropTarget(final DropTarget dropTarget) {
runMapping(new MapVoidAction("setDropTarget") {
@Override
public void map() {
getSource().setDropTarget(dropTarget);
}
});
}
/**
* Maps {@code Component.setEnabled(boolean)} through queue
*/
public void setEnabled(final boolean b) {
runMapping(new MapVoidAction("setEnabled") {
@Override
public void map() {
getSource().setEnabled(b);
}
});
}
/**
* Maps {@code Component.setFont(Font)} through queue
*/
public void setFont(final Font font) {
runMapping(new MapVoidAction("setFont") {
@Override
public void map() {
getSource().setFont(font);
}
});
}
/**
* Maps {@code Component.setForeground(Color)} through queue
*/
public void setForeground(final Color color) {
runMapping(new MapVoidAction("setForeground") {
@Override
public void map() {
getSource().setForeground(color);
}
});
}
/**
* Maps {@code Component.setLocale(Locale)} through queue
*/
public void setLocale(final Locale locale) {
runMapping(new MapVoidAction("setLocale") {
@Override
public void map() {
getSource().setLocale(locale);
}
});
}
/**
* Maps {@code Component.setLocation(int, int)} through queue
*/
public void setLocation(final int i, final int i1) {
runMapping(new MapVoidAction("setLocation") {
@Override
public void map() {
getSource().setLocation(i, i1);
}
});
}
/**
* Maps {@code Component.setLocation(Point)} through queue
*/
public void setLocation(final Point point) {
runMapping(new MapVoidAction("setLocation") {
@Override
public void map() {
getSource().setLocation(point);
}
});
}
/**
* Maps {@code Component.setName(String)} through queue
*/
public void setName(final String string) {
runMapping(new MapVoidAction("setName") {
@Override
public void map() {
getSource().setName(string);
}
});
}
/**
* Maps {@code Component.setSize(int, int)} through queue
*/
public void setSize(final int i, final int i1) {
runMapping(new MapVoidAction("setSize") {
@Override
public void map() {
getSource().setSize(i, i1);
}
});
}
/**
* Maps {@code Component.setSize(Dimension)} through queue
*/
public void setSize(final Dimension dimension) {
runMapping(new MapVoidAction("setSize") {
@Override
public void map() {
getSource().setSize(dimension);
}
});
}
/**
* Maps {@code Component.setVisible(boolean)} through queue
*/
public void setVisible(final boolean b) {
runMapping(new MapVoidAction("setVisible") {
@Override
public void map() {
getSource().setVisible(b);
}
});
}
/**
* Maps {@code Component.transferFocus()} through queue
*/
public void transferFocus() {
runMapping(new MapVoidAction("transferFocus") {
@Override
public void map() {
getSource().transferFocus();
}
});
}
/**
* Maps {@code Component.update(Graphics)} through queue
*/
public void update(final Graphics graphics) {
runMapping(new MapVoidAction("update") {
@Override
public void map() {
getSource().update(graphics);
}
});
}
/**
* Maps {@code Component.validate()} through queue
*/
public void validate() {
runMapping(new MapVoidAction("validate") {
@Override
public void map() {
getSource().validate();
}
});
}
//End of mapping //
////////////////////////////////////////////////////////
private void setEventDispatcher(EventDispatcher dispatcher) {
dispatcher.setOutput(getOutput().createErrorOutput());
dispatcher.setTimeouts(getTimeouts());
this.dispatcher = dispatcher;
}
static class VisibleComponentFinder implements ComponentChooser {
ComponentChooser subFinder;
public VisibleComponentFinder(ComponentChooser sf) {
subFinder = sf;
}
@Override
public boolean checkComponent(Component comp) {
if (comp.isShowing()) {
return subFinder.checkComponent(comp);
}
return false;
}
@Override
public String getDescription() {
return subFinder.getDescription();
}
@Override
public String toString() {
return "VisibleComponentFinder{" + "subFinder=" + subFinder + '}';
}
}
}