Exemplo n.º 1
0
        private void SaveButton_Click(object sender, RoutedEventArgs e)
        {
            foreach (MetadataViewModel metadata in _metadata.Where(md => md.OriginalMetadataName != md.MetadataName))
            {
                NodeProxy.RenameNodeMetadata(metadata.GetContext(), metadata.MetadataName);
                _metadataNames.Remove(metadata.OriginalMetadataName);
                _metadataNames.Add(metadata.MetadataName);
                metadata.UpdateName();
            }

            if (HasChanges)
            {
                TypeManager          typeManager   = IoC.IoCContainer.GetInjectionInstance().GetInstance <TypeManager>();
                IMetadataTypeProxy[] metaDataTypes = typeManager.GetAllMetadataTypes();

                foreach (KeyValuePair <string, bool> changedMetadata in _changes.Where(changed => changed.Value == true))
                {
                    //only update the changed items
                    try
                    {
                        MetadataViewModel metadata = _metadata.Single(m => m.MetadataName.ToLower() == changedMetadata.Key.ToLower());
                        if (metadata != null)
                        {
                            NodeProxy.SetNodeMetadata(metadata.GetContext(), metadata.MetadataValue, metaDataTypes.Single(md => md.Id == metadata.MetadataTypeUid));
                        }
                    }
                    catch (Exception)
                    {
                        //ignore any errors if the changed metadata isn't found
                    }
                }

                _changes.Clear();

                foreach (MetadataViewModel deletedItem in _deletedItems)
                {
                    NodeProxy.DeleteNodeMetadata(deletedItem.GetContext());
                }

                _deletedItems.Clear();
            }

            SaveButton.IsEnabled = false;
            ResetOriginals();
            ClearChangeIndicator();
        }