/* * Author: tdanford * Date: Nov 14, 2008 */ package org.seqcode.viz.eye; import java.awt.*; import java.util.*; import org.seqcode.gseutils.models.Model; public class ContainerModelPaintable extends AbstractModelPaintable { protected ArrayList<ModelPaintable> innerPaintables; public ContainerModelPaintable() { innerPaintables = new ArrayList<ModelPaintable>(); } public ContainerModelPaintable(ModelPaintable... pts) { this(); for(int i = 0; i < pts.length; i++) { addModelPaintable(pts[i]); } } public ContainerModelPaintable(Collection<ModelPaintable> pts) { this(); for(ModelPaintable p : pts) { addModelPaintable(p); } } public void addModelPaintable(ModelPaintable p) { if(!innerPaintables.contains(p)) { p.addPaintableChangedListener(this); } innerPaintables.add(p); } public void removeModelPaintable(ModelPaintable p) { innerPaintables.remove(p); if(!innerPaintables.contains(p)) { p.removePaintableChangedListener(this); } } public void addModel(Model m) { setEventPassthrough(false); for(ModelPaintable p : innerPaintables) { p.addModel(m); } setEventPassthrough(true); dispatchChangedEvent(); } public void addModels(Iterator<? extends Model> itr) { setEventPassthrough(false); while(itr.hasNext()) { Model m = itr.next(); for(ModelPaintable p : innerPaintables) { p.addModel(m); } } setEventPassthrough(true); dispatchChangedEvent(); } public void clearModels() { setEventPassthrough(false); for(ModelPaintable p : innerPaintables) { p.clearModels(); } setEventPassthrough(true); dispatchChangedEvent(); } public void paintItem(Graphics g, int x1, int y1, int x2, int y2) { // does nothing, by default. } }