00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 
00021 
00022 
00023 
00024 
00025 
00026 
00027 #ifndef OSDL_MOUSE_HANDLER_H_
00028 #define OSDL_MOUSE_HANDLER_H_
00029 
00030 
00031 
00032 #include "OSDLInputDeviceHandler.h"   
00033 #include "OSDLMouseCommon.h"          
00034 
00035 
00036 #include <string>
00037 #include <list>
00038 
00039 
00040 
00041 
00042 namespace OSDL
00043 {
00044 
00045 
00046 
00047     namespace MVC
00048     {
00049 
00050         
00051 
00052 
00053 
00054 
00055         class Controller ;
00056     
00057     }
00058 
00059         
00060         
00061     namespace Events
00062     {
00063     
00064     
00065     
00066         
00067         class Mouse ;
00068         
00069         
00070         
00083         class OSDL_DLL MouseHandler: public InputDeviceHandler
00084         {
00085         
00086 
00087             
00088 
00089 
00090 
00091 
00092             friend class OSDL::Events::EventsModule ;
00093 
00094             
00095             public:
00096 
00097 
00098 
00099 
00114                 explicit MouseHandler( bool useClassicalMice = true ) ;
00115                 
00116                 
00117                 
00122                 virtual ~MouseHandler() throw() ;
00123 
00124 
00125 
00132                 bool hasDefaultMouse() const ;
00133                  
00134 
00135 
00142                 Mouse & getDefaultMouse() ;
00143 
00144 
00145 
00160                 virtual void linkToController( 
00161                     OSDL::MVC::Controller & controller ) ;
00162                  
00163                  
00164     
00182                 virtual void linkToController( MouseNumber index,
00183                     OSDL::MVC::Controller & controller ) ;
00184                  
00185             
00186             
00198                 virtual const std::string toString( 
00199                     Ceylan::VerbosityLevels level = Ceylan::high ) const ;
00200                 
00201                 
00202                 
00203                 
00204                 
00205                 
00206                  
00207                  
00215                 static MouseNumber GetAvailableMiceCount() ;
00216                 
00217                 
00218                 
00219                 
00220         protected:
00221                         
00222                     
00223                     
00224                 
00225 
00226 
00227 
00228 
00229             
00230             
00231                     
00241                 virtual void focusGained( 
00242                     const FocusEvent & mouseFocusEvent ) const ;
00243                 
00244                 
00245                 
00255                 virtual void focusLost( 
00256                     const FocusEvent & mouseFocusEvent ) const ;
00257                  
00258                         
00259                             
00267                 virtual void mouseMoved( 
00268                     const MouseMotionEvent & mouseMovedEvent ) const ;
00269                 
00270                 
00271                             
00279                 virtual void buttonPressed( 
00280                     const MouseButtonEvent & mouseButtonPressedEvent ) const ;
00281                         
00282                             
00283                             
00291                 virtual void buttonReleased( 
00292                     const MouseButtonEvent & mouseButtonReleasedEvent ) const ;
00293 
00294 
00295 
00301                 virtual void blank() ;
00302 
00303 
00304                 
00314                 virtual void checkMouseAt( MouseNumber index ) const ;
00315                 
00316                 
00317                 
00318 
00323                 MouseNumber _miceCount ;
00324                 
00325                 
00326                  
00336                 Mouse ** _mice ;
00337 
00338 
00339 
00345                 bool _useClassicalMice ;
00346 
00347 
00348 
00349 
00350             private:
00351         
00352         
00353         
00362                 explicit MouseHandler( const MouseHandler & source ) ;
00363             
00364             
00365             
00374                 MouseHandler & operator = ( const MouseHandler & source ) ;
00375                                         
00376                 
00377         } ;
00378     
00379     
00380     }   
00381     
00382 }
00383 
00384 
00385 
00386 #endif // OSDL_MOUSE_HANDLER_H_
00387