package fr.upem.touchevent;

import java.util.ArrayList;
import java.util.LinkedList;
import java.util.List;

public class ShapeModel {
	
    private final List<Shape> shapes = new ArrayList<Shape>();
    private final List<ShapeListener> listeners = new LinkedList<ShapeListener>();
    
    public void addShape(Shape shape){
    	shapes.add(shape);
    	fireShapeChanged();
    }

    
	    
    public int getShapeCount() {
        return shapes.size();
	}

    public Shape getShape(int pos){
    	if(pos < 0 || pos >= shapes.size()) throw new RuntimeException("index out of range [0,"+shapes.size()+"]");
    	return shapes.get(pos);
    }


	public void addShapeListener(ShapeListener listener){
    	listeners.add(listener);
    }
    
    protected void fireShapeChanged(){
    	for(ShapeListener l:listeners){
    		l.onChange();
    	}
    }
    
    
	
	
}
