示例#1
0
        public PropertyTemplate(BinTreePropertyViewModel viewModel)
        {
            this.Name = viewModel.Name;
            this.Type = viewModel.TreeProperty.Type;

            if (viewModel is BinTreeContainerViewModel containerViewModel)
            {
                this.PrimaryType = (containerViewModel.TreeProperty as BinTreeContainer).PropertiesType;
            }
            else if (viewModel is BinTreeUnorderedContainerViewModel unorderedContainerViewModel)
            {
                this.PrimaryType = (unorderedContainerViewModel.TreeProperty as BinTreeContainer).PropertiesType;
            }
            else if (viewModel is BinTreeMapViewModel mapViewModel)
            {
                BinTreeMap map = mapViewModel.TreeProperty as BinTreeMap;

                this.PrimaryType   = map.KeyType;
                this.SecondaryType = map.ValueType;
            }
            else if (viewModel is BinTreeOptionalViewModel optionalViewModel)
            {
                BinTreeOptional optional = optionalViewModel.TreeProperty as BinTreeOptional;

                this.PrimaryType = optional.ValueType;
            }
            else if (viewModel is BinTreeStructureViewModel structureViewModel)
            {
                this.MetaClass = structureViewModel.MetaClass;
            }
            else if (viewModel is BinTreeEmbeddedViewModel embeddedViewModel)
            {
                this.MetaClass = embeddedViewModel.MetaClass;
            }
        }
示例#2
0
        private async void OnBinTreeObjectAddItem(object sender, RoutedEventArgs e)
        {
            if (e.Source is FrameworkElement frameworkElement &&
                frameworkElement.DataContext is BinTreeObjectViewModel objectViewModel)
            {
                NewBinPropertyViewModel dialogViewModel = await DialogHelper.ShowNewBinPropertyDialog(this.ViewModel.StructureTemplates);

                if (dialogViewModel is not null)
                {
                    BinTreeProperty          newProperty          = dialogViewModel.BuildProperty(objectViewModel.TreeObject);
                    BinTreePropertyViewModel newPropertyViewModel = BinTreeUtilities.ConstructTreePropertyViewModel(objectViewModel, newProperty);
                    if (newPropertyViewModel is not null)
                    {
                        objectViewModel.Children.Add(newPropertyViewModel);
                    }
                }
            }
        }
        private void DeserializeProperty(SerializationInfo info, BinPropertyType propertyType)
        {
            JsonSerializerSettings settings = new JsonSerializerSettings {
                TypeNameHandling = TypeNameHandling.All
            };

            this.Property = propertyType switch
            {
                BinPropertyType.None => JsonConvert.DeserializeObject <BinTreePropertyViewModel>(info.GetString("property"), settings),
                BinPropertyType.Bool => JsonConvert.DeserializeObject <BinTreeBoolViewModel>(info.GetString("property"), settings),
                BinPropertyType.SByte => JsonConvert.DeserializeObject <BinTreeSByteViewModel>(info.GetString("property"), settings),
                BinPropertyType.Byte => JsonConvert.DeserializeObject <BinTreeByteViewModel>(info.GetString("property"), settings),
                BinPropertyType.Int16 => JsonConvert.DeserializeObject <BinTreeInt16ViewModel>(info.GetString("property"), settings),
                BinPropertyType.UInt16 => JsonConvert.DeserializeObject <BinTreeUInt16ViewModel>(info.GetString("property"), settings),
                BinPropertyType.Int32 => JsonConvert.DeserializeObject <BinTreeInt32ViewModel>(info.GetString("property"), settings),
                BinPropertyType.UInt32 => JsonConvert.DeserializeObject <BinTreeUInt32ViewModel>(info.GetString("property"), settings),
                BinPropertyType.Int64 => JsonConvert.DeserializeObject <BinTreeInt64ViewModel>(info.GetString("property"), settings),
                BinPropertyType.UInt64 => JsonConvert.DeserializeObject <BinTreeUInt64ViewModel>(info.GetString("property"), settings),
                BinPropertyType.Float => JsonConvert.DeserializeObject <BinTreeFloatViewModel>(info.GetString("property"), settings),
                BinPropertyType.Vector2 => JsonConvert.DeserializeObject <BinTreeVector2ViewModel>(info.GetString("property"), settings),
                BinPropertyType.Vector3 => JsonConvert.DeserializeObject <BinTreeVector3ViewModel>(info.GetString("property"), settings),
                BinPropertyType.Vector4 => JsonConvert.DeserializeObject <BinTreeVector4ViewModel>(info.GetString("property"), settings),
                BinPropertyType.Matrix44 => JsonConvert.DeserializeObject <BinTreeMatrix44ViewModel>(info.GetString("property"), settings),
                BinPropertyType.Color => JsonConvert.DeserializeObject <BinTreeColorViewModel>(info.GetString("property"), settings),
                BinPropertyType.String => JsonConvert.DeserializeObject <BinTreeStringViewModel>(info.GetString("property"), settings),
                BinPropertyType.Hash => JsonConvert.DeserializeObject <BinTreeHashViewModel>(info.GetString("property"), settings),
                BinPropertyType.WadEntryLink => JsonConvert.DeserializeObject <BinTreeWadEntryLinkViewModel>(info.GetString("property"), settings),
                BinPropertyType.Container => JsonConvert.DeserializeObject <BinTreeContainerViewModel>(info.GetString("property"), settings),
                BinPropertyType.UnorderedContainer => JsonConvert.DeserializeObject <BinTreeUnorderedContainerViewModel>(info.GetString("property"), settings),
                BinPropertyType.Structure => JsonConvert.DeserializeObject <BinTreeStructureViewModel>(info.GetString("property"), settings),
                BinPropertyType.Embedded => JsonConvert.DeserializeObject <BinTreeEmbeddedViewModel>(info.GetString("property"), settings),
                BinPropertyType.ObjectLink => JsonConvert.DeserializeObject <BinTreeObjectLinkViewModel>(info.GetString("property"), settings),
                BinPropertyType.Optional => JsonConvert.DeserializeObject <BinTreeOptionalViewModel>(info.GetString("property"), settings),
                BinPropertyType.Map => JsonConvert.DeserializeObject <BinTreeMapViewModel>(info.GetString("property"), settings),
                BinPropertyType.BitBool => JsonConvert.DeserializeObject <BinTreeBitBoolViewModel>(info.GetString("property"), settings),
                _ => throw new NotImplementedException(),
            };
        }
 public BinTreePropertyViewModelDataWrapper(BinTreePropertyViewModel property)
 {
     this.Property = property;
 }