Refresh() public method

public Refresh ( ) : void
return void
        public static void UpdateShownVariables(DataUiGrid grid, NamedObjectSave instance, IElement container)
        {
            grid.Categories.Clear();

            List<MemberCategory> categories = new List<MemberCategory>();
            var defaultCategory = new MemberCategory("Variables");
            defaultCategory.FontSize = 14;
            categories.Add(defaultCategory);

            AssetTypeInfo ati = instance.GetAssetTypeInfo();

            // not sure if this is needed:
            if (instance.TypedMembers.Count == 0)
            {
                instance.UpdateCustomProperties();
            }

            CreateCategoriesAndVariables(instance, container, categories, ati);

            if (ati != null)
            {
                SortCategoriesAndMembers(ref categories, ati);
            }


            if (defaultCategory.Members.Count == 0)
            {
                categories.Remove(defaultCategory);
            }
            else if (categories.Count != 1)
            {
                defaultCategory.Name = "Other Variables";
            }

            if (categories.Count != 0)
            {
                // "Name" should be the very first property:
                var nameCategory = CreateNameInstanceMember(instance);
                categories.Insert(0, nameCategory);
            }

            SetAlternatingColors(grid, categories);

            foreach(var category in categories)
            {
                grid.Categories.Add(category);
            }

            grid.Refresh();
        }
示例#2
0
        internal static void RefreshGrid(DataUiGrid grid)
        {
            if (RefreshesToSkip > 0)
            {
                RefreshesToSkip--;
            }
            else
            {
                grid.Refresh();
            }

            foreach (var category in grid.Categories)
            {
                List<InstanceMember> membersToRefresh = new List<InstanceMember>();

                foreach (DataGridItem instanceMember in category.Members)
                {
                    // Not sure why we check if the instanceMember has non-0 count for options.
                    // It could have had 0 before, but after a refresh, it may now have options.
                    bool shouldRefresh = //instanceMember.CustomOptions.Count != 0 &&
                        instanceMember.TypeConverter != null;

                    if (shouldRefresh)
                    {
                        instanceMember.RefreshOptions();
                        membersToRefresh.Add(instanceMember);
                    }
                }

                bool shouldSort = membersToRefresh.Count != 0;

                foreach (var item in membersToRefresh)
                {
                    var index = category.Members.IndexOf(item);
                    category.Members.Remove(item);
                    category.Members.Insert(index, item);
                }
            }
        }
        public static void UpdateShownVariables(DataUiGrid grid, IElement element)
        {
            grid.Categories.Clear();

            List<MemberCategory> categories = new List<MemberCategory>();
            var defaultCategory = new MemberCategory("Variables");
            defaultCategory.FontSize = 14;
            categories.Add(defaultCategory);

            CreateInstanceMembersForVariables(element, defaultCategory);

            foreach (var category in categories)
            {
                const byte brightness = 227;
                category.SetAlternatingColors(new SolidColorBrush(Color.FromRgb(brightness, brightness, brightness)), Brushes.Transparent);

                grid.Categories.Add(category);
            }

            grid.Refresh();

        }
示例#4
0
        internal static void RefreshGrid(DataUiGrid grid)
        {
            if (RefreshesToSkip > 0)
            {
                RefreshesToSkip--;
            }
            else
            {
                grid.Refresh();
            }

            foreach (var category in grid.Categories)
            {
                List<InstanceMember> membersToRefresh = new List<InstanceMember>();

                foreach (DataGridItem instanceMember in category.Members)
                {
                    bool shouldRefresh = instanceMember.CustomOptions.Count != 0 &&
                        instanceMember.TypeConverter != null;

                    if (shouldRefresh)
                    {
                        instanceMember.RefreshOptions();
                        membersToRefresh.Add(instanceMember);
                    }
                }

                bool shouldSort = membersToRefresh.Count != 0;

                foreach (var item in membersToRefresh)
                {
                    var index = category.Members.IndexOf(item);
                    category.Members.Remove(item);
                    category.Members.Insert(index, item);
                }
            }
        }
示例#5
0
        private void RefreshDataGrid(ElementSave element, StateSave state, InstanceSave instance, bool force = false)
        {
            bool hasChangedObjectShowing = element != mLastElement || instance != mLastInstance || state != mLastState ||
                                           force;


            if (hasChangedObjectShowing)
            {
                List <MemberCategory> categories = GetCategories(element, state, instance);
                Application.DoEvents();
                SimultaneousCalls++;
                lock (lockObject)
                {
                    if (SimultaneousCalls > 1)
                    {
                        SimultaneousCalls--;
                        return;
                    }
                    records.Add("in");

                    mVariablesDataGrid.Instance = SelectedState.Self.SelectedStateSave;

                    mVariablesDataGrid.Visibility = System.Windows.Visibility.Hidden;

                    mVariablesDataGrid.Categories.Clear();

                    // There's a bug here where drag+dropping a new instance will create
                    // duplicate UI members.  I am going to deal with it now because it is


                    foreach (var category in categories)
                    {
                        // We used to do this:
                        // Application.DoEvents();
                        // That made things go faster,
                        // but it made the "lock" not work, which could make duplicate UI show up.
                        mVariablesDataGrid.Categories.Add(category);
                        if (SimultaneousCalls > 1)
                        {
                            SimultaneousCalls--;
                            // EARLY OUT!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                            return;
                        }
                    }
                }

                SimultaneousCalls--;
                Application.DoEvents();

                mVariablesDataGrid.Visibility = System.Windows.Visibility.Visible;
            }
            else
            {
                // let's see if any variables have been added/removed
                var categories = GetCategories(element, state, instance);

                foreach (var newCategory in categories)
                {
                    // let's see if any variables have changed
                    var oldCategory = mVariablesDataGrid.Categories.FirstOrDefault(item => item.Name == newCategory.Name);

                    if (oldCategory != null && DoCategoriesDiffer(oldCategory.Members, newCategory.Members))
                    {
                        int index = mVariablesDataGrid.Categories.IndexOf(oldCategory);

                        mVariablesDataGrid.Categories.RemoveAt(index);
                        mVariablesDataGrid.Categories.Insert(index, newCategory);
                    }
                }
            }


            mVariablesDataGrid.Refresh();
        }
