package ac.essex.gp.interfaces.graphical;

import ac.essex.ooechs.imaging.commons.util.panels.ScalingImagePanel;
import ac.essex.ooechs.imaging.commons.util.panels.ImagePanel;

import javax.swing.*;
import java.awt.*;
import java.awt.image.BufferedImage;
import java.awt.event.WindowAdapter;
import java.awt.event.WindowEvent;

/**
     * Displays a live preview of segmenters effect on a particular image.
 */
class ImageWindow extends JDialog {

    ImagePanel image;
    JLabel lblMessage;
    private GraphicalListener graphicalListener;
    boolean setSize = true;

    public ImageWindow(GraphicalListener graphicalListener) {
        super(graphicalListener.window);
        this.graphicalListener = graphicalListener;
        setTitle("Result Viewer");
        image = new ScalingImagePanel();
        lblMessage = new JLabel();

        //JPanel status = new JPanel(new FlowLayout(FlowLayout.LEFT));
        getContentPane().add(image, BorderLayout.CENTER);
        getContentPane().add(lblMessage, BorderLayout.SOUTH);
        setLocation((int) graphicalListener.window.getLocation().getX(), 50);
        setVisible(true);

        addWindowListener(new WindowAdapter() {
            public void windowClosing(WindowEvent e) {
                onClose();
            }
        });

    }

    public void setImage(BufferedImage img) {
        if (setSize) {
            setSize(img.getWidth(), img.getHeight() + 50);
            setSize = false;
        }
        //image.setIcon(new ImageIcon(img));
        image.setImage(img);
    }

    public void onClose() {
        graphicalListener.displayOutput = false;
        graphicalListener.window.mnuDisplayImage.setSelected(false);
        dispose();
    }

}
