DataViewSettingCollection.cs 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181
  1. //------------------------------------------------------------------------------
  2. // <copyright file="DataViewSettingCollection.cs" company="Microsoft">
  3. // Copyright (c) Microsoft Corporation. All rights reserved.
  4. // </copyright>
  5. // <owner current="true" primary="true">[....]</owner>
  6. // <owner current="true" primary="false">[....]</owner>
  7. // <owner current="false" primary="false">[....]</owner>
  8. //------------------------------------------------------------------------------
  9. namespace System.Data {
  10. using System;
  11. using System.Diagnostics;
  12. using System.ComponentModel;
  13. using System.Collections;
  14. [
  15. Editor("Microsoft.VSDesigner.Data.Design.DataViewSettingsCollectionEditor, " + AssemblyRef.MicrosoftVSDesigner, "System.Drawing.Design.UITypeEditor, " + AssemblyRef.SystemDrawing),
  16. ]
  17. public class DataViewSettingCollection : ICollection {
  18. private readonly DataViewManager dataViewManager;
  19. private readonly Hashtable list = new Hashtable();
  20. internal DataViewSettingCollection(DataViewManager dataViewManager) {
  21. if (dataViewManager == null) {
  22. throw ExceptionBuilder.ArgumentNull("dataViewManager");
  23. }
  24. this.dataViewManager = dataViewManager;
  25. }
  26. public virtual DataViewSetting this[DataTable table] {
  27. get {
  28. if (table == null) {
  29. throw ExceptionBuilder.ArgumentNull("table");
  30. }
  31. DataViewSetting dataViewSetting = (DataViewSetting) list[table];
  32. if(dataViewSetting == null) {
  33. dataViewSetting = new DataViewSetting();
  34. this[table] = dataViewSetting;
  35. }
  36. return dataViewSetting;
  37. }
  38. set {
  39. if (table == null) {
  40. throw ExceptionBuilder.ArgumentNull("table");
  41. }
  42. value.SetDataViewManager(dataViewManager);
  43. value.SetDataTable(table);
  44. list[table] = value;
  45. }
  46. }
  47. private DataTable GetTable(string tableName) {
  48. DataTable dt = null;
  49. DataSet ds = dataViewManager.DataSet;
  50. if(ds != null) {
  51. dt = ds.Tables[tableName];
  52. }
  53. return dt;
  54. }
  55. private DataTable GetTable(int index) {
  56. DataTable dt = null;
  57. DataSet ds = dataViewManager.DataSet;
  58. if(ds != null) {
  59. dt = ds.Tables[index];
  60. }
  61. return dt;
  62. }
  63. public virtual DataViewSetting this[string tableName] {
  64. get {
  65. DataTable dt = GetTable(tableName);
  66. if(dt != null) {
  67. return this[dt];
  68. }
  69. return null;
  70. }
  71. }
  72. public virtual DataViewSetting this[int index] {
  73. get {
  74. DataTable dt = GetTable(index);
  75. if(dt != null) {
  76. return this[dt];
  77. }
  78. return null;
  79. }
  80. set {
  81. DataTable dt = GetTable(index);
  82. if(dt != null) {
  83. this[dt] = value;
  84. }else {
  85. // throw excaption here.
  86. }
  87. }
  88. }
  89. // ----------- ICollection -------------------------
  90. public void CopyTo(Array ar, int index) {
  91. System.Collections.IEnumerator Enumerator = GetEnumerator();
  92. while (Enumerator.MoveNext()) {
  93. ar.SetValue(Enumerator.Current, index++);
  94. }
  95. }
  96. public void CopyTo(DataViewSetting[] ar, int index) {
  97. System.Collections.IEnumerator Enumerator = GetEnumerator();
  98. while (Enumerator.MoveNext()) {
  99. ar.SetValue(Enumerator.Current, index++);
  100. }
  101. }
  102. [Browsable(false)]
  103. public virtual int Count {
  104. get {
  105. DataSet ds = dataViewManager.DataSet;
  106. return (ds == null) ? 0 : ds.Tables.Count;
  107. }
  108. }
  109. public IEnumerator GetEnumerator() {
  110. // I have to do something here.
  111. return new DataViewSettingsEnumerator(dataViewManager);
  112. }
  113. [
  114. Browsable(false)
  115. ]
  116. public bool IsReadOnly {
  117. get {
  118. return true;
  119. }
  120. }
  121. [Browsable(false)]
  122. public bool IsSynchronized {
  123. get {
  124. // so the user will know that it has to lock this object
  125. return false;
  126. }
  127. }
  128. [Browsable(false)]
  129. public object SyncRoot {
  130. get {
  131. return this;
  132. }
  133. }
  134. internal void Remove(DataTable table) {
  135. list.Remove(table);
  136. }
  137. private sealed class DataViewSettingsEnumerator : IEnumerator {
  138. DataViewSettingCollection dataViewSettings;
  139. IEnumerator tableEnumerator;
  140. public DataViewSettingsEnumerator(DataViewManager dvm) {
  141. DataSet ds = dvm.DataSet;
  142. if(ds != null) {
  143. dataViewSettings = dvm.DataViewSettings;
  144. tableEnumerator = dvm.DataSet.Tables.GetEnumerator();
  145. }else {
  146. dataViewSettings = null;
  147. tableEnumerator = DataSet.zeroTables.GetEnumerator();
  148. }
  149. }
  150. public bool MoveNext() {
  151. return tableEnumerator.MoveNext();
  152. }
  153. public void Reset() {
  154. tableEnumerator.Reset();
  155. }
  156. public object Current {
  157. get {
  158. return dataViewSettings[(DataTable) tableEnumerator.Current];
  159. }
  160. }
  161. }
  162. }
  163. }