- Main Page
- Namespaces
- Classes
- Files
- Directories
- Related Pages

- File List
- File Members

# CControl.hpp

Go to the documentation of this file.

    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