00001 #ifndef __CScrollPanel__ 00002 #define __CScrollPanel__ 00003 00004 #include "CControlPanel.hpp" 00005 #include "../Listeners/IScrollListener.hpp" 00006 00007 // =========================================================================== 00008 00009 using Exponent::GUI::Controls::CControlPanel; 00010 using Exponent::GUI::Listeners::IScrollListener; 00011 00012 // =========================================================================== 00013 00014 namespace Exponent 00015 { 00016 namespace GUI 00017 { 00018 namespace Controls 00019 { 00041 class CScrollPanel : public CControlPanel, public IScrollListener 00042 { 00044 EXPONENT_CLASS_DECLARATION; 00047 // =========================================================================== 00048 00049 public: 00050 00051 // =========================================================================== 00052 00060 CScrollPanel(IControlRoot *root, const long uniqueId, const CRect &area, const CRect &virtualArea); 00061 00065 virtual ~CScrollPanel(); 00066 00067 // =========================================================================== 00068 00073 virtual void drawControl(CGraphics &graphics); 00074 00079 virtual void updateControl(IControl *control); 00080 00085 virtual void updateArea(const CRect &area); 00086 00087 // =========================================================================== 00088 00093 virtual void handleScrollEvent(const CScrollEvent &event); 00094 00099 const CRect &getVirtualArea() const { return m_virtualArea; } 00100 00105 void setVirtualArea(const CRect &virtualArea); 00106 00107 // =========================================================================== 00108 00113 virtual void handleLeftButtonDown(CMouseEvent &event); 00114 00119 virtual void handleLeftButtonUp(CMouseEvent &event); 00120 00125 virtual void handleRightButtonDown(CMouseEvent &event); 00126 00131 virtual void handleRightButtonUp(CMouseEvent &event); 00132 00137 virtual void handleDoubleClick(CMouseEvent &event); 00138 00143 virtual void handleMouseScroll(CMouseEvent &event); 00144 00149 virtual void handleMouseMovement(CMouseEvent &event); 00150 00155 virtual void handleMouseLeavingArea(CMouseEvent &event); 00156 00157 // =========================================================================== 00158 00159 /* 00160 // Handle key down events 00161 virtual bool handleKeyDown(const CKeyboardEvent &event); 00162 00163 // Handle key up events 00164 virtual bool handleKeyUp(const CKeyboardEvent &event); 00165 00166 // =========================================================================== 00167 00168 // Handle a file drop 00169 virtual void handleFileDrop(const CDropEvent &event); 00170 00171 // =========================================================================== 00172 00173 00174 00175 // =========================================================================== 00176 00177 // Get window offset 00178 00179 // Update an area 00180 virtual void updateArea(const CRect &area); 00181 */ 00182 // =========================================================================== 00183 00188 virtual CPoint getWindowOffset(); 00189 00195 virtual void getWindowCoordinatesOfControl(IControl *control, CPoint &point); 00196 00200 void sortChildControls(); 00201 00202 // =========================================================================== 00203 00204 protected: 00205 00206 // =========================================================================== 00207 00208 CRect m_virtualArea; 00209 CPoint m_viewPointPosition; 00210 CPoint m_inverseViewPointPosition; 00211 }; 00212 } 00213 } 00214 } 00215 #endif // End of CScrollPanel.hpp