00001 #ifndef __IWindow__
00002 #define __IWindow__
00003
00004 #include <MathTools/CPoint.hpp>
00005 #include <MathTools/CRect.hpp>
00006 #include <MathTools/CDimension.hpp>
00007 #include <Basics/CString.hpp>
00008 #include "../Listeners/IFocusListener.hpp"
00009 #include "../Listeners/IWindowChangeListener.hpp"
00010 #include "../Listeners/IMouseListener.hpp"
00011 #include "../Listeners/IDropFileListener.hpp"
00012 #include "../Listeners/IKeyboardListener.hpp"
00013 #include "../Graphics/CGraphics.hpp"
00014 #include "../Basics/ITimedObject.hpp"
00015 #include "SWindowHandle.hpp"
00016 #include "CWindowAttributes.hpp"
00017
00018
00019
00020 using Exponent::MathTools::CPoint;
00021 using Exponent::MathTools::CRect;
00022 using Exponent::Basics::CString;
00023 using Exponent::GUI::Listeners::IDropFileListener;
00024 using Exponent::GUI::Listeners::IFocusListener;
00025 using Exponent::GUI::Listeners::IKeyboardListener;
00026 using Exponent::GUI::Listeners::IMouseListener;
00027 using Exponent::GUI::Listeners::IWindowChangeListener;
00028 using Exponent::GUI::Graphics::CGraphics;
00029 using Exponent::GUI::Basics::ITimedObject;
00030 using Exponent::GUI::Windowing::SWindowHandle;
00031 using Exponent::GUI::Windowing::CWindowAttributes;
00032
00033
00034
00038 #ifndef __ICONTROLROOT_GUARD__
00039 #define __ICONTROLROOT_GUARD__
00040 namespace Exponent { namespace GUI { namespace Controls { interface IControlRoot; } } }
00041 using Exponent::GUI::Controls::IControlRoot;
00042 #endif
00043
00047
00048
00049 namespace Exponent
00050 {
00051 namespace GUI
00052 {
00053 namespace Windowing
00054 {
00072 interface IWindow : public ICountedObject
00073 {
00074
00075
00076
00077 public:
00078
00079
00080
00084 IWindow() { }
00085
00089 virtual ~IWindow() { }
00090
00091
00092
00098 virtual void setParentWindow(IWindow *parent) = 0;
00099
00105 virtual IWindow *getParentWindow() const = 0;
00106
00107
00108
00114 virtual void registerChildWindow(IWindow *child) = 0;
00115
00120 virtual void unregisterAllChildWindows() = 0;
00121
00127 virtual void unregisterChldWindow(IWindow *child) = 0;
00128
00129
00130
00135 virtual const SWindowHandle *getWindowHandle() const = 0;
00136
00141 virtual SWindowHandle *getMutableWindowHandle() const = 0;
00142
00147 virtual CWindowAttributes *getWindowAttributes() const = 0;
00148
00149
00150
00156 virtual void initialiseWindow(CWindowAttributes *windowAttributes, const bool showWindow) = 0;
00157
00161 virtual void uninitialiseWindow() = 0;
00162
00163
00164
00168 virtual void openWindow() = 0;
00169
00173 virtual void closeWindow() = 0;
00174
00179 virtual void destroyWindow() = 0;
00180
00184 virtual void updateWindow() = 0;
00185
00189 virtual void disableWindow() = 0;
00190
00194 virtual void enableWindow() = 0;
00195
00196
00197
00202 virtual void draw(CGraphics &graphics) = 0;
00203
00208 virtual void redrawWindow(const CRect &area) = 0;
00209
00213 virtual void redrawWindow() = 0;
00214
00215
00216
00221 virtual void setWindowPosition(const CPoint &position) = 0;
00222
00227 virtual const CPoint &getWindowPosition() const = 0;
00228
00233 virtual void setWindowSize(const CDimension &dimension) = 0;
00234
00239 virtual const CDimension &getWindowSize() const = 0;
00240
00245 virtual void setWindowPositionAndSize(const CRect &positionAndSize) = 0;
00246
00253 virtual const CRect &getWindowPositionAndSize() const = 0;
00254
00259 virtual void setWindowAlpha(const double alpha) = 0;
00260
00261
00262
00267 virtual void handleTimerEvent(const long id) = 0;
00268
00274 virtual void startTimer(const long id, const long timeInMilliseconds) = 0;
00275
00280 virtual void stopTimer(const long id) = 0;
00281
00286 virtual void addTimedObject(ITimedObject *timedObject) = 0;
00287
00292 virtual void removeTimedObject(ITimedObject *timedObject) = 0;
00293
00297 virtual void clearTimedObjects() = 0;
00298
00299
00300
00305 virtual void registerFocusListener(IFocusListener *listener) = 0;
00306
00311 virtual void registerWindowChangeListener(IWindowChangeListener *listener) = 0;
00312
00317 virtual void registerMouseListener(IMouseListener *listener) = 0;
00318
00323 virtual void registerDropFileListener(IDropFileListener *listener) = 0;
00324
00329 virtual void registerKeyboardListener(IKeyboardListener *listener) = 0;
00330
00331
00332
00337 virtual bool isMouseEnabled() const = 0;
00338
00343 virtual bool isKeyboardEnabled() const = 0;
00344
00349 virtual bool isDropFileEnabled() const = 0;
00350
00351
00352
00357 virtual CMouse *getMouse() = 0;
00358
00363 virtual IControlRoot *getControlRoot() const = 0;
00364
00365
00366
00367 };
00368 }
00369 }
00370 }
00371 #endif // End of IWindow.hpp