package org.jzy3d.chart.controllers.keyboard.screenshot;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import org.jzy3d.chart.Chart;
import org.jzy3d.chart.controllers.AbstractController;

import com.jogamp.opengl.util.texture.TextureIO;

public class AbstractScreenshotKeyController extends AbstractController implements IScreenshotKeyController{
    protected Chart chart;
    protected String outputFile;
    protected List listeners = new ArrayList(1);

    /*public AbstractScreenshotKeyController() {
        super();
    }

    public AbstractScreenshotKeyController(Chart chart) {
        super(chart);
    }*/
    
    public AbstractScreenshotKeyController(Chart chart, String outputFile) {
        super(chart);
        register(chart);
        this.chart = chart;
        this.outputFile = outputFile;
    }

    @Override
    public void register(Chart chart) {
    	super.register(chart);
        chart.getCanvas().addKeyController(this);
    }

    @Override
    public void dispose() {
    	for(Chart c: targets){
    	    c.getCanvas().removeKeyController(this);
    	}
    	
    	super.dispose(); // i.e. target=null
    }

    @Override
    public void screenshot(Chart chart, String filename) throws IOException {
        File output = new File(filename);
        if (!output.getParentFile().exists())
            output.mkdirs();
    	TextureIO.write(chart.screenshot(), new File(filename));  
    }

    @Override
    public void addListener(IScreenshotEventListener listener) {
        listeners.add(listener);
    }

    protected void fireDone(String file) {
        for(IScreenshotEventListener listener: listeners){
            listener.doneScreenshot(file);
        }
    }

    protected void fireError(String file, Exception e) {
        for(IScreenshotEventListener listener: listeners){
            listener.failedScreenshot(file, e);
        }
    }

}
 

Ads help maintain this website.