text: // @(#)root/gui:$Id: TGEventHandler.h
  // Author: Bertrand Bellenot   29/01/2008
  
  /*************************************************************************
   * Copyright (C) 1995-2008, Rene Brun and Fons Rademakers.               *
   * All rights reserved.                                                  *
   *                                                                       *
   * For the licensing terms see $ROOTSYS/LICENSE.                         *
   * For the list of contributors see $ROOTSYS/README/CREDITS.             *
   *************************************************************************/
  
  #ifndef ROOT_TGEventHandler
  #define ROOT_TGEventHandler
  
  //////////////////////////////////////////////////////////////////////////
  //                                                                      //
  // TGEventHandler                                                       //
  //                                                                      //
  //////////////////////////////////////////////////////////////////////////
  
  #include "TNamed.h"
  #include "TQObject.h"
  #include "GuiTypes.h"
  
  class TGWindow;
  
  class TGEventHandler : public TNamed, public TQObject {
  
  private:
  
     TGEventHandler(const TGEventHandler&); // Not implemented
     TGEventHandler& operator=(const TGEventHandler&); // Not implemented
  
     Bool_t   fIsActive;    // kTRUE if handler is active, kFALSE if not active
     TGWindow *fWindow;
     TObject  *fObject;
  
     void  *GetSender() { return this; }  //used to set gTQSender
  
  public:
     TGEventHandler(const char *name, TGWindow *w, TObject *obj, const char *title="") :
        TNamed(name, title), fIsActive(kTRUE), fWindow(w), fObject(obj) { };
     virtual ~TGEventHandler() { }
  
     void           Activate() { fIsActive = kTRUE; }
     void           DeActivate() { fIsActive = kFALSE; }
     Bool_t         IsActive() const { return fIsActive; }
     virtual Bool_t HandleEvent(Event_t *ev);
     virtual Bool_t HandleConfigureNotify(Event_t *) { return kFALSE; }
     virtual Bool_t HandleButton(Event_t *) { return kFALSE; }
     virtual Bool_t HandleDoubleClick(Event_t *) { return kFALSE; }
     virtual Bool_t HandleCrossing(Event_t *) { return kFALSE; }
     virtual Bool_t HandleMotion(Event_t *) { return kFALSE; }
     virtual Bool_t HandleKey(Event_t *) { return kFALSE; }
     virtual Bool_t HandleFocusChange(Event_t *) { return kFALSE; }
     virtual Bool_t HandleSelection(Event_t *) { return kFALSE; }
     virtual Bool_t HandleSelectionRequest(Event_t *) { return kFALSE; }
     virtual Bool_t HandleSelectionClear(Event_t *) { return kFALSE; }
     virtual Bool_t HandleColormapChange(Event_t *) { return kFALSE; }
     virtual void   ProcessedEvent(Event_t *event)
                       { Emit("ProcessedEvent(Event_t*)", (Long_t)event); } //*SIGNAL*
  
     virtual void   SendMessage(const TGWindow *w, Long_t msg, Long_t parm1, Long_t parm2);
     virtual Bool_t ProcessMessage(Long_t, Long_t, Long_t) { return kFALSE; }
     virtual void   Repaint() { }
  
     ClassDef(TGEventHandler,0)  // Abstract event handler
  };
  
  #endif
  
  