001: /*
002: * @(#)IScriptMaker.java
003: *
004: * Copyright (C) 2002-2003 Matt Albrecht
005: * groboclown@users.sourceforge.net
006: * http://groboutils.sourceforge.net
007: *
008: * Permission is hereby granted, free of charge, to any person obtaining a
009: * copy of this software and associated documentation files (the "Software"),
010: * to deal in the Software without restriction, including without limitation
011: * the rights to use, copy, modify, merge, publish, distribute, sublicense,
012: * and/or sell copies of the Software, and to permit persons to whom the
013: * Software is furnished to do so, subject to the following conditions:
014: *
015: * The above copyright notice and this permission notice shall be included in
016: * all copies or substantial portions of the Software.
017: *
018: * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
019: * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
020: * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
021: * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
022: * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
023: * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
024: * DEALINGS IN THE SOFTWARE.
025: */
026:
027: package net.sourceforge.groboutils.uicapture.v1;
028:
029: import java.io.File;
030:
031: /**
032: * Implementors of this interface accept a collection of UI captured
033: * events as they relate to creating a play-back script. This interface
034: * dictates that the contract for all IScriptMaker instances, the
035: * {@link #start()} method
036: * <b>must</b> be called before any other method, and no other method, besides
037: * <tt>toString()</tt>, may be called after invoking the {@link #end()} method.
038: *
039: * @author Matt Albrecht <a href="mailto:groboclown@users.sourceforge.net">groboclown@users.sourceforge.net</a>
040: * @version $Date: 2003/02/10 22:52:31 $
041: * @since Jan 7, 2002
042: */
043: public interface IScriptMaker {
044:
045: //-------------------------------------------------------------------------
046: // Public methods
047:
048: /**
049: * Starts the script generation.
050: *
051: * @exception IllegalStateException if <tt>start()</tt> has already been
052: * called.
053: */
054: public void start();
055:
056: /**
057: * Terminates the script generation.
058: *
059: * @exception IllegalStateException if <tt>start()</tt> has not been called,
060: * or if <tt>end()</tt> has already been called.
061: */
062: public void end();
063:
064: /**
065: * Cause the script to delay for the given number of milliseconds.
066: *
067: * @param milliseconds the number of milliseconds in the delay.
068: * @exception IllegalStateException if <tt>start()</tt> has not been called,
069: * or if <tt>end()</tt> has already been called.
070: */
071: public void generateDelay(long milliseconds);
072:
073: /**
074: * Cause the script to rotate the mouse wheel.
075: *
076: * @param rotate the number of rotations the mouse wheel generated.
077: * @exception IllegalStateException if <tt>start()</tt> has not been called,
078: * or if <tt>end()</tt> has already been called.
079: * @see java.awt.event.MouseWheelEvent
080: */
081: public void generateMoveMouseWheel(int rotate);
082:
083: /**
084: * Cause the script to move the mouse.
085: *
086: * @param x the x-coordinate that the mouse moved to
087: * @param y the y-coordinate that the mouse moved to
088: * @exception IllegalStateException if <tt>start()</tt> has not been called,
089: * or if <tt>end()</tt> has already been called.
090: */
091: public void generateMoveMouse(int x, int y);
092:
093: /**
094: * Cause the script to press a mouse button.
095: *
096: * @param modifier the modifier code for the mouse button pressed.
097: * @exception IllegalStateException if <tt>start()</tt> has not been called,
098: * or if <tt>end()</tt> has already been called.
099: * @see java.awt.event.MouseEvent
100: */
101: public void generatePressMouse(int modifer);
102:
103: /**
104: * Cause the script to release a mouse button.
105: *
106: * @param modifier the modifier code for the mouse button released.
107: * @exception IllegalStateException if <tt>start()</tt> has not been called,
108: * or if <tt>end()</tt> has already been called.
109: * @see java.awt.event.MouseEvent
110: */
111: public void generateReleaseMouse(int modifier);
112:
113: /**
114: * Cause the script to press a key.
115: *
116: * @param keyCode code for the pressed key.
117: * @exception IllegalStateException if <tt>start()</tt> has not been called,
118: * or if <tt>end()</tt> has already been called.
119: * @see java.awt.event.KeyEvent
120: */
121: public void generatePressKey(int keyCode);
122:
123: /**
124: * Cause the script to release a key.
125: *
126: * @param keyCode code for the released key.
127: * @exception IllegalStateException if <tt>start()</tt> has not been called,
128: * or if <tt>end()</tt> has already been called.
129: * @see java.awt.event.KeyEvent
130: */
131: public void generateReleaseKey(int keyCode);
132:
133: /**
134: * Cause the script to capture a screen shot. Probably, it should compare
135: * the captured image against the original saved image.
136: *
137: * @param originalImage file containing the original image for the screen
138: * capture that the generated script will compare against when the
139: * test is run.
140: * @param x screen image bounds.
141: * @param y screen image bounds.
142: * @param width screen image bounds.
143: * @param height screen image bounds.
144: *
145: * @exception IllegalStateException if <tt>start()</tt> has not been called,
146: * or if <tt>end()</tt> has already been called.
147: */
148: public void generateScreenCapture(File originalImage, int x, int y,
149: int width, int height);
150: }
|