private static MultiPropertyDescriptorGridEntry[] SortParenEntries(MultiPropertyDescriptorGridEntry[] entries)
            {
                MultiPropertyDescriptorGridEntry[] entryArray = null;
                int num = 0;

                for (int i = 0; i < entries.Length; i++)
                {
                    if (entries[i].ParensAroundName)
                    {
                        if (entryArray == null)
                        {
                            entryArray = new MultiPropertyDescriptorGridEntry[entries.Length];
                        }
                        entryArray[num++] = entries[i];
                        entries[i]        = null;
                    }
                }
                if (num > 0)
                {
                    for (int j = 0; j < entries.Length; j++)
                    {
                        if (entries[j] != null)
                        {
                            entryArray[num++] = entries[j];
                        }
                    }
                    entries = entryArray;
                }
                return(entries);
            }
示例#2
0
            private static MultiPropertyDescriptorGridEntry[] SortParenEntries(MultiPropertyDescriptorGridEntry[] entries)
            {
                MultiPropertyDescriptorGridEntry[] newEntries = null;
                int newPos = 0;

                // first scan the list and move any parentesized properties to the front.
                for (int i = 0; i < entries.Length; i++)
                {
                    if (entries[i].ParensAroundName)
                    {
                        if (newEntries == null)
                        {
                            newEntries = new MultiPropertyDescriptorGridEntry[entries.Length];
                        }
                        newEntries[newPos++] = entries[i];
                        entries[i]           = null;
                    }
                }

                // second pass, copy any that didn't have the parens.
                if (newPos > 0)
                {
                    for (int i = 0; i < entries.Length; i++)
                    {
                        if (entries[i] != null)
                        {
                            newEntries[newPos++] = entries[i];
                        }
                    }
                    entries = newEntries;
                }
                return(entries);
            }
