01: package com.xoetrope.carousel.testpilot;
02:
03: import java.awt.AWTEvent;
04: import java.awt.AWTException;
05: import java.awt.Component;
06: import java.awt.Point;
07: import java.awt.Robot;
08: import java.awt.Toolkit;
09: import java.awt.event.MouseEvent;
10:
11: import net.xoetrope.xui.data.XModel;
12: import java.awt.event.ItemEvent;
13: import java.awt.Choice;
14:
15: /**
16: * A thread for posting the events
17: * <p> Copyright (c) Xoetrope Ltd., 2001-2006, This software is licensed under
18: * the GNU Public License (GPL), please see license.txt for more details. If
19: * you make commercial use of this software you must purchase a commercial
20: * license from Xoetrope.</p>
21: * <p> $Revision: 1.2 $</p>
22: */
23: public class PlayerThread extends Thread {
24: private ApplicationRunner appRunner;
25: private XModel eventList;
26: private int delay;
27:
28: public PlayerThread(ApplicationRunner runner, XModel events,
29: int interval) {
30: appRunner = runner;
31: eventList = events;
32: delay = interval;
33: }
34:
35: public void run() {
36: int numEvents = eventList.getNumChildren();
37: for (int i = 1; i < numEvents; i++) {
38: XModel eventItemModel = eventList.get(i);
39: Component comp = appRunner
40: .getReferenceComponent(eventItemModel
41: .getValueAsString("reference"));
42: AWTEvent event = EventFactory.getEvent(comp, eventItemModel
43: .getValueAsString("event"), eventItemModel
44: .getValueAsString("value"), eventItemModel
45: .getValueAsString("cmd"), eventItemModel
46: .getValueAsString("eid"));
47: if (event == null)
48: return;
49:
50: if ((delay > 0) && (event instanceof MouseEvent)) {
51: try {
52: MouseEvent me = (MouseEvent) event;
53: Point loc = comp.getLocationOnScreen();
54: RobotWrapper rw = appRunner.getRobot(comp);
55: Robot r = rw.robot;
56: r.mouseMove(loc.x + me.getX() - rw.offset, loc.y
57: + me.getY());
58:
59: int toPress = 0;
60: int button = me.getButton();
61: if (button == MouseEvent.BUTTON1)
62: toPress = MouseEvent.BUTTON1_MASK;
63: else if (button == MouseEvent.BUTTON2)
64: toPress = MouseEvent.BUTTON2_MASK;
65: else if (button == MouseEvent.BUTTON3)
66: toPress = MouseEvent.BUTTON3_MASK;
67:
68: int type = me.getID();
69: if (type == MouseEvent.MOUSE_PRESSED)
70: r.mousePress(toPress);
71: else if (type == MouseEvent.MOUSE_RELEASED)
72: r.mouseRelease(toPress);
73:
74: continue;
75: } catch (AWTException ex) {
76: } catch (IllegalStateException ex) {
77: }
78: } else if (comp instanceof Choice) {
79: if (event instanceof ItemEvent)
80: ((Choice) comp).select((String) ((ItemEvent) event)
81: .getItem());
82: continue;
83: }
84: Toolkit.getDefaultToolkit().getSystemEventQueue()
85: .postEvent(event);
86: appRunner.setExecutedEvent(i);
87: try {
88: sleep(delay);
89: } catch (InterruptedException ex1) {
90: }
91: }
92: }
93:
94: }
|