// @(#)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                                                       //
//                                                                      //
//////////////////////////////////////////////////////////////////////////

#ifndef ROOT_TNamed
#include "TNamed.h"
#endif
#ifndef ROOT_TQObject
#include "TQObject.h"
#endif
#ifndef ROOT_GuiTypes
#include "GuiTypes.h"
#endif

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

 TGEventHandler.h:1
 TGEventHandler.h:2
 TGEventHandler.h:3
 TGEventHandler.h:4
 TGEventHandler.h:5
 TGEventHandler.h:6
 TGEventHandler.h:7
 TGEventHandler.h:8
 TGEventHandler.h:9
 TGEventHandler.h:10
 TGEventHandler.h:11
 TGEventHandler.h:12
 TGEventHandler.h:13
 TGEventHandler.h:14
 TGEventHandler.h:15
 TGEventHandler.h:16
 TGEventHandler.h:17
 TGEventHandler.h:18
 TGEventHandler.h:19
 TGEventHandler.h:20
 TGEventHandler.h:21
 TGEventHandler.h:22
 TGEventHandler.h:23
 TGEventHandler.h:24
 TGEventHandler.h:25
 TGEventHandler.h:26
 TGEventHandler.h:27
 TGEventHandler.h:28
 TGEventHandler.h:29
 TGEventHandler.h:30
 TGEventHandler.h:31
 TGEventHandler.h:32
 TGEventHandler.h:33
 TGEventHandler.h:34
 TGEventHandler.h:35
 TGEventHandler.h:36
 TGEventHandler.h:37
 TGEventHandler.h:38
 TGEventHandler.h:39
 TGEventHandler.h:40
 TGEventHandler.h:41
 TGEventHandler.h:42
 TGEventHandler.h:43
 TGEventHandler.h:44
 TGEventHandler.h:45
 TGEventHandler.h:46
 TGEventHandler.h:47
 TGEventHandler.h:48
 TGEventHandler.h:49
 TGEventHandler.h:50
 TGEventHandler.h:51
 TGEventHandler.h:52
 TGEventHandler.h:53
 TGEventHandler.h:54
 TGEventHandler.h:55
 TGEventHandler.h:56
 TGEventHandler.h:57
 TGEventHandler.h:58
 TGEventHandler.h:59
 TGEventHandler.h:60
 TGEventHandler.h:61
 TGEventHandler.h:62
 TGEventHandler.h:63
 TGEventHandler.h:64
 TGEventHandler.h:65
 TGEventHandler.h:66
 TGEventHandler.h:67
 TGEventHandler.h:68
 TGEventHandler.h:69
 TGEventHandler.h:70
 TGEventHandler.h:71
 TGEventHandler.h:72
 TGEventHandler.h:73
 TGEventHandler.h:74
 TGEventHandler.h:75
 TGEventHandler.h:76
 TGEventHandler.h:77