import javax.swing.*;
import java.awt.*;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.event.MouseMotionListener;
import java.io.Serializable;

/**
 * Gère une création qui est ajoutée à un projet
 */
public class Composition extends JPanel implements MouseListener, MouseMotionListener, Serializable {
    public static int _compositionId = 0;
    public static String UML_DIAGRAM = "UML Diagram";

    private Project _project;
    protected String _name;
    protected String _type;
    protected Object _toolbar;
    protected AppThinkerWindow _window;

    /**
     * Constructeur - Crée une nouvelle composition.
     * @param project Le projet associé à la composition.
     */
    public Composition(Project project){
        _project = project;
        this.addMouseListener(this);
        this.addMouseMotionListener(this);
        this.setPreferredSize(new Dimension(3000,3000));
    }

    /**
     * Paramètre la fenêtre enfant de la composition.
     * @param window La fenêtre qui affiche la composition.
     */
    public void setWindow(AppThinkerWindow window){
        _window = window;
    }

    /**
     * Retourne le type de la composition.
     * @return Le type de la composition.
     */
    public String getType(){
        return _type;
    }

    /**
     * Retourne le projet associé à la composition.
     * @return Le projet associé à la composition.
     */
    public Project getProject(){
        return _project;
    }

    public Object getToolbar(){
        return _toolbar;
    }

    public JScrollPane getScrollPanel(){
        return new JScrollPane(this);
    }

    //Evènements souris
    @Override
    public void mouseClicked(MouseEvent e) {

    }

    @Override
    public void mousePressed(MouseEvent e) {

    }

    @Override
    public void mouseReleased(MouseEvent e) {

    }

    @Override
    public void mouseEntered(MouseEvent e) {

    }

    @Override
    public void mouseExited(MouseEvent e) {

    }

    @Override
    public void mouseDragged(MouseEvent e) {

    }

    @Override
    public void mouseMoved(MouseEvent e) {
        int getX = e.getX();
        int getY = e.getY();
        int sens = 5;
        //Mise à jour des coordonnées de la souris dans la statusbar
        AppThinker.getWindow().getStatusbar().setPosLabel(e.getX(), e.getY());
    }
}
