private void parseType( Type type, string propertyPath, TreeNode node, ApplicationEventFilter sourceFilter) { //Type type = parseObject.GetType(); //TreeNode result = new TreeNode(type.Name); string pathRoot = propertyPath; foreach (PropertyInfo pi in type.GetProperties()) { var childNode = new TreeNode(pi.Name); propertyPath = pathRoot; if (!pi.PropertyType.IsValueType && pi.PropertyType != typeof (String) && pi.PropertyType != typeof (object)) { propertyPath += pi.Name + "."; parseType(pi.PropertyType, propertyPath, childNode, sourceFilter); // Those are not for filtering onto childNode.ImageIndex = 3; } else { // Those to enable and disable and setup filters // The long way with entry candidate is choosen in order to spare duplicate iteration // via the filters collection. FilterEntry entryCandidate = null; string currentPath = propertyPath + pi.Name; if (sourceFilter != null) entryCandidate = sourceFilter.FilterEntries[currentPath]; // if (entryCandidate == null) { entryCandidate = new FilterEntry(currentPath); _filter.FilterEntries.Add(entryCandidate); } childNode.ImageIndex = (entryCandidate.Enabled == false) ? 1 : 2; propertyPath = pathRoot; childNode.Tag = entryCandidate; } node.Nodes.Add(childNode); } }
private void reAssignOnChangeHandler(FilterEntry oldFilter, FilterEntry newFilter) { oldFilter.Changed -= filterEntryChanged; newFilter.Changed += filterEntryChanged; }
/// <summary> /// <para> /// Initializes a new instance of <see cref='Tools..FilterEntryCollection'/> containing any array of <see cref='Tools..FilterEntry'/> objects. /// </para> /// </summary> /// <param name='value'> /// A array of <see cref='Tools..FilterEntry'/> objects with which to intialize the collection /// </param> public FilterEntryCollection(FilterEntry[] value) { AddRange(value); }
/// <summary> /// <para>Inserts a <see cref='Tools..FilterEntry'/> into the <see cref='Tools..FilterEntryCollection'/> at the specified index.</para> /// </summary> /// <param name='index'>The zero-based index where <paramref name='value'/> should be inserted.</param> /// <param name=' value'>The <see cref='Tools..FilterEntry'/> to insert.</param> /// <returns><para>None.</para></returns> /// <seealso cref='Tools..FilterEntryCollection.Add'/> public void Insert(int index, FilterEntry value) { List.Insert(index, value); }
/// <summary> /// <para> Removes a specific <see cref='Tools..FilterEntry'/> from the /// <see cref='Tools..FilterEntryCollection'/> .</para> /// </summary> /// <param name='value'>The <see cref='Tools..FilterEntry'/> to remove from the <see cref='Tools..FilterEntryCollection'/> .</param> /// <returns><para>None.</para></returns> /// <exception cref='System.ArgumentException'><paramref name='value'/> is not found in the Collection. </exception> public void Remove(FilterEntry value) { value.Changed -= filterEntryChanged; List.Remove(value); OnChanged(); }
/// <summary> /// <para>Returns the index of a <see cref='Tools..FilterEntry'/> in /// the <see cref='Tools..FilterEntryCollection'/> .</para> /// </summary> /// <param name='value'>The <see cref='Tools..FilterEntry'/> to locate.</param> /// <returns> /// <para>The index of the <see cref='Tools..FilterEntry'/> of <paramref name='value'/> in the /// <see cref='Tools..FilterEntryCollection'/>, if found; otherwise, -1.</para> /// </returns> /// <seealso cref='Tools..FilterEntryCollection.Contains'/> public int IndexOf(FilterEntry value) { return List.IndexOf(value); }
/// <summary> /// <para>Copies the <see cref='Tools..FilterEntryCollection'/> values to a one-dimensional <see cref='System.Array'/> instance at the /// specified index.</para> /// </summary> /// <param name='array'><para>The one-dimensional <see cref='System.Array'/> that is the destination of the values copied from <see cref='Tools..FilterEntryCollection'/> .</para></param> /// <param name='index'>The index in <paramref name='array'/> where copying begins.</param> /// <returns> /// <para>None.</para> /// </returns> /// <exception cref='System.ArgumentException'><para><paramref name='array'/> is multidimensional.</para> <para>-or-</para> <para>The number of elements in the <see cref='Tools..FilterEntryCollection'/> is greater than the available space between <paramref name='arrayIndex'/> and the end of <paramref name='array'/>.</para></exception> /// <exception cref='System.ArgumentNullException'><paramref name='array'/> is <see langword='null'/>. </exception> /// <exception cref='System.ArgumentOutOfRangeException'><paramref name='arrayIndex'/> is less than <paramref name='array'/>'s lowbound. </exception> /// <seealso cref='System.Array'/> public void CopyTo(FilterEntry[] array, int index) { List.CopyTo(array, index); }
/// <summary> /// <para>Gets a value indicating whether the /// <see cref='Tools..FilterEntryCollection'/> contains the specified <see cref='Tools..FilterEntry'/>.</para> /// </summary> /// <param name='value'>The <see cref='Tools..FilterEntry'/> to locate.</param> /// <returns> /// <para><see langword='true'/> if the <see cref='Tools..FilterEntry'/> is contained in the collection; /// otherwise, <see langword='false'/>.</para> /// </returns> /// <seealso cref='Tools..FilterEntryCollection.IndexOf'/> public bool Contains(FilterEntry value) { return List.Contains(value); }
/// <summary> /// <para>Copies the elements of an array to the end of the <see cref='Tools..FilterEntryCollection'/>.</para> /// </summary> /// <param name='value'> /// An array of type <see cref='Tools..FilterEntry'/> containing the objects to add to the collection. /// </param> /// <returns> /// <para>None.</para> /// </returns> /// <seealso cref='Tools..FilterEntryCollection.Add'/> public void AddRange(FilterEntry[] value) { for (int i = 0; (i < value.Length); i = (i + 1)) { Add(value[i]); } }
/// <summary> /// <para>Adds a <see cref='Tools..FilterEntry'/> with the specified value to the /// <see cref='Tools..FilterEntryCollection'/> .</para> /// </summary> /// <param name='value'>The <see cref='Tools..FilterEntry'/> to add.</param> /// <returns> /// <para>The index at which the new element was inserted.</para> /// </returns> /// <seealso cref='Tools..FilterEntryCollection.AddRange'/> public int Add(FilterEntry value) { FilterEntry nv = GetEntry(value.Path); if (nv != null) { throw new ArgumentException("Can't add the item with duplicate path of " + nv.Path); } int ret = List.Add(value); value.Changed += filterEntryChanged; OnChanged(); return ret; }