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

编辑器/阅读器

开发平台:

C#

  1. // -- FILE ------------------------------------------------------------------
  2. // name       : FormGroup.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 Itenso.WebUserForms.Data.Variable;
  11. namespace Itenso.WebUserForms.Data.Form
  12. {
  13. // ------------------------------------------------------------------------
  14. public class FormGroup : FormEntity, IFormGroup
  15. {
  16. // ----------------------------------------------------------------------
  17. /// <summary>
  18. /// for internal use only!
  19. /// </summary>
  20. public FormGroup()
  21. : base( FormEntityType.Form )
  22. {
  23. } // FormGroup
  24. // ----------------------------------------------------------------------
  25. public FormGroup( string name )
  26. : base( FormEntityType.Form, name )
  27. {
  28. } // FormGroup
  29. // ----------------------------------------------------------------------
  30. public FormGroup( FormGroup copy )
  31. : base( copy )
  32. {
  33. foreach ( IFormEntity item in copy.entities )
  34. {
  35. this.entities.Add( item.Duplicate() );
  36. }
  37. } // FormGroup
  38. // ----------------------------------------------------------------------
  39. protected override IFormEntity DoDuplicate()
  40. {
  41. return new FormGroup( this );
  42. } // DoDuplicate
  43. // ----------------------------------------------------------------------
  44. IFormGroup IFormGroup.Duplicate()
  45. {
  46. return DoDuplicate() as FormGroup;
  47. } // IFormGroup.Duplicate
  48. // ----------------------------------------------------------------------
  49. public IFormEntityCollection Entities
  50. {
  51. get { return this.entities; }
  52. } // Entities
  53. // ----------------------------------------------------------------------
  54. public IFormEntity FindByItemPath( string itemNameOrPath )
  55. {
  56. if ( itemNameOrPath != null )
  57. {
  58. int indexOfFirstDot = itemNameOrPath.IndexOf( '.' );
  59. if ( indexOfFirstDot > 0 )
  60. {
  61. string itemName = itemNameOrPath.Substring( 0, indexOfFirstDot );
  62. IFormGroup formGroup = this.entities.FindByItemName( itemName ) as IFormGroup;
  63. if ( formGroup != null )
  64. {
  65. string restReference = itemNameOrPath.Substring( indexOfFirstDot + 1 );
  66. return formGroup.FindByItemPath( restReference );
  67. }
  68. }
  69. else
  70. {
  71. return entities.FindByItemName( itemNameOrPath );
  72. }
  73. }
  74. return null;
  75. } // FindByItemPath
  76. // ----------------------------------------------------------------------
  77. public IFormField FindFieldByPath( string fieldName )
  78. {
  79. return FindByItemPath( fieldName ) as IFormField;
  80. } // FindFieldByPath
  81. // ----------------------------------------------------------------------
  82. public IFormGroup FindGroupByPath( string groupName )
  83. {
  84. return FindByItemPath( groupName ) as IFormGroup;
  85. } // FindGroupByPath
  86. // ----------------------------------------------------------------------
  87. protected override void DoExpandVariables( IVariableSet varSet )
  88. {
  89. foreach ( IFormEntity item in this.entities )
  90. {
  91. item.ExpandVariables( varSet );
  92. }
  93. } // DoExpandVariables
  94. // ----------------------------------------------------------------------
  95. public override bool Equals( object obj )
  96. {
  97. bool equal = false;
  98. FormGroup compare = obj as FormGroup;
  99. if ( compare != null )
  100. {
  101. equal = base.Equals( obj ) &&
  102. Object.Equals( this.entities, compare.entities );
  103. }
  104. return equal;
  105. } // Equals
  106. // ----------------------------------------------------------------------
  107. public override int GetHashCode()
  108. {
  109. int hash = base.GetHashCode();
  110. hash = HashTool.AddHashCode( hash, this.entities );
  111. return hash;
  112. } // GetHashCode
  113. // ----------------------------------------------------------------------
  114. public override string ToString()
  115. {
  116. return base.ToString() + ": " + this.entities.ToString();
  117. } // ToString
  118. // ----------------------------------------------------------------------
  119. // members
  120. private readonly FormEntityCollection entities = new FormEntityCollection();
  121. } // class FormGroup
  122. } // namespace Itenso.WebUserForms.Data.Form
  123. // -- EOF -------------------------------------------------------------------