home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 Mobile / Chip_Mobile_2001.iso / palm / business / printcar / printcar.exe / src / UI / Form.h < prev    next >
C/C++ Source or Header  |  2000-06-09  |  3KB  |  108 lines

  1. //
  2. //  $Id: Form.h,v 1.4 2000/06/08 21:14:55 sergey Exp $
  3. //
  4.  
  5. #ifndef _Form_h_
  6. #define _Form_h_
  7.  
  8.  
  9. namespace UI
  10. {
  11.     //==============================================================================
  12.     //  Form class
  13.     //==============================================================================
  14.  
  15.     class Form
  16.     {
  17.     public:
  18.         Form(Word formID);
  19.         virtual ~Form();
  20.  
  21.     private:
  22.         Form(const Form&);
  23.         Form& operator =(const Form&);
  24.  
  25.     // operations
  26.     public:
  27.         // Creates a form in memory.
  28.         // Form could be activated later either by FrmGoToForm or by FrmPopupForm.
  29.         virtual void create();
  30.  
  31.         virtual void destroy();
  32.  
  33.         void display();
  34.         void activate()         { FrmSetActiveForm(formPtr()); }
  35.  
  36.         void showObject(Word objectID);
  37.         void hideObject(Word objectID);
  38.  
  39.     // attributes
  40.  
  41.         Word formID() const     { return _formID; }
  42.         FormPtr formPtr() const { return _formPtr; }
  43.  
  44.         void* getGenericObjectPtr(FormObjectKind objectKind, Word objectID) const;
  45.  
  46.         // Returns the correct object pointer correct type by objectKind and objectId.
  47.         template <typename T>
  48.         T getObjectPtr(FormObjectKind objectKind, Word objectID) const
  49.         {
  50.             return reinterpret_cast<T>(getGenericObjectPtr(objectKind, objectID));
  51.         }
  52.  
  53.     // event handling
  54.  
  55.         // This routine will be called by the FormEventHandler thunk object.
  56.         virtual bool eventHandler(EventType* event);
  57.  
  58.     // handlers to override
  59.     protected:
  60.         virtual bool handleLoadFormEvent(Word formID);
  61.         virtual bool handleOpenFormEvent(Word formID);
  62.         virtual bool handleUpdateFormEvent(Word formID);
  63.         virtual bool handleCtlSelectEvent(Word controlID, bool on);
  64.         virtual bool handleMenuEvent(Word menuID);
  65.         virtual bool handleKeyDownEvent(char asciiChar, Word keyCode, Word modifiers);
  66.         virtual bool handleNilEvent();
  67.  
  68.     // data items
  69.     private:
  70.         Word _formID;
  71.         FormPtr _formPtr;
  72.     };
  73.  
  74.  
  75.     //==============================================================================
  76.     //  FormEventHandler template class
  77.     //==============================================================================
  78.  
  79.     //
  80.     // This is utility class aimed to simulate the kind of object-oriented
  81.     // callback routine for the Form.
  82.     //
  83.     template <class T>
  84.     class FormEventHandler
  85.     {
  86.     public:
  87.         void init(T* form)
  88.         {
  89.             _form = form;
  90.             FrmSetEventHandler(_form->formPtr(), eventHandlerCallback);
  91.         }
  92.  
  93.     private:
  94.         static Boolean eventHandlerCallback(EventType* event)
  95.         {
  96.             return _form->eventHandler(event);
  97.         }
  98.  
  99.         static T* _form;
  100.     };
  101.  
  102.     template <class T>
  103.     T* FormEventHandler<T>::_form;
  104. }
  105. // namespace UI
  106.  
  107. #endif // _Form_h_
  108.