/* * StartDragOperation.java * @Author Oleg Gorobets * Created: 14.08.2007 * CVS-ID: $Id: *************************************************************************/ package org.swfparser.operation; import java.util.ArrayList; import java.util.List; import java.util.Stack; import org.swfparser.CodeUtil; import org.swfparser.Operation; import com.jswiff.swfrecords.actions.StackValue; public class StartDragOperation extends AbstractOperation { /** * Object - The target path of the movie clip to drag. */ protected Operation target; /** * Boolean [optional] - A Boolean value specifying whether the draggable movie clip is locked to the center of the mouse position (true ) or locked to the point where the user first clicked the movie clip (false ). */ protected Operation lock; protected Operation constrain; protected Operation x1; protected Operation x2; protected Operation y1; protected Operation y2; public StartDragOperation(Stack<Operation> stack) { super(stack); target = stack.pop(); lock = stack.pop(); constrain = stack.pop(); if (constrain instanceof StackValue && ((StackValue)constrain).getIntValue() != 0) { y2 = stack.pop(); x2 = stack.pop(); y1 = stack.pop(); x1 = stack.pop(); } } public int getArgsNumber() { // TODO Auto-generated method stub return 0; } public String getStringValue(int level) { StringBuffer buf = new StringBuffer() .append(CodeUtil.getIndent(level)) .append("startDrag(") .append(target.getStringValue(level)) .append(",") .append(lock.getStringValue(level)) ; if (x1!=null && x2!=null && y1!=null && y2!=null) { buf .append(",") .append(x1.getStringValue(level)) .append(",") .append(y1.getStringValue(level)) .append(",") .append(x2.getStringValue(level)) .append(",") .append(y2.getStringValue(level)) ; } buf.append(")"); return buf.toString(); } public List<Operation> getOperations() { List<Operation> operations = new ArrayList<Operation>(); operations.add(target); operations.add(lock); operations.add(constrain); if (x1!=null && x2!=null && y1!=null && y2!=null) { operations.add(y2); operations.add(x2); operations.add(y1); operations.add(x1); } return operations; } }