// Copyright 2001, FreeHEP. package org.freehep.graphicsio.swf; import java.io.IOException; import java.util.Vector; import org.freehep.util.io.Action; /** * DefineButton TAG. * * @author Mark Donszelmann * @author Charles Loomis * @version $Id: freehep-graphicsio-swf/src/main/java/org/freehep/graphicsio/swf/DefineButton.java db861da05344 2005/12/05 00:59:43 duns $ */ public class DefineButton extends DefinitionTag { private int character; private Vector<ButtonRecord> buttons; private Vector<Action> actions; public DefineButton(int id, Vector<ButtonRecord> buttons, Vector<Action> actions) { this(); character = id; this.buttons = buttons; this.actions = actions; } public DefineButton() { super(7, 1); } public SWFTag read(int tagID, SWFInputStream swf, int len) throws IOException { DefineButton tag = new DefineButton(); tag.character = swf.readUnsignedShort(); swf.getDictionary().put(tag.character, tag); tag.buttons = new Vector<ButtonRecord>(); ButtonRecord record = new ButtonRecord(swf, false); while (!record.isEndRecord()) { tag.buttons.add(record); record = new ButtonRecord(swf, false); } tag.actions = new Vector<Action>(); Action action = swf.readAction(); while (action != null) { tag.actions.add(action); action = swf.readAction(); } return tag; } public void write(int tagID, SWFOutputStream swf) throws IOException { swf.writeUnsignedShort(character); for (int i = 0; i < buttons.size(); i++) { ButtonRecord b = buttons.get(i); b.write(swf); } swf.writeUnsignedByte(0); for (int i = 0; i < actions.size(); i++) { Action a = actions.get(i); swf.writeAction(a); } swf.writeAction(null); } public String toString() { StringBuffer s = new StringBuffer(); s.append(super.toString() + "\n"); s.append(" character: " + character + "\n"); for (int i = 0; i < buttons.size(); i++) { s.append(" "); s.append(buttons.get(i)); s.append("\n"); } for (int i = 0; i < actions.size(); i++) { s.append(" "); s.append(actions.get(i)); s.append("\n"); } return s.toString(); } }