001: /*
002: * $Id: ActionCondition.java,v 1.3 2002/08/06 23:55:01 skavish Exp $
003: *
004: * ===========================================================================
005: *
006: * The JGenerator Software License, Version 1.0
007: *
008: * Copyright (c) 2000 Dmitry Skavish (skavish@usa.net). All rights reserved.
009: *
010: * Redistribution and use in source and binary forms, with or without
011: * modification, are permitted provided that the following conditions are met:
012: *
013: * 1. Redistributions of source code must retain the above copyright
014: * notice, this list of conditions and the following disclaimer.
015: *
016: * 2. Redistributions in binary form must reproduce the above copyright
017: * notice, this list of conditions and the following disclaimer in
018: * the documentation and/or other materials provided with the
019: * distribution.
020: *
021: * 3. The end-user documentation included with the redistribution, if
022: * any, must include the following acknowlegement:
023: * "This product includes software developed by Dmitry Skavish
024: * (skavish@usa.net, http://www.flashgap.com/)."
025: * Alternately, this acknowlegement may appear in the software itself,
026: * if and wherever such third-party acknowlegements normally appear.
027: *
028: * 4. The name "The JGenerator" must not be used to endorse or promote
029: * products derived from this software without prior written permission.
030: * For written permission, please contact skavish@usa.net.
031: *
032: * 5. Products derived from this software may not be called "The JGenerator"
033: * nor may "The JGenerator" appear in their names without prior written
034: * permission of Dmitry Skavish.
035: *
036: * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
037: * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
038: * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
039: * DISCLAIMED. IN NO EVENT SHALL DMITRY SKAVISH OR THE OTHER
040: * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
041: * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
042: * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
043: * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
044: * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
045: * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
046: * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
047: * SUCH DAMAGE.
048: *
049: */
050:
051: package org.openlaszlo.iv.flash.api.button;
052:
053: import java.io.PrintStream;
054: import org.openlaszlo.iv.flash.util.*;
055: import org.openlaszlo.iv.flash.parser.*;
056: import org.openlaszlo.iv.flash.api.*;
057: import org.openlaszlo.iv.flash.api.action.*;
058:
059: public class ActionCondition extends FlashItem {
060:
061: // Button state transitions triggering an action.
062: public static int OverDownToIdle = 0x0100; // DragOut 1
063: public static int IdleToOverDown = 0x0080; // DragOver 1
064: public static int OutDownToIdle = 0x0040; // Release Outside
065: public static int OutDownToOverDown = 0x0020; // DragOver 2
066: public static int OverDownToOutDown = 0x0010; // DragOut 2
067: public static int OverDownToOverUp = 0x0008; // Release
068: public static int OverUpToOverDown = 0x0004; // Press
069: public static int OverUpToIdle = 0x0002; // RollOut
070: public static int IdleToOverUp = 0x0001; // RollOver
071:
072: private int condition;
073: private Program program;
074:
075: public ActionCondition() {
076: }
077:
078: public ActionCondition(int condition, Program program) {
079: this .condition = condition;
080: this .program = program;
081: }
082:
083: /**
084: * Creates action condition on all "out" events: RollOut, DragOut
085: *
086: * @param program program to be executed on the event
087: * @return action condition
088: */
089: public static ActionCondition onOut(Program program) {
090: return new ActionCondition(OverUpToIdle | OverDownToIdle
091: | OverDownToOutDown, program);
092: }
093:
094: /**
095: * Creates action condition on all "over" events: RollOver, DragOver
096: *
097: * @param program program to be executed on the event
098: * @return action condition
099: */
100: public static ActionCondition onOver(Program program) {
101: return new ActionCondition(IdleToOverUp | IdleToOverDown
102: | OutDownToOverDown, program);
103: }
104:
105: /**
106: * Creates action condition on RollOut event
107: *
108: * @param program program to be executed on the event
109: * @return action condition
110: */
111: public static ActionCondition onRollOut(Program program) {
112: return new ActionCondition(OverUpToIdle, program);
113: }
114:
115: /**
116: * Creates action condition on RollOver event
117: *
118: * @param program program to be executed on the event
119: * @return action condition
120: */
121: public static ActionCondition onRollOver(Program program) {
122: return new ActionCondition(IdleToOverUp, program);
123: }
124:
125: /**
126: * Creates action condition on Press event
127: *
128: * @param program program to be executed on the event
129: * @return action condition
130: */
131: public static ActionCondition onPress(Program program) {
132: return new ActionCondition(OverUpToOverDown, program);
133: }
134:
135: /**
136: * Creates action condition on DragOut event
137: *
138: * @param program program to be executed on the event
139: * @return action condition
140: */
141: public static ActionCondition onDragOut(Program program) {
142: return new ActionCondition(OverDownToIdle | OverDownToOutDown,
143: program);
144: }
145:
146: /**
147: * Creates action condition on DragOver event
148: *
149: * @param program program to be executed on the event
150: * @return action condition
151: */
152: public static ActionCondition onDragOver(Program program) {
153: return new ActionCondition(IdleToOverDown | OutDownToOverDown,
154: program);
155: }
156:
157: /**
158: * Creates action condition on ReleaseOutside event
159: *
160: * @param program program to be executed on the event
161: * @return action condition
162: */
163: public static ActionCondition onReleaseOutside(Program program) {
164: return new ActionCondition(OutDownToIdle, program);
165: }
166:
167: /**
168: * Creates action condition on Release event
169: *
170: * @param program program to be executed on the event
171: * @return action condition
172: */
173: public static ActionCondition onRelease(Program program) {
174: return new ActionCondition(OverDownToOverUp, program);
175: }
176:
177: /**
178: * Creates action condition on key press
179: *
180: * @param ch key code to catch
181: * @param program program to be executed on the event
182: * @return action condition
183: */
184: public static ActionCondition onKeyPress(char ch, Program program) {
185: return new ActionCondition((ch << 1) & 0xfe, program);
186: }
187:
188: public void setCondition(int condition) {
189: this .condition = condition;
190: }
191:
192: public void setProgram(Program program) {
193: this .program = program;
194: }
195:
196: public int getCondition() {
197: return condition;
198: }
199:
200: public Program getProgram() {
201: return program;
202: }
203:
204: public void write(FlashOutput fob) {
205: fob.writeWord(condition);
206: program.write(fob);
207: }
208:
209: public void printContent(PrintStream out, String indent) {
210: out.println(indent + " ActionCondition: condition="
211: + Util.w2h(condition));
212: program.printContent(out, indent + " ");
213: }
214:
215: public FlashItem getCopy(ScriptCopier copier) {
216: return new ActionCondition(condition, (Program) program
217: .getCopy(copier));
218: }
219:
220: }
|