1 /*      _______   __   __   __   ______   __   __   _______   __   __
2  *     / _____/\ / /\ / /\ / /\ / ____/\ / /\ / /\ / ___  /\ /  |\/ /\
3  *    / /\____\// / // / // / // /\___\// /_// / // /\_/ / // , |/ / /
4  *   / / /__   / / // / // / // / /    / ___  / // ___  / // /| ' / /
5  *  / /_// /\ / /_// / // / // /_/_   / / // / // /\_/ / // / |  / /
6  * /______/ //______/ //_/ //_____/\ /_/ //_/ //_/ //_/ //_/ /|_/ /
7  * \______\/ \______\/ \_\/ \_____\/ \_\/ \_\/ \_\/ \_\/ \_\/ \_\/
8  *
9  * Copyright (c) 2004 - 2008 Olof Naess�n and Per Larsson
10  *
11  *
12  * Per Larsson a.k.a finalman
13  * Olof Naess�n a.k.a jansem/yakslem
14  *
15  * Visit: http://guichan.sourceforge.net
16  *
17  * License: (BSD)
18  * Redistribution and use in source and binary forms, with or without
19  * modification, are permitted provided that the following conditions
20  * are met:
21  * 1. Redistributions of source code must retain the above copyright
22  *    notice, this list of conditions and the following disclaimer.
23  * 2. Redistributions in binary form must reproduce the above copyright
24  *    notice, this list of conditions and the following disclaimer in
25  *    the documentation and/or other materials provided with the
26  *    distribution.
27  * 3. Neither the name of Guichan nor the names of its contributors may
28  *    be used to endorse or promote products derived from this software
29  *    without specific prior written permission.
30  *
31  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
32  * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
33  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
34  * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
35  * OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
36  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
37  * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
38  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
39  * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
40  * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
41  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
42  */
43 
44 #ifndef GCN_WIDGETLISTENER_HPP
45 #define GCN_WIDGETLISTENER_HPP
46 
47 #include <string>
48 
49 #include "guichan/event.hpp"
50 #include "guichan/platform.hpp"
51 
52 namespace gcn
53 {
54     /**
55      * Interface for listening for events from widgets. When a widget's size,
56      * location or visibility changes, the relevant method of the listener is
57      * invoked.
58      *
59      * @see Widget::addWidgetListener, Widget::removeWidgetListener
60      * @author Olof Naess�n
61      * @since 0.8.0
62      */
63     class GCN_CORE_DECLSPEC WidgetListener
64     {
65     public:
66 
67         /**
68          * Destructor.
69          */
~WidgetListener()70         virtual ~WidgetListener() { }
71 
72         /**
73          * Invoked when a widget changes its size.
74          *
75          * @param event Describes the event.
76          * @since 0.8.0
77          */
widgetResized(const Event & event)78         virtual void widgetResized(const Event& event) { }
79 
80         /**
81          * Invoked when a widget is moved.
82          *
83          * @param event Describes the event.
84          * @since 0.8.0
85          */
widgetMoved(const Event & event)86         virtual void widgetMoved(const Event& event) { }
87 
88         /**
89          * Invoked when a widget is hidden, i.e it's set to be
90          * not visible.
91          *
92          * @param event Describes the event.
93          * @since 0.8.0
94          */
widgetHidden(const Event & event)95         virtual void widgetHidden(const Event& event) { }
96 
97         /**
98          * Invoked when a widget is shown, i.e it's set to be
99          * visible.
100          *
101          * @param event Describes the event.
102          * @since 0.8.0
103          */
widgetShown(const Event & event)104         virtual void widgetShown(const Event& event) { }
105 
106         protected:
107         /**
108          * Constructor.
109          *
110          * You should not be able to make an instance of WidgetListener,
111          * therefore its constructor is protected.
112          */
WidgetListener()113         WidgetListener() { }
114 
115     };
116 }
117 
118 #endif // end GCN_WIDGETLISTENER_HPP
119