示例#3
0
            public static MultiPropertyDescriptorGridEntry[] GetMergedProperties(object[] rgobjs, GridEntry parentEntry, PropertySort sort, PropertyTab tab)
            {
                MultiPropertyDescriptorGridEntry[] result = null;
                try
                {
                    int      cLength   = rgobjs.Length;
                    object[] rgobjArgs = new object[1];

                    if ((sort & PropertySort.Alphabetical) != 0)
                    {
                        ArrayList props = GetCommonProperties(rgobjs, true, tab, parentEntry);

                        MultiPropertyDescriptorGridEntry[] entries = new MultiPropertyDescriptorGridEntry[props.Count];
                        for (int i = 0; i < entries.Length; i++)
                        {
                            entries[i] = new MultiPropertyDescriptorGridEntry(parentEntry.OwnerGrid, parentEntry, rgobjs, (PropertyDescriptor[])props[i], false);
                        }

                        result = SortParenEntries(entries);
                    }
                    else
                    {
                        object[] sortObjs = new object[cLength - 1];
                        Array.Copy(rgobjs, 1, sortObjs, 0, cLength - 1);

                        ArrayList props = GetCommonProperties(sortObjs, true, tab, parentEntry);

                        // this'll work for just one as well
                        ArrayList firstProps = GetCommonProperties(new object[] { rgobjs[0] }, false, tab, parentEntry);

                        PropertyDescriptor[] firstPds = new PropertyDescriptor[firstProps.Count];
                        for (int i = 0; i < firstProps.Count; i++)
                        {
                            firstPds[i] = ((PropertyDescriptor[])firstProps[i])[0];
                        }

                        props = UnsortedMerge(firstPds, props);

                        MultiPropertyDescriptorGridEntry[] entries = new MultiPropertyDescriptorGridEntry[props.Count];

                        for (int i = 0; i < entries.Length; i++)
                        {
                            entries[i] = new MultiPropertyDescriptorGridEntry(parentEntry.OwnerGrid, parentEntry, rgobjs, (PropertyDescriptor[])props[i], false);
                        }

                        result = SortParenEntries(entries);
                    }
                }
                catch
                {
                }

                return(result);
            }
 public static MultiPropertyDescriptorGridEntry[] GetMergedProperties(object[] rgobjs, GridEntry parentEntry, PropertySort sort, PropertyTab tab)
 {
     MultiPropertyDescriptorGridEntry[] entryArray = null;
     try
     {
         int length = rgobjs.Length;
         if ((sort & PropertySort.Alphabetical) != PropertySort.NoSort)
         {
             ArrayList list = GetCommonProperties(rgobjs, true, tab, parentEntry);
             MultiPropertyDescriptorGridEntry[] entryArray2 = new MultiPropertyDescriptorGridEntry[list.Count];
             for (int k = 0; k < entryArray2.Length; k++)
             {
                 entryArray2[k] = new MultiPropertyDescriptorGridEntry(parentEntry.OwnerGrid, parentEntry, rgobjs, (PropertyDescriptor[])list[k], false);
             }
             return(SortParenEntries(entryArray2));
         }
         object[] destinationArray = new object[length - 1];
         Array.Copy(rgobjs, 1, destinationArray, 0, length - 1);
         ArrayList            sortedMergedEntries = GetCommonProperties(destinationArray, true, tab, parentEntry);
         ArrayList            list3       = GetCommonProperties(new object[] { rgobjs[0] }, false, tab, parentEntry);
         PropertyDescriptor[] baseEntries = new PropertyDescriptor[list3.Count];
         for (int i = 0; i < list3.Count; i++)
         {
             baseEntries[i] = ((PropertyDescriptor[])list3[i])[0];
         }
         sortedMergedEntries = UnsortedMerge(baseEntries, sortedMergedEntries);
         MultiPropertyDescriptorGridEntry[] entries = new MultiPropertyDescriptorGridEntry[sortedMergedEntries.Count];
         for (int j = 0; j < entries.Length; j++)
         {
             entries[j] = new MultiPropertyDescriptorGridEntry(parentEntry.OwnerGrid, parentEntry, rgobjs, (PropertyDescriptor[])sortedMergedEntries[j], false);
         }
         entryArray = SortParenEntries(entries);
     }
     catch
     {
     }
     return(entryArray);
 }
 private static MultiPropertyDescriptorGridEntry[] SortParenEntries(MultiPropertyDescriptorGridEntry[] entries)
 {
     MultiPropertyDescriptorGridEntry[] entryArray = null;
     int num = 0;
     for (int i = 0; i < entries.Length; i++)
     {
         if (entries[i].ParensAroundName)
         {
             if (entryArray == null)
             {
                 entryArray = new MultiPropertyDescriptorGridEntry[entries.Length];
             }
             entryArray[num++] = entries[i];
             entries[i] = null;
         }
     }
     if (num > 0)
     {
         for (int j = 0; j < entries.Length; j++)
         {
             if (entries[j] != null)
             {
                 entryArray[num++] = entries[j];
             }
         }
         entries = entryArray;
     }
     return entries;
 }
 public static MultiPropertyDescriptorGridEntry[] GetMergedProperties(object[] rgobjs, GridEntry parentEntry, PropertySort sort, PropertyTab tab)
 {
     MultiPropertyDescriptorGridEntry[] entryArray = null;
     try
     {
         int length = rgobjs.Length;
         if ((sort & PropertySort.Alphabetical) != PropertySort.NoSort)
         {
             ArrayList list = GetCommonProperties(rgobjs, true, tab, parentEntry);
             MultiPropertyDescriptorGridEntry[] entryArray2 = new MultiPropertyDescriptorGridEntry[list.Count];
             for (int k = 0; k < entryArray2.Length; k++)
             {
                 entryArray2[k] = new MultiPropertyDescriptorGridEntry(parentEntry.OwnerGrid, parentEntry, rgobjs, (PropertyDescriptor[]) list[k], false);
             }
             return SortParenEntries(entryArray2);
         }
         object[] destinationArray = new object[length - 1];
         Array.Copy(rgobjs, 1, destinationArray, 0, length - 1);
         ArrayList sortedMergedEntries = GetCommonProperties(destinationArray, true, tab, parentEntry);
         ArrayList list3 = GetCommonProperties(new object[] { rgobjs[0] }, false, tab, parentEntry);
         PropertyDescriptor[] baseEntries = new PropertyDescriptor[list3.Count];
         for (int i = 0; i < list3.Count; i++)
         {
             baseEntries[i] = ((PropertyDescriptor[]) list3[i])[0];
         }
         sortedMergedEntries = UnsortedMerge(baseEntries, sortedMergedEntries);
         MultiPropertyDescriptorGridEntry[] entries = new MultiPropertyDescriptorGridEntry[sortedMergedEntries.Count];
         for (int j = 0; j < entries.Length; j++)
         {
             entries[j] = new MultiPropertyDescriptorGridEntry(parentEntry.OwnerGrid, parentEntry, rgobjs, (PropertyDescriptor[]) sortedMergedEntries[j], false);
         }
         entryArray = SortParenEntries(entries);
     }
     catch
     {
     }
     return entryArray;
 }
             public static MultiPropertyDescriptorGridEntry[] GetMergedProperties(object[] rgobjs, GridEntry parentEntry, PropertySort sort, PropertyTab tab) {

                MultiPropertyDescriptorGridEntry[] result = null;
                try {
                    int cLength = rgobjs.Length;
                    object[] rgobjArgs = new object[1];
                    
                    if((sort & PropertySort.Alphabetical) != 0) {
                        ArrayList props = GetCommonProperties(rgobjs, true, tab, parentEntry);
                        
                        MultiPropertyDescriptorGridEntry[] entries = new MultiPropertyDescriptorGridEntry[props.Count];
                        for (int i=0; i < entries.Length; i++) {
                            entries[i] = new MultiPropertyDescriptorGridEntry(parentEntry.OwnerGrid, parentEntry, rgobjs, (PropertyDescriptor[])props[i], false);
                        }
    
                        result = SortParenEntries(entries);
                    }
                    else {
                        object[] sortObjs = new object[cLength - 1];
                        Array.Copy(rgobjs, 1, sortObjs, 0, cLength - 1);
    
                        ArrayList props = GetCommonProperties(sortObjs, true, tab, parentEntry);
    
                        // this'll work for just one as well
                        ArrayList firstProps = GetCommonProperties(new object[]{rgobjs[0]}, false, tab, parentEntry);
    
                        PropertyDescriptor[] firstPds = new PropertyDescriptor[firstProps.Count];
                        for (int i = 0; i < firstProps.Count; i++) {
                            firstPds[i] = ((PropertyDescriptor[])firstProps[i])[0];
                        }
                        
                        props = UnsortedMerge(firstPds, props);
                        
                        MultiPropertyDescriptorGridEntry[] entries = new MultiPropertyDescriptorGridEntry[props.Count];
                        
                        for (int i=0; i < entries.Length; i++) {
                            entries[i] = new MultiPropertyDescriptorGridEntry(parentEntry.OwnerGrid, parentEntry, rgobjs, (PropertyDescriptor[])props[i], false);
                        }
    
                        result = SortParenEntries(entries);
                    }
                }
                catch {
                }
    
                return result;
    
            }
            private static MultiPropertyDescriptorGridEntry[] SortParenEntries(MultiPropertyDescriptorGridEntry[] entries) {

                MultiPropertyDescriptorGridEntry[] newEntries = null;
                int newPos = 0;
                
                // first scan the list and move any parentesized properties to the front.
                for (int i = 0; i < entries.Length; i++) {
                    if (entries[i].ParensAroundName) {
                        if (newEntries == null) {
                            newEntries = new MultiPropertyDescriptorGridEntry[entries.Length];
                        }
                        newEntries[newPos++] = entries[i];
                        entries[i] = null;
                    }
                }
    
                // second pass, copy any that didn't have the parens.
                if (newPos > 0) {
                    for (int i = 0; i < entries.Length; i++) {
                        if (entries[i] != null) {
                            newEntries[newPos++] = entries[i];
                        }
                    } 
                    entries = newEntries;
                }
                return entries;
            }
            public static MultiPropertyDescriptorGridEntry[] GetMergedProperties(
                object[] objects,
                GridEntry parentEntry,
                PropertySort sort,
                PropertyTab tab)
            {
                MultiPropertyDescriptorGridEntry[] result = null;
                try
                {
                    int length = objects.Length;

                    if ((sort & PropertySort.Alphabetical) != 0)
                    {
                        ArrayList commonProperties = GetCommonProperties(objects, presort: true, tab, parentEntry);

                        var entries = new MultiPropertyDescriptorGridEntry[commonProperties.Count];
                        for (int i = 0; i < entries.Length; i++)
                        {
                            entries[i] = new MultiPropertyDescriptorGridEntry(
                                parentEntry.OwnerGrid,
                                parentEntry,
                                objects,
                                (PropertyDescriptor[])commonProperties[i],
                                hide: false);
                        }

                        result = SortParenEntries(entries);
                    }
                    else
                    {
                        object[] sortObjects = new object[length - 1];
                        Array.Copy(objects, 1, sortObjects, 0, length - 1);

                        ArrayList properties = GetCommonProperties(sortObjects, presort: true, tab, parentEntry);

                        // This will work for just one as well.
                        ArrayList firstProperties = GetCommonProperties(new object[] { objects[0] }, presort: false, tab, parentEntry);

                        var firstPropertyDescriptors = new PropertyDescriptor[firstProperties.Count];
                        for (int i = 0; i < firstProperties.Count; i++)
                        {
                            firstPropertyDescriptors[i] = ((PropertyDescriptor[])firstProperties[i])[0];
                        }

                        properties = UnsortedMerge(firstPropertyDescriptors, properties);

                        var entries = new MultiPropertyDescriptorGridEntry[properties.Count];

                        for (int i = 0; i < entries.Length; i++)
                        {
                            entries[i] = new MultiPropertyDescriptorGridEntry(
                                parentEntry.OwnerGrid,
                                parentEntry,
                                objects,
                                (PropertyDescriptor[])properties[i],
                                hide: false);
                        }

                        result = SortParenEntries(entries);
                    }
                }
                catch
                {
                }

                return(result);
            }