// Copyright (c) 1996-98 The Regents of the University of California. All // Rights Reserved. Permission to use, copy, modify, and distribute this // software and its documentation for educational, research and non-profit // purposes, without fee, and without a written agreement is hereby granted, // provided that the above copyright notice and this paragraph appear in all // copies. Permission to incorporate this software into commercial products may // be obtained by contacting the University of California. David F. Redmiles // Department of Information and Computer Science (ICS) University of // California Irvine, California 92697-3425 Phone: 714-824-3823. This software // program and documentation are copyrighted by The Regents of the University // of California. The software program and documentation are supplied "as is", // without any accompanying services from The Regents. The Regents do not // warrant that the operation of the program will be uninterrupted or // error-free. The end-user understands that the program was developed for // research purposes and is advised not to rely exclusively on the program for // any reason. IN NO EVENT SHALL THE UNIVERSITY OF CALIFORNIA BE LIABLE TO ANY // PARTY FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES, // INCLUDING LOST PROFITS, ARISING OUT OF THE USE OF THIS SOFTWARE AND ITS // DOCUMENTATION, EVEN IF THE UNIVERSITY OF CALIFORNIA HAS BEEN ADVISED OF THE // POSSIBILITY OF SUCH DAMAGE. THE UNIVERSITY OF CALIFORNIA SPECIFICALLY // DISCLAIMS ANY WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED // WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE // SOFTWARE PROVIDED HEREUNDER IS ON AN "AS IS" BASIS, AND THE UNIVERSITY OF // CALIFORNIA HAS NO OBLIGATIONS TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, // ENHANCEMENTS, OR MODIFICATIONS. // File: ActionSequence.java // Classes: ActionSequence // Original Author: jrobbins@ics.uci.edu // $Id: ActionSequence.java,v 1.3 1997/06/10 23:42:23 jrobbins Exp $ package uci.graphedit; import java.util.*; import java.awt.*; /** Action to execute a sequence of Action's. Needs-More-Work: This * could be part of a user macro recording feature. Or an easy way * for programmers to define new actions that are basically sequence * of existing actions. * * FEATURE: macros */ public class ActionSequence extends Action { private Vector actions; /** Construct a new ActionSequence */ public ActionSequence() { } public ActionSequence(Action a1) { add(a1); } public ActionSequence(Action a1, Action a2) { add(a1); add(a2); } public ActionSequence(Action a1, Action a2, Action a3) { add(a1); add(a2); add(a3); } public void add(Action a) { actions.addElement(a); }; public String name() { String n = "Seq: "; Enumeration acts = actions.elements(); while (acts.hasMoreElements()) { Action a = (Action) acts.nextElement(); n = n + a.name(); if (acts.hasMoreElements()) n = n + ", "; } return n; } /** Call the undoIt method of each subAction. */ public void doIt(Event e) { Editor ce = Globals.curEditor(); Enumeration acts = actions.elements(); while (acts.hasMoreElements()) { Action a = (Action) acts.nextElement(); ce.executeAction(a, e); } } /** Call the undoIt method of each subAction, in reverse order! */ public void undoIt() { for (int i = actions.size() - 1; i >= 0; --i) ((Action)actions.elementAt(i)).undoIt(); } } /* end class ActionSequence */