Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
DataViewListener.cs
Go to the documentation of this file.
3
4namespace System.Data;
5
6internal sealed class DataViewListener
7{
8 private readonly WeakReference _dvWeak;
9
11
12 private Index _index;
13
14 internal readonly int _objectID;
15
17 {
18 _objectID = dv.ObjectID;
20 }
21
23 {
25 if (dataView != null)
26 {
27 dataView.ChildRelationCollectionChanged(sender, e);
28 }
29 else
30 {
32 }
33 }
34
36 {
38 if (dataView != null)
39 {
40 dataView.ParentRelationCollectionChanged(sender, e);
41 }
42 else
43 {
45 }
46 }
47
49 {
51 if (dataView != null)
52 {
53 dataView.ColumnCollectionChangedInternal(sender, e);
54 }
55 else
56 {
58 }
59 }
60
62 {
64 if (dataView != null)
65 {
66 dataView.MaintainDataView(changedType, row, trackAddRemove);
67 }
68 else
69 {
71 }
72 }
73
75 {
77 if (dataView != null)
78 {
79 dataView.IndexListChangedInternal(e);
80 }
81 else
82 {
84 }
85 }
86
87 internal void RegisterMetaDataEvents(DataTable table)
88 {
89 _table = table;
90 if (table != null)
91 {
92 RegisterListener(table);
93 CollectionChangeEventHandler value = ColumnCollectionChanged;
94 table.Columns.ColumnPropertyChanged += value;
95 table.Columns.CollectionChanged += value;
96 CollectionChangeEventHandler value2 = ChildRelationCollectionChanged;
98 table.ChildRelations.CollectionChanged += value2;
99 CollectionChangeEventHandler value3 = ParentRelationCollectionChanged;
101 table.ParentRelations.CollectionChanged += value3;
102 }
103 }
104
109
111 {
112 DataTable table = _table;
113 _table = null;
114 if (table == null)
115 {
116 return;
117 }
118 CollectionChangeEventHandler value = ColumnCollectionChanged;
119 table.Columns.ColumnPropertyChanged -= value;
120 table.Columns.CollectionChanged -= value;
121 CollectionChangeEventHandler value2 = ChildRelationCollectionChanged;
123 table.ChildRelations.CollectionChanged -= value2;
124 CollectionChangeEventHandler value3 = ParentRelationCollectionChanged;
126 table.ParentRelations.CollectionChanged -= value3;
127 if (updateListeners)
128 {
131 {
132 listeners.Remove(this);
133 }
134 }
135 }
136
138 {
139 _index = index;
140 if (index != null)
141 {
142 lock (index)
143 {
144 index.AddRef();
145 index.ListChangedAdd(this);
146 }
147 }
148 }
149
151 {
153 _index = null;
154 if (index == null)
155 {
156 return;
157 }
158 lock (index)
159 {
160 index.ListChangedRemove(this);
161 if (index.RemoveRef() <= 1)
162 {
163 index.RemoveRef();
164 }
165 }
166 }
167
173
174 private void RegisterListener(DataTable table)
175 {
178 {
179 int num = listeners.Count - 1;
180 while (0 <= num)
181 {
183 if (!dataViewListener._dvWeak.IsAlive)
184 {
185 listeners.RemoveAt(num);
186 dataViewListener.CleanUp(updateListeners: false);
187 }
188 num--;
189 }
190 listeners.Add(this);
191 }
192 }
193}
bool ICollection< KeyValuePair< TKey, TValue > >. Remove(KeyValuePair< TKey, TValue > keyValuePair)
void Add(TKey key, TValue value)
List< DataViewListener > GetListeners()
DataRelationCollection ParentRelations
Definition DataTable.cs:572
DataRelationCollection ChildRelations
Definition DataTable.cs:324
void MaintainDataView(ListChangedType changedType, DataRow row, bool trackAddRemove)
void IndexListChanged(ListChangedEventArgs e)
void RegisterListChangedEvent(Index index)
void RegisterMetaDataEvents(DataTable table)
void ChildRelationCollectionChanged(object sender, CollectionChangeEventArgs e)
void CleanUp(bool updateListeners)
void ColumnCollectionChanged(object sender, CollectionChangeEventArgs e)
readonly WeakReference _dvWeak
void ParentRelationCollectionChanged(object sender, CollectionChangeEventArgs e)
void RegisterListener(DataTable table)
void UnregisterMetaDataEvents(bool updateListeners)
virtual ? object Target