///
/// \file AdhocControle.h
/// Classe de gestion de composants d'interface utilisateur crees specifiquements.
/// 
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 01/01/10
///

#ifndef ADHOCCONTROLE
#define ADHOCCONTROLE

#include "Controle.h"

///
/// \class AdhocControle
/// Classe de gestion de composants d'interface utilisateur crees specifiquements.
/// 
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 01/01/10
///

class AdhocControle : public Controle {

  protected :
    void (*realiserDessin)(void);               ///< Fonction de dessin.
    void (*realiserSauvegarde)(void);           ///< Fonction de sauvegarde
    void (*realiserAnnulation)(void);           ///< Fonction d'annulation
    int (*realiserActivation)(int x,int y);     ///< Fonction de selection.
    
  public :

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

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

///
/// Dessin du AdhocControle.
///
/// @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 AdhocControle.
///
/// @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 AdhocControle.
///
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
    virtual void annule(void);

///
/// Selection du AdhocControle 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);

///
/// Affectation de la fonction de dessin.
///
/// @param fonction La fonction de dessin affectee.
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
    void setRealiserDessin(void(*fonction) (void));

///
/// Affectation de la fonction de sauvegarde.
///
/// @param fonction La fonction de sauvegarde affectee.
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
    void setRealiserSauvegarde(void(*fonction) (void));

///
/// Affectation de la fonction d'annulation.
///
/// @param fonction La fonction de d'annulation affectee.
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
    void setRealiserAnnulation(void(*fonction) (void));

///
/// Affectation de la fonction de selection.
///
/// @param fonction La fonction de selection affectee.
/// @author Nicolas Janey
/// @author nicolas.janey@univ-fcomte.fr
/// @version 1.0, 25/02/10
///
    void setRealiserActivation(int(*fonction) (int x,int y));
 };

#endif