示例#6
0
        /// <summary>
        /// Refreshes the property grid for the argument element, state, and instance. This will only refresh the grid
        /// if the element, state, or instance values have changed since the last time this function was called, or if
        /// force is true.
        /// </summary>
        /// <param name="element">The element to display. The properties on this element may not be displayed if the instance is not null.</param>
        /// <param name="state">The state to display.</param>
        /// <param name="instance">The instance to display. May be null.</param>
        /// <param name="force">Whether to refresh even if the element, state, and instance have not changed.</param>
        private void RefreshDataGrid(ElementSave element, StateSave state, StateSaveCategory category, InstanceSave instance,
                                     BehaviorSave behaviorSave, bool force = false)
        {
            bool hasChangedObjectShowing = element != mLastElement ||
                                           instance != mLastInstance ||
                                           state != mLastState ||
                                           category != mLastCategory ||
                                           force;

            var hasCustomState = SelectedState.Self.CustomCurrentStateSave != null;

            if (hasCustomState)
            {
                hasChangedObjectShowing = false;
            }

            mVariablesDataGrid.IsInnerGridEnabled = !hasCustomState;

            var categories = GetMemberCategories(element, state, category, instance);

            if (hasChangedObjectShowing)
            {
                // UI is fast, I dont' think we need this....
                //Application.DoEvents();
                SimultaneousCalls++;
                lock (lockObject)
                {
                    if (SimultaneousCalls > 1)
                    {
                        SimultaneousCalls--;
                        return;
                    }
                    records.Add("in");

                    mVariablesDataGrid.Instance = SelectedState.Self.SelectedStateSave;

                    mVariablesDataGrid.Categories.Clear();

                    // There's a bug here where drag+dropping a new instance will create
                    // duplicate UI members.  I am going to deal with it now because it is


                    foreach (var memberCategory in categories)
                    {
                        // We used to do this:
                        // Application.DoEvents();
                        // That made things go faster,
                        // but it made the "lock" not work, which could make duplicate UI show up.
                        mVariablesDataGrid.Categories.Add(memberCategory);
                        if (SimultaneousCalls > 1)
                        {
                            SimultaneousCalls--;
                            // EARLY OUT!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
                            return;
                        }
                    }
                }

                SimultaneousCalls--;
            }
            else
            {
                foreach (var newCategory in categories)
                {
                    // let's see if any variables have changed
                    var oldCategory = mVariablesDataGrid.Categories.FirstOrDefault(item => item.Name == newCategory.Name);

                    if (oldCategory != null && DoCategoriesDiffer(oldCategory.Members, newCategory.Members))
                    {
                        int index = mVariablesDataGrid.Categories.IndexOf(oldCategory);

                        mVariablesDataGrid.Categories.RemoveAt(index);
                        mVariablesDataGrid.Categories.Insert(index, newCategory);
                    }
                }
            }

            RefreshErrors(element);

            RefreshStateLabel(element, category, state);

            RefreshBehaviorUi(behaviorSave);

            mVariablesDataGrid.Refresh();
        }
        public static void UpdateShownVariables(DataUiGrid grid, NamedObjectSave instance, IElement container)
        {
            grid.Categories.Clear();

            List<MemberCategory> categories = new List<MemberCategory>();
            var defaultCategory = new MemberCategory("Variables");
            defaultCategory.FontSize = 14;
            categories.Add(defaultCategory);

            AssetTypeInfo ati = instance.GetAssetTypeInfo();

            // not sure if this is needed:
            if (instance.TypedMembers.Count == 0)
            {
                instance.UpdateCustomProperties();
            }

            for (int i = 0; i < instance.TypedMembers.Count; i++)
            {

                TypedMemberBase typedMember = instance.TypedMembers[i];
                InstanceMember instanceMember = CreateInstanceMember(instance, container, typedMember, ati);

                var categoryToAddTo = GetOrCreateCategoryToAddTo(categories, ati, typedMember);

                if (instanceMember != null)
                {
                    categoryToAddTo.Members.Add(instanceMember);
                }
            }

            if (ati != null)
            {
                SortCategoriesAndMembers(ref categories, ati);
            }

            if (defaultCategory.Members.Count == 0)
            {
                categories.Remove(defaultCategory);
            }
            else if(categories.Count != 1)
            {
                defaultCategory.Name = "Other Variables";
            }

            if (categories.Count != 0)
            {
                // "Name" shoul be the very first property:
                var nameCategory = CreateNameInstanceMember(instance);
                //categories.Add(nameCategory);
                categories.Insert(0, nameCategory);
                //categories.First().Members.Insert(0, nameInstanceMember);
            }

            // skip the first category in putting the alternating colors:
            for (int i = 0; i < categories.Count; i++)
            {
                var category = categories[i];
                if (i != 0)
                {
                    const byte brightness = 227;
                    category.SetAlternatingColors(new SolidColorBrush(Color.FromRgb(brightness, brightness, brightness)), Brushes.Transparent);
                }
                grid.Categories.Add(category);
            }
            grid.Refresh();
        }