00001 #ifndef __CControl__ 00002 #define __CControl__ 00003 00004 #include "IControl.hpp" 00005 #include <Testing/CTrace.hpp> 00006 00007 // =========================================================================== 00008 00009 using Exponent::GUI::Controls::IControl; 00010 using Exponent::Testing::CTrace; 00011 00012 // =========================================================================== 00013 00014 namespace Exponent 00015 { 00016 namespace GUI 00017 { 00018 namespace Controls 00019 { 00039 class CControl : public IControl 00040 { 00042 EXPONENT_CLASS_DECLARATION; 00045 // =========================================================================== 00046 00047 public: 00048 00049 // =========================================================================== 00050 00051 const static long CCONTROL_NO_ID_REQUIRED = -1; 00053 // =========================================================================== 00054 00062 CControl(IControlRoot *root, const long uniqueId, const CRect &area, IActionListener *listener = NULL); 00063 00067 virtual ~CControl(); 00068 00069 // =========================================================================== 00070 00075 virtual void setControlRoot(IControlRoot *controlRoot); 00076 00081 virtual IControlRoot *getRootControl() const { return m_rootControl; } 00082 00087 virtual void setParentControl(IControl *parent) { m_parentControl = parent; } 00088 00093 virtual IControl *getParentControl() const { return m_parentControl; } 00094 00095 // =========================================================================== 00096 00101 virtual void registerActionListener(IActionListener *listener) { m_actionListener = listener; } 00102 00103 // =========================================================================== 00104 00109 virtual void controlIsMouseEnabled(const bool mouseEnabled = true) { m_mouseEnabled = mouseEnabled; } 00110 00115 virtual void controlIsDropFileEnabled(const bool dropEnabled = true) { m_dropEnabled = dropEnabled; } 00116 00121 virtual void controlIsKeyEnabled(const bool keyEnabled = true) { m_keyboardEnabled = keyEnabled; } 00122 00127 virtual void controlIsEnabledFor(const CString &identifier) { } 00128 00129 // =========================================================================== 00130 00135 virtual bool isMouseEnabled() const { return m_mouseEnabled; } 00136 00141 virtual bool isDropFileEnabled() const { return m_dropEnabled; } 00142 00147 virtual bool isKeyEnabled() const { return m_keyboardEnabled; } 00148 00154 virtual bool isEnabledFor(const CString &identifier) { return false; } 00155 00160 virtual bool needsRightClick() const { return m_needsRightClick; } 00161 00162 // =========================================================================== 00163 00170 virtual bool serializeToNode(CXMLNode &node); 00171 00178 virtual bool serializeFromNode(CXMLNode &node); 00179 00180 // =========================================================================== 00181 00186 virtual long getUniqueId() const { return m_uniqueId; } 00187 00192 virtual void setUniqueId(const long id) { m_uniqueId = id; } 00193 00198 virtual double getValue() const { return m_value; } 00199 00204 virtual void setValue(const double value) { m_value = value; } 00205 00206 // =========================================================================== 00207 00212 virtual void setArea(const CRect &area); 00213 00218 virtual const CRect &getArea() const { return m_area; } 00219 00224 virtual const CRect &getAbsoluteRect() const { return m_absoluteArea; } 00225 00230 virtual const CDimension &getDimension() const { return m_dimension; } 00231 00236 virtual const CRect &getNormalisedArea() const { return m_normalisedArea; } 00237 00244 virtual bool isContainer() const { return false; } 00245 00246 // =========================================================================== 00247 00251 virtual void update(); 00252 00298 virtual void drawControl(CGraphics &graphics); 00299 00300 // =========================================================================== 00301 00305 virtual void enableControl() ; 00306 00310 virtual void disableControl(); 00311 00312 // =========================================================================== 00313 00318 virtual void setPrimaryImage(IImage *theImage); 00319 00324 virtual void setDisabledImage(IImage *theImage); 00325 00326 // =========================================================================== 00327 00332 virtual void handleFileDrop(const CDropEvent &event) { } 00333 00334 // =========================================================================== 00335 00340 virtual bool handleKeyDown(const CKeyboardEvent &event) { return false; } 00341 00346 virtual bool handleKeyUp(const CKeyboardEvent &event) { return false; } 00347 00348 // =========================================================================== 00349 00354 virtual void handleLeftButtonDown(CMouseEvent &event) { } 00355 00360 virtual void handleLeftButtonUp(CMouseEvent &event) { } 00361 00366 virtual void handleRightButtonDown(CMouseEvent &event) { } 00367 00372 virtual void handleRightButtonUp(CMouseEvent &event) { } 00373 00378 virtual void handleDoubleClick(CMouseEvent &event) { } 00379 00384 virtual void handleMouseScroll(CMouseEvent &event) { } 00385 00390 virtual void handleMouseMovement(CMouseEvent &event) { } 00391 00396 virtual void handleMouseLeavingArea(CMouseEvent &event) { } 00397 00398 // =========================================================================== 00399 00405 virtual void setDefaultControlColours(const CAlphaColour &backgroundColour = CAlphaColour::CALPHACOLOUR_WHITE, const CAlphaColour &frameColour = CAlphaColour::CALPHACOLOUR_BLACK); 00406 00411 virtual void doDefaultDrawing(const bool doDefaultDraw) { m_doDefaultDrawing = doDefaultDraw; } 00412 00413 // =========================================================================== 00414 00418 virtual void referenced(); 00419 00423 virtual void dereference(); 00424 00429 virtual long getReferenceCount() const { return m_referenceCount; } 00430 00436 virtual void getObjectDescription(char *string, const long size) const; 00437 00438 // =========================================================================== 00439 00440 protected: 00441 00442 // =========================================================================== 00443 00449 virtual bool drawEnabledControl(CGraphics &graphics); 00450 00456 virtual bool drawPrimaryImage(CGraphics &graphics); 00457 00464 virtual void drawPrimaryImage(CGraphics &graphics, const bool drawFrameIfNoImage); 00465 00466 // =========================================================================== 00467 00468 00469 long m_referenceCount; 00470 IActionListener *m_actionListener; 00471 IControlRoot *m_rootControl; 00472 IControl *m_parentControl; 00474 bool m_mouseEnabled; 00475 bool m_keyboardEnabled; 00476 bool m_dropEnabled; 00477 bool m_needsRightClick; 00478 bool m_enabled; 00479 bool m_doDefaultDrawing; 00481 long m_uniqueId; 00482 double m_value; 00484 CRect m_area; 00485 CDimension m_dimension; 00486 CRect m_absoluteArea; 00487 CRect m_normalisedArea; 00489 IImage *m_primaryImage; 00490 IImage *m_disabledImage; 00492 CAlphaColour m_frameColour; 00493 CAlphaColour m_backgroundColour; 00494 }; 00495 } 00496 } 00497 } 00498 #endif // End of CControl.hpp