components.hpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:9k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: components.hpp,v $
  4.  * PRODUCTION Revision 1000.3  2004/04/01 21:01:36  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [CORE_002] Dev-tree R1.27
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. #ifndef HTML___COMPONENTS__HPP
  10. #define HTML___COMPONENTS__HPP
  11. /*  $Id: components.hpp,v 1000.3 2004/04/01 21:01:36 gouriano Exp $
  12.  * ===========================================================================
  13.  *
  14.  *                            PUBLIC DOMAIN NOTICE
  15.  *               National Center for Biotechnology Information
  16.  *
  17.  *  This software/database is a "United States Government Work" under the
  18.  *  terms of the United States Copyright Act.  It was written as part of
  19.  *  the author's official duties as a United States Government employee and
  20.  *  thus cannot be copyrighted.  This software/database is freely available
  21.  *  to the public for use. The National Library of Medicine and the U.S.
  22.  *  Government have not placed any restriction on its use or reproduction.
  23.  *
  24.  *  Although all reasonable efforts have been taken to ensure the accuracy
  25.  *  and reliability of the software and data, the NLM and the U.S.
  26.  *  Government do not and cannot warrant the performance or results that
  27.  *  may be obtained by using this software or data. The NLM and the U.S.
  28.  *  Government disclaim all warranties, express or implied, including
  29.  *  warranties of performance, merchantability or fitness for any particular
  30.  *  purpose.
  31.  *
  32.  *  Please cite the author in any work or product based on this material.
  33.  *
  34.  * ===========================================================================
  35.  *
  36.  * Author:  Lewis Geer
  37.  *
  38.  */
  39. /// @file components.hpp
  40. /// The HTML page.
  41. ///
  42. /// Defines the individual html components used on a page.
  43. #include <html/html.hpp>
  44. /** @addtogroup HTMLcomp
  45.  *
  46.  * @{
  47.  */
  48. BEGIN_NCBI_SCOPE
  49. class NCBI_XHTML_EXPORT CSubmitDescription
  50. {
  51. public:
  52.     CSubmitDescription(void);
  53.     CSubmitDescription(const string& name);
  54.     CSubmitDescription(const string& name, const string& label);
  55.     CNCBINode* CreateComponent(void) const;
  56. public:
  57.     string m_Name;
  58.     string m_Label;
  59. };
  60. class NCBI_XHTML_EXPORT COptionDescription
  61. {
  62. public:
  63.     COptionDescription(void);
  64.     COptionDescription(const string& value);
  65.     COptionDescription(const string& value, const string& label);
  66.     CNCBINode* CreateComponent(const string& def) const;
  67. public:
  68.     string m_Value;
  69.     string m_Label;
  70. };
  71. class NCBI_XHTML_EXPORT CSelectDescription
  72. {
  73. public:
  74.     CSelectDescription(void);
  75.     CSelectDescription(const string& value);
  76.     void Add(const string& value);
  77.     void Add(const string& value, const string& label);
  78.     void Add(int value);
  79.     CNCBINode* CreateComponent(void) const;
  80. public:
  81.     string                   m_Name;
  82.     list<COptionDescription> m_List;
  83.     string                   m_Default;
  84.     string                   m_TextBefore;
  85.     string                   m_TextAfter;
  86. };
  87. class NCBI_XHTML_EXPORT CTextInputDescription
  88. {
  89. public:
  90.     CTextInputDescription(void);
  91.     CTextInputDescription(const string& value);
  92.     CNCBINode* CreateComponent(void) const;
  93. public:
  94.     string  m_Name;
  95.     string  m_Value;
  96.     int     m_Width;
  97. };
  98. class NCBI_XHTML_EXPORT CQueryBox: public CHTML_table
  99. {
  100.     // Parent class
  101.     typedef CHTML_form CParent;
  102. public:
  103.     // 'tors
  104.     CQueryBox(void);
  105.     // Flags
  106.     enum flags {
  107.         kNoLIST     = 0x1,
  108.         kNoCOMMENTS = 0x2
  109.     };
  110.     // Subpages
  111.     virtual void       CreateSubNodes(void);
  112.     virtual CNCBINode* CreateComments(void);
  113. public:
  114.     CSubmitDescription    m_Submit;
  115.     CSelectDescription    m_Database;
  116.     CTextInputDescription m_Term;
  117.     CSelectDescription    m_DispMax;
  118.     int                   m_Width;    // in pixels
  119.     string                m_BgColor;
  120. };
  121. // Make a button followed by a drop down.
  122. class NCBI_XHTML_EXPORT CButtonList: public CNCBINode
  123. {
  124.     // Parent class
  125.     typedef CHTML_form CParent;
  126. public:
  127.     CButtonList(void);
  128.     virtual void CreateSubNodes(void);
  129. public:
  130.     CSubmitDescription m_Button;
  131.     CSelectDescription m_List;
  132. };
  133. // Make a set of pagination links
  134. class NCBI_XHTML_EXPORT CPageList: public CHTML_table
  135. {
  136.     // Parent class
  137.     typedef CHTML_table CParent;
  138.     
  139. public:
  140.     CPageList(void);
  141.     virtual void CreateSubNodes(void);
  142. public:
  143.     map<int,string> m_Pages;     // number, href
  144.     string          m_Forward;   // forward url
  145.     string          m_Backward;  // backward url
  146.     int             m_Current;   // current page number
  147.     
  148. private:
  149.     void x_AddInactiveImageString
  150.     (CNCBINode* node, const string& name, int number,
  151.      const string& imageStart, const string& imageEnd);
  152.     void x_AddImageString
  153.     (CNCBINode* node, const string& name, int number,
  154.      const string& imageStart, const string& imageEnd);
  155. };
  156. class NCBI_XHTML_EXPORT CPagerBox: public CNCBINode
  157. {
  158.     // Parent class
  159.     typedef CHTML_form CParent;
  160. public:
  161.     CPagerBox(void);
  162.     virtual void CreateSubNodes(void);
  163. public:
  164.     int           m_Width;       // in pixels
  165.     CButtonList*  m_TopButton;   // display button
  166.     CButtonList*  m_LeftButton;  // save button
  167.     CButtonList*  m_RightButton; // order button
  168.     CPageList*    m_PageList;    // the pager
  169.     int           m_NumResults;  // the number of results to display
  170.     string        m_BgColor;
  171. };
  172. class NCBI_XHTML_EXPORT CSmallPagerBox: public CNCBINode
  173. {
  174.     // parent class
  175.     typedef CHTML_form CParent;
  176. public:
  177.     CSmallPagerBox(void);
  178.     virtual void CreateSubNodes(void);
  179. public:
  180.     int        m_Width;      // in pixels
  181.     CPageList* m_PageList;   // the pager
  182.     int        m_NumResults; // the number of results to display
  183.     string     m_BgColor;
  184. };
  185. #include <html/components.inl>
  186. END_NCBI_SCOPE
  187. /* @} */
  188. /*
  189.  * ===========================================================================
  190.  * $Log: components.hpp,v $
  191.  * Revision 1000.3  2004/04/01 21:01:36  gouriano
  192.  * PRODUCTION: UPGRADED [CORE_002] Dev-tree R1.27
  193.  *
  194.  * Revision 1.27  2004/01/30 14:01:32  lavr
  195.  * Few cosmetic rearrangements
  196.  *
  197.  * Revision 1.26  2004/01/27 15:38:54  ivanov
  198.  * Get rid of Sun Workshop compilation warning.
  199.  *
  200.  * Revision 1.25  2003/11/05 18:41:06  dicuccio
  201.  * Added export specifiers
  202.  *
  203.  * Revision 1.24  2003/11/03 17:02:53  ivanov
  204.  * Some formal code rearrangement. Move log to end.
  205.  *
  206.  * Revision 1.23  2003/11/03 14:42:16  ivanov
  207.  * Moved log to end
  208.  *
  209.  * Revision 1.22  2003/04/25 13:45:23  siyan
  210.  * Added doxygen groupings
  211.  *
  212.  * Revision 1.21  1999/10/28 13:40:29  vasilche
  213.  * Added reference counters to CNCBINode.
  214.  *
  215.  * Revision 1.20  1999/04/15 22:03:44  vakatov
  216.  * CQueryBox:: use "enum { kNo..., };" rather than "static const int kNo...;"
  217.  *
  218.  * Revision 1.19  1999/01/28 21:58:04  vasilche
  219.  * QueryBox now inherits from CHTML_table (not CHTML_form as before).
  220.  * Use 'new CHTML_form("url", queryBox)' as replacement of old QueryBox.
  221.  *
  222.  * Revision 1.18  1999/01/21 21:12:53  vasilche
  223.  * Added/used descriptions for HTML submit/select/text.
  224.  * Fixed some bugs in paging.
  225.  *
  226.  * Revision 1.17  1999/01/20 18:12:42  vasilche
  227.  * Added possibility to change label of buttons.
  228.  *
  229.  * Revision 1.16  1999/01/19 21:17:37  vasilche
  230.  * Added CPager class
  231.  *
  232.  * Revision 1.15  1999/01/15 20:22:32  volodya
  233.  * syntax fix
  234.  *
  235.  * Revision 1.14  1999/01/14 21:25:16  vasilche
  236.  * Changed CPageList to work via form image input elements.
  237.  *
  238.  * Revision 1.13  1999/01/07 17:06:32  vasilche
  239.  * Added default query text in CQueryBox.
  240.  * Added query text width in CQueryBox.
  241.  *
  242.  * Revision 1.12  1999/01/07 16:41:52  vasilche
  243.  * CHTMLHelper moved to separate file.
  244.  * TagNames of CHTML classes ara available via s_GetTagName() static
  245.  * method.
  246.  * Input tag types ara available via s_GetInputType() static method.
  247.  * Initial selected database added to CQueryBox.
  248.  * Background colors added to CPagerBax & CSmallPagerBox.
  249.  *
  250.  * Revision 1.11  1999/01/05 21:47:09  vasilche
  251.  * Added 'current page' to CPageList.
  252.  * CPageList doesn't display forward/backward if empty.
  253.  *
  254.  * Revision 1.10  1998/12/28 23:29:02  vakatov
  255.  * New CVS and development tree structure for the NCBI C++ projects
  256.  *
  257.  * Revision 1.9  1998/12/28 16:48:04  vasilche
  258.  * Removed creation of QueryBox in CHTMLPage::CreateView()
  259.  * CQueryBox extends from CHTML_form
  260.  * CButtonList, CPageList, CPagerBox, CSmallPagerBox extend from CNCBINode.
  261.  *
  262.  * Revision 1.8  1998/12/23 21:20:56  vasilche
  263.  * Added more HTML tags (almost all).
  264.  * Importent ones: all lists (OL, UL, DIR, MENU), fonts (FONT, BASEFONT).
  265.  *
  266.  * Revision 1.7  1998/12/21 22:24:55  vasilche
  267.  * A lot of cleaning.
  268.  *
  269.  * Revision 1.6  1998/12/11 22:53:39  lewisg
  270.  * added docsum page
  271.  *
  272.  * Revision 1.5  1998/12/11 18:13:50  lewisg
  273.  * frontpage added
  274.  *
  275.  * Revision 1.4  1998/12/09 23:02:55  lewisg
  276.  * update to new cgiapp class
  277.  *
  278.  * Revision 1.3  1998/12/08 00:34:54  lewisg
  279.  * cleanup
  280.  *
  281.  * Revision 1.2  1998/11/23 23:47:48  lewisg
  282.  * *** empty log message ***
  283.  *
  284.  * Revision 1.1  1998/10/29 16:15:51  lewisg
  285.  * version 2
  286.  *
  287.  * ===========================================================================
  288.  */
  289. #endif  /* HTML___COMPONENTS__HPP */