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

编辑器/阅读器

开发平台:

C#

  1. // -- FILE ------------------------------------------------------------------
  2. // name       : UserFormInfoRenderer.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.Text;
  11. using System.ComponentModel;
  12. using System.Drawing;
  13. using System.Web.UI;
  14. using System.Web.UI.WebControls;
  15. namespace Itenso.WebUserForms.Controls
  16. {
  17. // ------------------------------------------------------------------------
  18. internal class UserFormInfoRenderer : UserFormVisitor
  19. {
  20. // ----------------------------------------------------------------------
  21. public UserFormInfoRenderer( Control startControl )
  22. : base( startControl )
  23. {
  24. } // UserFormInfoRenderer
  25. // ----------------------------------------------------------------------
  26. public bool ShowRuntimeHeaderInfo
  27. {
  28. get { return this.showRuntimeHeaderInfo; }
  29. set { this.showRuntimeHeaderInfo = value; }
  30. } // ShowRuntimeHeaderInfo
  31. // ----------------------------------------------------------------------
  32. public bool ShowDesigntimeHeaderInfo
  33. {
  34. get { return this.showDesigntimeHeaderInfo; }
  35. set { this.showDesigntimeHeaderInfo = value; }
  36. } // ShowDesigntimeHeaderInfo
  37. // ----------------------------------------------------------------------
  38. public void Render( Table table )
  39. {
  40. if ( table == null )
  41. {
  42. throw new ArgumentNullException( "table" );
  43. }
  44. this.table = table;
  45. this.level = 0;
  46. AddTitleRow( "User Form Details" );
  47. AddColumnTitleRow( "Name", "Value", "Properties", "Type" );
  48. base.Start();
  49. } // Render
  50. // ----------------------------------------------------------------------
  51. protected virtual string GetFormFieldName( IUserFormField formField )
  52. {
  53. return formField.FieldName;
  54. } // GetFormFieldName
  55. // ----------------------------------------------------------------------
  56. protected virtual string GetFormFieldValue( IUserFormField formField )
  57. {
  58. return formField.FieldValue;
  59. } // GetFormFieldValue
  60. // ----------------------------------------------------------------------
  61. protected virtual string GetFormFieldProperties( IUserFormField formField )
  62. {
  63. this.sb.Remove( 0, sb.Length );
  64. this.sb.Append( formField.AllowEdit ? "Editable" : "Read-Only" );
  65. IListField listField = formField as IListField;
  66. if ( listField != null )
  67. {
  68. this.sb.Append( ", List[" );
  69. this.sb.Append( listField.Items.Count.ToString() );
  70. this.sb.Append( "]" );
  71. }
  72. ILookupField lookupField = formField as ILookupField;
  73. if ( lookupField != null )
  74. {
  75. this.sb.Append( ", Lookup=" );
  76. this.sb.Append( lookupField.LookupName );
  77. }
  78. IExpressionField expressionField = formField as IExpressionField;
  79. if ( expressionField != null )
  80. {
  81. this.sb.Append( ", Expression=" );
  82. this.sb.Append( expressionField.FieldExpression );
  83. }
  84. return this.sb.ToString();
  85. } // GetFormFieldProperties
  86. // ----------------------------------------------------------------------
  87. protected virtual string GetFormFieldControlType( Control control, IUserFormField formField )
  88. {
  89. this.sb.Remove( 0, sb.Length );
  90. this.sb.Append( control.GetType().Name );
  91. int extendedInfoCount = 0;
  92. if ( formField is IListField )
  93. {
  94. string token = extendedInfoCount == 0 ? " [" : ", ";
  95. this.sb.Append( token );
  96. this.sb.Append( "List" );
  97. extendedInfoCount++;
  98. }
  99. if ( formField is ILookupField )
  100. {
  101. string token = extendedInfoCount == 0 ? " [" : ", ";
  102. this.sb.Append( token );
  103. this.sb.Append( "Lookup" );
  104. extendedInfoCount++;
  105. }
  106. if ( formField is IExpressionField )
  107. {
  108. string token = extendedInfoCount == 0 ? " [" : "," ;
  109. this.sb.Append( token );
  110. this.sb.Append( "Expression" );
  111. extendedInfoCount++;
  112. }
  113. if ( formField is IPlaceholderControl )
  114. {
  115. string token = extendedInfoCount == 0 ? " [" : ", ";
  116. this.sb.Append( token );
  117. this.sb.Append( "Placeholder" );
  118. extendedInfoCount++;
  119. }
  120. if ( extendedInfoCount > 0 )
  121. {
  122. sb.Append( "]" );
  123. }
  124. return sb.ToString();
  125. } // GetFormFieldControlType
  126. // ----------------------------------------------------------------------
  127. protected override void EnterForm( Control control )
  128. {
  129. this.level++;
  130. } // EnterForm
  131. // ----------------------------------------------------------------------
  132. protected override void LeaveForm( Control control )
  133. {
  134. this.level--;
  135. } // LeaveForm
  136. // ----------------------------------------------------------------------
  137. protected override void VisitHeader( Control control, IUserFormHeader formHeader, IUserFormHeader parentFormHeader )
  138. {
  139. AddUserControlRow( control as UserControl );
  140. if ( this.showDesigntimeHeaderInfo )
  141. {
  142. AddHeaderRow( "Header.Type", formHeader.Type );
  143. AddHeaderRow( "Header.Name", formHeader.Name );
  144. AddHeaderRow( "Header.Description", formHeader.Description );
  145. AddHeaderRow( "Header.Version", formHeader.Version );
  146. }
  147. if ( this.showRuntimeHeaderInfo )
  148. {
  149. AddHeaderRow( "Header.FormType", formHeader.FormType );
  150. AddHeaderRow( "Header.FormName", formHeader.FormName );
  151. AddHeaderRow( "Header.FormId", formHeader.FormId );
  152. AddHeaderRow( "Header.FormVersion", formHeader.FormVersion );
  153. AddHeaderRow( "Header.FormCreatedByUser", formHeader.FormCreatedByUser );
  154. AddHeaderRow( "Header.FormCreated", formHeader.FormCreated.ToString() );
  155. AddHeaderRow( "Header.FormLastUpdatedByUser", formHeader.FormLastUpdatedByUser );
  156. AddHeaderRow( "Header.FormLastUpdated", formHeader.FormLastUpdated.ToString() );
  157. }
  158. } // VisitMainHeader
  159. // ----------------------------------------------------------------------
  160. protected override void VisitFormField( Control control, IUserFormField formField, IUserFormHeader formHeader )
  161. {
  162. AddFieldRow( 
  163. GetFormFieldName( formField ),
  164. GetFormFieldValue( formField ),
  165. GetFormFieldProperties( formField ),
  166. GetFormFieldControlType( control, formField ) );
  167. } // VisitFormField
  168. // ----------------------------------------------------------------------
  169. private void AddTitleRow( string name )
  170. {
  171. TableRow tableRow = AddRow( name, string.Empty, string.Empty, string.Empty );
  172. tableRow.BackColor = SystemColors.ActiveCaption;
  173. tableRow.ForeColor = SystemColors.ActiveCaptionText;
  174. tableRow.Font.Bold = true;
  175. tableRow.Cells[ 0 ].HorizontalAlign = HorizontalAlign.Center;
  176. tableRow.Cells[ 0 ].ColumnSpan = tableRow.Cells.Count;
  177. tableRow.Cells[ 1 ].Visible = false;
  178. tableRow.Cells[ 2 ].Visible = false;
  179. tableRow.Cells[ 3 ].Visible = false;
  180. } // AddTitleRow
  181. // ----------------------------------------------------------------------
  182. private void AddColumnTitleRow( string name, string value, string props, string type )
  183. {
  184. TableRow tableRow = AddRow( name, value, props, type );
  185. tableRow.BackColor = SystemColors.ActiveCaption;
  186. tableRow.ForeColor = SystemColors.ActiveCaptionText;
  187. tableRow.Font.Bold = true;
  188. tableRow.Cells[ 0 ].HorizontalAlign = HorizontalAlign.Center;
  189. tableRow.Cells[ 1 ].HorizontalAlign = HorizontalAlign.Center;
  190. tableRow.Cells[ 2 ].HorizontalAlign = HorizontalAlign.Center;
  191. tableRow.Cells[ 3 ].HorizontalAlign = HorizontalAlign.Center;
  192. } // AddColumnTitleRow
  193. // ----------------------------------------------------------------------
  194. private void AddUserControlRow( UserControl userControl )
  195. {
  196. TableRow tableRow = AddRow( 
  197. userControl.GetType().Name + " (" + this.level.ToString() + ")", 
  198. string.Empty, 
  199. string.Empty,
  200. string.Empty,
  201. this.level - 1 );
  202. tableRow.BackColor = SystemColors.Info;
  203. tableRow.Cells[ 0 ].ColumnSpan = tableRow.Cells.Count;
  204. tableRow.Cells[ 1 ].Visible = false;
  205. tableRow.Cells[ 2 ].Visible = false;
  206. tableRow.Cells[ 3 ].Visible = false;
  207. } // AddUserControlRow
  208. // ----------------------------------------------------------------------
  209. private void AddHeaderRow( string name, string value )
  210. {
  211. TableRow tableRow = AddRow( name, value, string.Empty, string.Empty );
  212. tableRow.BackColor = SystemColors.ControlDark;
  213. } // AddHeaderRow
  214. // ----------------------------------------------------------------------
  215. private void AddFieldRow( string name, string value, string props, string type )
  216. {
  217. TableRow tableRow = AddRow( name, value, props, type );
  218. tableRow.BackColor = SystemColors.Control;
  219. } // AddFieldRow
  220. // ----------------------------------------------------------------------
  221. private TableRow AddRow( string name, string value, string props, string type )
  222. {
  223. return AddRow( name, value, props, type, this.level );
  224. } // AddRow
  225. // ----------------------------------------------------------------------
  226. private TableRow AddRow( string name, string value, string props, string type, int rowLevel )
  227. {
  228. TableRow tableRow = new TableRow();
  229. TableCell fieldNameCell = new TableCell();
  230. StringBuilder sb = new StringBuilder();
  231. for ( int i = 0; i < rowLevel; i++ )
  232. {
  233. sb.Append( "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;" );
  234. }
  235. sb.Append( name );
  236. fieldNameCell.Text = sb.ToString();
  237. tableRow.Cells.Add( fieldNameCell );
  238. TableCell fieldValueCell = new TableCell();
  239. fieldValueCell.Text = value;
  240. tableRow.Cells.Add( fieldValueCell );
  241. TableCell controlPropsCell = new TableCell();
  242. controlPropsCell.Text = props;
  243. tableRow.Cells.Add( controlPropsCell );
  244. TableCell controlTypeCell = new TableCell();
  245. controlTypeCell.Text = type;
  246. tableRow.Cells.Add( controlTypeCell );
  247. this.table.Rows.Add( tableRow );
  248. return tableRow;
  249. } // AddRow
  250. // ----------------------------------------------------------------------
  251. // members
  252. private readonly StringBuilder sb = new StringBuilder();
  253. private Table table;
  254. private int level;
  255. private bool showDesigntimeHeaderInfo = true;
  256. private bool showRuntimeHeaderInfo = true;
  257. } // class UserFormInfoRenderer
  258. } // namespace Itenso.WebUserForms.Controls
  259. // -- EOF -------------------------------------------------------------------