Example #1
0
        private void HandleElementBaseType(ElementSave asElementSave)
        {
            string newValue = asElementSave.BaseType;

            // kill the old instances:
            asElementSave.Instances.RemoveAll(item => item.DefinedByBase);

            if (StandardElementsManager.Self.IsDefaultType(newValue))
            {
                StateSave defaultStateSave = StandardElementsManager.Self.GetDefaultStateFor(newValue);

                asElementSave.Initialize(defaultStateSave);
            }
            else
            {
                var baseElement = ObjectFinder.Self.GetElementSave(asElementSave.BaseType);

                StateSave stateSave = new StateSave();
                if (baseElement != null)
                {
                    // This copies the values to this explicitly, which we don't want
                    //FillWithDefaultRecursively(baseElement, stateSave);


                    foreach (var instance in baseElement.Instances)
                    {
                        var derivedInstance = instance.Clone();
                        derivedInstance.DefinedByBase = true;
                        asElementSave.Instances.Add(derivedInstance);
                    }
                    asElementSave.Initialize(stateSave);
                }
            }
            const bool fullRefresh = true;

            // since the type might change:
            GumCommands.Self.GuiCommands.RefreshElementTreeView(asElementSave);
            PropertyGridManager.Self.RefreshUI(fullRefresh);
            StateTreeViewManager.Self.RefreshUI(asElementSave);
        }