package be.msyben.vinylManager.gui;


import java.awt.Point;
import java.awt.event.FocusAdapter;
import java.awt.event.FocusEvent;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;

/**
 * Permet de zoomer sur une image.
 * @author Mathieu Syben
 */
public class ZoomImage extends JFrame {

     /** uid     */
    private static final long serialVersionUID = 966646253L;

    /** L'image */
    private ImageIcon image;

    /**
     * Constructeur privé.
     */
    private ZoomImage() {
    }

    /**
     * Constructeur.
     * @param image L'image
     */
    public ZoomImage(byte[] imageData) {
        super();

        this.image = new ImageIcon(imageData);

        this.setLayout(null);
        this.setUndecorated(true);

        this.setSize(image.getIconWidth(), image.getIconHeight()); //On donne une taille à notre fenêtre
        this.setLocationRelativeTo(null); //On centre la fenêtre sur l'ecran

        JLabel label = new JLabel();
        label.setIcon(image);
        label.setBounds(0, 0, image.getIconWidth(), image.getIconHeight());
        this.getContentPane().add(label);

        setVisible(true);
        setFocusable(true);
        toFront();
        requestFocus();


        this.addFocusListener(new FocusAdapter() {

            @Override
            public void focusLost(FocusEvent e) {
                dispose();
            }
        });


        MouseAdapter ma = new MouseAdapter() {

            /** L'endroit où je clique sur l'image */
            private Point delta;

            @Override
            public void mousePressed(MouseEvent e) {
                delta = e.getPoint();
                if (e.getClickCount() == 2) {
                    dispose();
                }
            }

            @Override
            public void mouseDragged(MouseEvent e) {
                Point p = e.getLocationOnScreen();
                p.setLocation(p.getX() - delta.getX(), p.getY() - delta.getY());
                setLocation(p);
            }
        };

        this.addMouseListener(ma);
        this.addMouseMotionListener(ma);
    }
}
