///
/// \file Button.h
/// Classe mere du composant Button.
/// 
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 01/01/10
///

#ifndef BUTTON
#define BUTTON

#include "Controle.h"

class Couleur;

///
/// \class Button
/// Classe mere du composant Button.
/// 
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 01/01/10
///

class Button : public Controle {

  protected :
    int dx;                   ///< La taille d'affichage (largeur) du Button.
    char titre[100];          ///< Le texte du Button.
    Couleur *coulTexte;       ///< La couleur d'affichage du texte du Button.

  public :

///
/// Constructeur basique.
///
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
    Button(void);

///
/// Constructeur avec parametres d'initialisation.
///
/// @param px La position en x du Button.
/// @param py La position en y du Button.
/// @param dx La taille (largeur) du Button.
/// @param coul La couleur de base du Button.
/// @param coulT La couleur de dessin du texte du Button.
/// @param titre La chaine de caracteres titre du Button.
/// @param finActivation La fonction a executer en cas de selection.
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
    Button(int px,int py,int dx,Couleur *coul,Couleur *coulT,const char *titre,void (*finActivation)(void));

///
/// Destructeur.
///
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
    ~Button(void);

///
/// Dessin du Button.
///
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
    virtual void dessiner(void);

///
/// Sauvegarde des valeurs actuelles liees au Button.
///
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
    virtual void sauve(void);

///
/// Restoration des valeurs sauvegardees liees au Button.
///
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
    virtual void annule(void);

///
/// Selection du Button lie a la position (x,y).
///
/// @param x La coordonnee x.
/// @param y La coordonnee y.
/// @return Le booleen indiquant que la selection a bien ete geree.
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
    virtual int selection(int x,int y);
};

#endif
