import java.awt.*;
import java.io.*;
import java.util.zip.*;
import java.util.Vector;

public class Controller
{
    public Controller()
    {
	
    }

    public void addGui(DrawGui gui)
    {
	myGui = gui;
    }

    public void loadImage(String name)
    {
	myGui.showMessage("loading image "+name);
	Image im = ImageLoader.loadImage(myGui,name);
	addFigure(new ProtoFigure(im));
	myGui.showMessage("finished loading "+name);
    }

    public void setTool(Tool t)
    {
	if (myTool != null)
	{
	    myTool.setActive(false);
	}
	myTool = t;
	myTool.setActive(true);
    }

    public void addFigure(Figure f)
    {
	myGui.addFigure(f,true);
    }

    public void save(String filename)
    {
	Vector figs = myGui.getFigures();
	try{
	    GZIPOutputStream zout = new GZIPOutputStream(
		new FileOutputStream(filename));
	    ObjectOutputStream out = new ObjectOutputStream(zout);
	    out.writeObject(figs);
	    out.flush();
	    out.close();
	}
	catch (IOException e)
	{
	    myGui.showMessage("save error "+e);
	}
    }

    public void load(String filename)
    {
	try{
	    GZIPInputStream zin = new GZIPInputStream(
		new FileInputStream(filename));
	    ObjectInputStream in = new ObjectInputStream(zin);
	    
	    Vector figs = (Vector) in.readObject();
	    in.close();
	    myGui.addFigures(figs);
	}
	catch(Exception e)
	{
	    myGui.showMessage("load error "+e);
	}
    }

    public Figure getFigure(Point p)
    {
	return myGui.getFigure(p);
    }
    
    public Container getDrawingArea()
    {
	return myGui.getDrawable();
    }

    public Color getColor()
    {
	return myGui.getColor();
    }

    DrawGui myGui;
    Tool    myTool;
}
