home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / yacl-012.zip / ui / combobox.h < prev    next >
C/C++ Source or Header  |  1995-04-08  |  4KB  |  146 lines

  1.  
  2.  
  3.  
  4. #ifndef _combobox_h_ /* Wed Feb 22 22:18:00 1995 */
  5. #define _combobox_h_
  6.  
  7.  
  8.  
  9. /*
  10.  *
  11.  *          Copyright (C) 1994, M. A. Sridhar
  12.  *  
  13.  *
  14.  *     This software is Copyright M. A. Sridhar, 1994. You are free
  15.  *     to copy, modify or distribute this software  as you see fit,
  16.  *     and to use  it  for  any  purpose, provided   this copyright
  17.  *     notice and the following   disclaimer are included  with all
  18.  *     copies.
  19.  *
  20.  *                        DISCLAIMER
  21.  *
  22.  *     The author makes no warranties, either expressed or implied,
  23.  *     with respect  to  this  software, its  quality, performance,
  24.  *     merchantability, or fitness for any particular purpose. This
  25.  *     software is distributed  AS IS.  The  user of this  software
  26.  *     assumes all risks  as to its quality  and performance. In no
  27.  *     event shall the author be liable for any direct, indirect or
  28.  *     consequential damages, even if the  author has been  advised
  29.  *     as to the possibility of such damages.
  30.  *
  31.  */
  32.  
  33.  
  34.  
  35. #if defined(__GNUC__)
  36. #pragma interface
  37. #endif
  38.  
  39. #include "ui/strview.h"
  40.  
  41. #if defined(__X_MOTIF__)
  42. #error No combo boxes under Motif (yet)!
  43. #endif
  44.  
  45. // This is a ComboBox, a combination StringEditor and StringView in which
  46. // the StringView part functions as a drop-down list. A ComboBox is said to
  47. // be {\it editable\/} if the user can type in a string in the StringEditor
  48. // that is different from any of the strings in the drop-down list. If it is
  49. // not editable, the ComboBox displays the current selection in a label.
  50. //
  51. // This class is {\it not yet\/} supported under Motif.
  52.  
  53.  
  54. class CL_EXPORT UI_ComboBox: public UI_StringViewSingleSel {
  55.  
  56. public:
  57.     UI_ComboBox (UI_VObjCollection* parent, const UI_Rectangle& shape,
  58.                  UI_ViewID id, bool editable = FALSE);
  59.  
  60.     CL_String& EditString ();
  61.     // Return the content of the edit string of the ComboBox. If this
  62.     // ComboBox is editable, then this string is the one typed by the user,
  63.     // and therefore is not necessarily a part of the model. If the
  64.     // application modifies this  String, the content of the edit box is
  65.     // correspondingly changed.
  66.  
  67.     void SetLengthLimit (short n);
  68.     // Limit user type-in to the edit string to $n$ characters.
  69.     
  70.     virtual void  ShowDropDown ();
  71.     // Show the drop-down list, if not currently shown.
  72.     
  73.     virtual void  HideDropDown ();
  74.     // Hide the drop-down list, if not currently hidden.
  75.  
  76.     bool IsDropDownShowing() const;
  77.     // Is the drop-down list currently showing?
  78.     
  79.     virtual long  TopIndex () const;
  80.     // Return the index of the topmost visible string in the view.
  81.  
  82.     virtual short VisibleCount () const;
  83.     // Return the number of visible strings. [Not yet implemented under
  84.     // OS/2.]
  85.     
  86.     virtual void  ScrollTo (long index);
  87.     // Scroll the view so that the String at the given index is at the top.
  88.     
  89.     
  90.     // ---------------- Overridden SimpleVObject methods -------------
  91.  
  92.     virtual UI_WindowClass WindowClass () const;
  93.  
  94.     // ---------------- Overridden basic methods ---------------------
  95.     
  96.     const char* ClassName () const { return "UI_ComboBox";};
  97.  
  98.  
  99.     
  100. protected:
  101.  
  102.     virtual void _UpdateSelection ();
  103.     // Called by {\tt ItemInserted} and {\tt ItemRemoved} to tell us
  104.     // to update our selection.
  105.  
  106.  
  107.     virtual void ItemInserted (long pos);
  108.     //  [YACL internal use only] Called by the model to notify this view
  109.     //  that the model just added a new item immediately  after the given
  110.     //  position.
  111.  
  112.     virtual void ItemRemoved (long);
  113.     // [YACL internal use only]
  114.  
  115.     virtual void ItemChanged (long);
  116.     // [YACL internal use only]
  117.  
  118.     virtual void ModelEmptied ();
  119.     // [YACL internal use only]
  120.     
  121.     virtual bool _SelectionChanged (CL_Object&, long);
  122.     // [YACL internal use only] Called by the selection when it is modified
  123.     // by the application.
  124.     
  125. #if defined(__MS_WINDOWS__)
  126.     UI_ComboBox (UI_CompositeVObject* parent, UI_ViewID id,
  127.                  UI_ViewHandle h);
  128.     // [MS-Windows-specific] Resource-based construction.
  129.  
  130. #endif
  131.  
  132.     void  _PrivateInitialize ();
  133.  
  134.     bool Select ();
  135.  
  136.     virtual bool _EditStringChanged (CL_Object&, long);
  137.     
  138. protected:
  139.     bool        _editable;
  140.     CL_Integer  _selection;
  141.     CL_String   _editString;
  142.     short       _limit;
  143. };
  144.  
  145. #endif /* _combobox_h_ */
  146.