1 /************************************************************************* 2 * 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. 4 * 5 * Copyright 2000, 2010 Oracle and/or its affiliates. 6 * 7 * OpenOffice.org - a multi-platform office productivity suite 8 * 9 * This file is part of OpenOffice.org. 10 * 11 * OpenOffice.org is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Lesser General Public License version 3 13 * only, as published by the Free Software Foundation. 14 * 15 * OpenOffice.org is distributed in the hope that it will be useful, 16 * but WITHOUT ANY WARRANTY; without even the implied warranty of 17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 18 * GNU Lesser General Public License version 3 for more details 19 * (a copy is included in the LICENSE file that accompanied this code). 20 * 21 * You should have received a copy of the GNU Lesser General Public License 22 * version 3 along with OpenOffice.org. If not, see 23 * <http://www.openoffice.org/license.html> 24 * for a copy of the LGPLv3 License. 25 * 26 ************************************************************************/ 27 28 #ifndef _SDR_EVENT_EVENTHANDLER_HXX 29 #define _SDR_EVENT_EVENTHANDLER_HXX 30 31 #include <sal/types.h> 32 33 #include <vector> 34 #include <vcl/timer.hxx> 35 36 ////////////////////////////////////////////////////////////////////////////// 37 // predeclarations 38 39 namespace sdr 40 { 41 namespace event 42 { 43 class BaseEvent; 44 class EventHandler; 45 46 // typedefs for a list of BaseEvents 47 typedef ::std::vector< BaseEvent* > BaseEventVector; 48 } // end of namespace event 49 } // end of namespace sdr 50 51 ////////////////////////////////////////////////////////////////////////////// 52 53 namespace sdr 54 { 55 namespace event 56 { 57 class BaseEvent 58 { 59 // the EventHandler this event is registered at 60 EventHandler& mrEventHandler; 61 62 public: 63 // basic constructor. 64 BaseEvent(EventHandler& rEventHandler); 65 66 // destructor 67 virtual ~BaseEvent(); 68 69 // the called method if the event is triggered 70 virtual void ExecuteEvent() = 0; 71 }; 72 } // end of namespace event 73 } // end of namespace sdr 74 75 ////////////////////////////////////////////////////////////////////////////// 76 77 namespace sdr 78 { 79 namespace event 80 { 81 class EventHandler 82 { 83 BaseEventVector maVector; 84 85 // to allow BaseEvents to use the add/remove functionality 86 friend class BaseEvent; 87 88 // methods to add/remove events. These are private since 89 // they are used from BaseEvent only. 90 void AddEvent(BaseEvent& rBaseEvent); 91 void RemoveEvent(BaseEvent& rBaseEvent); 92 93 // access to a event, 0L when no more events 94 BaseEvent* GetEvent(); 95 96 public: 97 // basic constructor. 98 EventHandler(); 99 100 // destructor 101 virtual ~EventHandler(); 102 103 // Trigger and consume the events 104 virtual void ExecuteEvents(); 105 106 // for control 107 sal_Bool IsEmpty() const; 108 }; 109 } // end of namespace event 110 } // end of namespace sdr 111 112 ////////////////////////////////////////////////////////////////////////////// 113 114 namespace sdr 115 { 116 namespace event 117 { 118 class TimerEventHandler : public EventHandler, public Timer 119 { 120 public: 121 // basic constructor. 122 TimerEventHandler(sal_uInt32 nTimeout = 1L); 123 124 // destructor 125 virtual ~TimerEventHandler(); 126 127 // The timer when it is triggered; from class Timer 128 virtual void Timeout(); 129 130 // reset the timer 131 void Restart(); 132 }; 133 } // end of namespace event 134 } // end of namespace sdr 135 136 ////////////////////////////////////////////////////////////////////////////// 137 138 #endif //_SDR_EVENT_EVENTHANDLER_HXX 139 140 // eof 141