// XAAL toolkit // Copyright (C) 2009 Ville Karavirta // // This program is free software: you can redistribute it and/or modify // it under the terms of the GNU General Public License as published by // the Free Software Foundation, either version 3 of the License, or // (at your option) any later version. // // This program is distributed in the hope that it will be useful, // but WITHOUT ANY WARRANTY; without even the implied warranty of // MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the // GNU General Public License for more details. // // You should have received a copy of the GNU General Public License // along with this program. If not, see . package xaal.objects.animation; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import xaal.objects.AddGraphicalOperation; import xaal.objects.AddGraphicalPrimitive; import xaal.objects.Xaal; import xaal.objects.graphical.GraphicalPrimitive; import xaal.util.EmptyIterator; public class StructureOperation extends NarrativeOperation implements AddGraphicalPrimitive, AddGraphicalOperation{ private List graphics; public StructureOperation(Xaal xaalDoc) { super(xaalDoc); } /** * @return Returns the graphics. */ public Iterator getGraphicals() { if (graphics == null) { return new EmptyIterator(); } return graphics.iterator(); } /** * @param graphical The graphics to set. */ public void setGraphical(List graphical) { this.graphics = graphical; } public void addGraphical(GraphicalPrimitive gp) { addGraphicalToList(gp); } public void addGraphical(GraphicalOperation go) { addGraphicalToList(go); } private void addGraphicalToList(Object o) { if (graphics == null) graphics = new ArrayList(); graphics.add(o); } public void apply(HashMap state) { Iterator i = getGraphicals(); while(i != null && i.hasNext()) { Object o = i.next(); if (o instanceof GraphicalOperation) { ((GraphicalOperation) o).apply(state); } else if (o instanceof GraphicalPrimitive) { GraphicalPrimitive gp = (GraphicalPrimitive) o; state.put(gp.getId(), gp); } } } }