DemoMenu.cs
上传用户:husern
上传日期:2022-03-24
资源大小:534k
文件大小:6k
源码类别:

编辑器/阅读器

开发平台:

C#

  1. // -- FILE ------------------------------------------------------------------
  2. // name       : DemoMenu.cs
  3. // project    : Itenso Web User Forms
  4. // created    : Jani Giannoudis - 2008.10.30
  5. // language   : c#
  6. // environment: .NET 2.0
  7. // copyright  : (c) 2008 by Itenso GmbH, Switzerland
  8. // --------------------------------------------------------------------------
  9. using System;
  10. using System.Drawing;
  11. using System.Collections;
  12. using System.Collections.Specialized;
  13. using System.ComponentModel;
  14. using System.Web.UI.WebControls;
  15. // ------------------------------------------------------------------------
  16. [Browsable( false )]
  17. public class DemoMenu : CompositeControl
  18. {
  19. // ----------------------------------------------------------------------
  20. public DemoMenu()
  21. {
  22. } // DemoMenu
  23. // ----------------------------------------------------------------------
  24. [Browsable( false )]
  25. public string Title
  26. {
  27. get { return this.title; }
  28. set { this.title = value; }
  29. } // Title
  30. // ----------------------------------------------------------------------
  31. [Browsable( false )]
  32. public Unit TitleHeight
  33. {
  34. get { return this.titleHeight; }
  35. set { this.titleHeight = value; }
  36. } // TitleHeight
  37. // ----------------------------------------------------------------------
  38. [Browsable( false )]
  39. public bool ShowTitle
  40. {
  41. get { return this.showTitle; }
  42. set { this.showTitle = value; }
  43. } // ShowTitle
  44. // ----------------------------------------------------------------------
  45. [Browsable( false )]
  46. public bool ShowPageName
  47. {
  48. get { return this.showPageName; }
  49. set { this.showPageName = value; }
  50. } // ShowPageName
  51. // ----------------------------------------------------------------------
  52. [Browsable( false )]
  53. public bool ShowSpacer
  54. {
  55. get { return this.showSpacer; }
  56. set { this.showSpacer = value; }
  57. } // ShowSpacer
  58. // ----------------------------------------------------------------------
  59. [Browsable( false )]
  60. public Unit MenuHeight
  61. {
  62. get { return this.menuHeight; }
  63. set { this.menuHeight = value; }
  64. } // MenuHeight
  65. // ----------------------------------------------------------------------
  66. [Browsable( false )]
  67. public Unit SpacerHeight
  68. {
  69. get { return this.spacerHeight; }
  70. set { this.spacerHeight = value; }
  71. } // SpacerHeight
  72. // ------------------------------------------------------------------------
  73. public void AddMenuItem( string text, string url )
  74. {
  75. if ( string.IsNullOrEmpty( text ) )
  76. {
  77. throw new ArgumentNullException( "text" );
  78. }
  79. if ( string.IsNullOrEmpty( url ) )
  80. {
  81. throw new ArgumentNullException( "url" );
  82. }
  83. this.menuItems.Add( url, text );
  84. } // AddMenuItem
  85. // ------------------------------------------------------------------------
  86. protected override void CreateChildControls()
  87. {
  88. base.CreateChildControls();
  89. SetupControl();
  90. } // CreateChildControls
  91. // ------------------------------------------------------------------------
  92. private void SetupControl()
  93. {
  94. Table layoutTable = new Table();
  95. layoutTable.Width = Unit.Percentage( 100 );
  96. // application title
  97. if ( this.showTitle && !string.IsNullOrEmpty( this.title ) )
  98. {
  99. TableRow applicationTitleRow = new TableRow();
  100. applicationTitleRow.Height = this.titleHeight;
  101. TableCell applicationTitleCell = new TableCell();
  102. applicationTitleCell.ColumnSpan = this.menuItems.Count;
  103. applicationTitleCell.HorizontalAlign = HorizontalAlign.Center;
  104. applicationTitleCell.BackColor = SystemColors.Info;
  105. Label appTitleLabel = new Label();
  106. appTitleLabel.Font.Bold = true;
  107. appTitleLabel.Font.Size = FontUnit.Larger;
  108. appTitleLabel.Text = this.title;
  109. applicationTitleCell.Controls.Add( appTitleLabel );
  110. applicationTitleRow.Cells.Add( applicationTitleCell );
  111. layoutTable.Rows.Add( applicationTitleRow );
  112. }
  113. // menu
  114. string curPageFilePath = Page.Request.AppRelativeCurrentExecutionFilePath;
  115. if ( this.menuItems.Count > 0 )
  116. {
  117. TableRow menuRow = new TableRow();
  118. menuRow.Height = this.menuHeight;
  119. IDictionaryEnumerator enumerator = this.menuItems.GetEnumerator();
  120. while ( enumerator.MoveNext() )
  121. {
  122. TableCell menuItemCell = new TableCell();
  123. menuItemCell.HorizontalAlign = HorizontalAlign.Center;
  124. menuItemCell.BackColor = SystemColors.Control;
  125. HyperLink menuHyperLink = new HyperLink();
  126. menuHyperLink.Text = enumerator.Key as string;
  127. menuHyperLink.NavigateUrl = enumerator.Value as string;
  128. if ( menuHyperLink.NavigateUrl.Equals( curPageFilePath ) )
  129. {
  130. menuHyperLink.Enabled = false;
  131. }
  132. menuItemCell.Controls.Add( menuHyperLink );
  133. menuRow.Cells.Add( menuItemCell );
  134. }
  135. layoutTable.Rows.Add( menuRow );
  136. }
  137. // page name
  138. if ( this.showPageName )
  139. {
  140. TableRow pageNameRow = new TableRow();
  141. pageNameRow.Height = this.titleHeight;
  142. TableCell pageNameCell = new TableCell();
  143. pageNameCell.ColumnSpan = this.menuItems.Count;
  144. pageNameCell.HorizontalAlign = HorizontalAlign.Center;
  145. pageNameCell.BackColor = SystemColors.Info;
  146. Label pageNameLabel = new Label();
  147. pageNameLabel.Font.Size = FontUnit.Larger;
  148. pageNameLabel.Text = Page.Title;
  149. pageNameCell.Controls.Add( pageNameLabel );
  150. pageNameRow.Cells.Add( pageNameCell );
  151. layoutTable.Rows.Add( pageNameRow );
  152. }
  153. // spacer
  154. if ( this.showSpacer )
  155. {
  156. TableRow spacerRow = new TableRow();
  157. spacerRow.Height = this.spacerHeight;
  158. layoutTable.Rows.Add( spacerRow );
  159. }
  160. if ( layoutTable.Rows.Count > 0 )
  161. {
  162. Controls.Add( layoutTable );
  163. }
  164. } // SetupControl
  165. // ------------------------------------------------------------------------
  166. // members
  167. private readonly OrderedDictionary menuItems = new OrderedDictionary();
  168. private string title;
  169. private bool showTitle = true;
  170. private bool showPageName = true;
  171. private bool showSpacer = true;
  172. private Unit titleHeight = Unit.Pixel( 25 );
  173. private Unit menuHeight = Unit.Pixel( 25 );
  174. private Unit spacerHeight = Unit.Pixel( 5 );
  175. } // class DemoMenu
  176. // -- EOF -------------------------------------------------------------------