Microsoft.ManagementConsole.NodeSyncManager.OnNodeSharedDataChanged C# (CSharp) Method

OnNodeSharedDataChanged() private method

private OnNodeSharedDataChanged ( object sender, WritableSharedDataChangedEventArgs e ) : void
sender object
e WritableSharedDataChangedEventArgs
return void
        internal void OnNodeSharedDataChanged(object sender, WritableSharedDataChangedEventArgs e)
        {
            if (!this._initialized)
            {
                throw new Exception(Microsoft.ManagementConsole.Internal.Utility.LoadResourceString(Microsoft.ManagementConsole.Internal.Strings.NodeSyncManagerNotInitialized));
            }
            ScopeNode node = sender as ScopeNode;
            if (node == null)
            {
                throw new ArgumentException(Microsoft.ManagementConsole.Internal.Utility.LoadResourceString(Microsoft.ManagementConsole.Internal.Strings.NodeSyncManagerOnNodeSharedDataChangedScopeNodeExpected), "sender");
            }
            WritableSharedDataItem sharedDataItem = e.SharedDataItem;
            if (sharedDataItem == null)
            {
                throw new Exception(Microsoft.ManagementConsole.Internal.Utility.LoadResourceString(Microsoft.ManagementConsole.Internal.Strings.NodeSyncManagerOnNodeSharedDataChangedWritableSharedDataItemExpected));
            }
            bool flag = false;
            UpdateScopeNodeCommand command = new UpdateScopeNodeCommand();
            command.NodeData = (ScopeNodeData) node.Data;
            ActionsPaneRootData data = new ActionsPaneRootData();
            data.Write(node.ActionsPaneItems.Data);
            command.Actions = data;
            data = new ActionsPaneRootData();
            data.Write(node.ActionsPaneHelpItems.Data);
            command.HelpActions = data;
            switch (e.ChangeType)
            {
                case WritableSharedDataChangeType.Add:
                case WritableSharedDataChangeType.Modify:
                {
                    DataFormatConfiguration configuration = new DataFormatConfiguration();
                    configuration.ClipboardFormatId = sharedDataItem.ClipboardFormatId;
                    configuration.RequiresQuery = sharedDataItem.RequiresCallback;
                    SharedDataObjectUpdate update = new SharedDataObjectUpdate();
                    if (!sharedDataItem.RequiresCallback)
                    {
                        ClipboardData data2 = new ClipboardData();
                        data2.ClipboardFormatId = sharedDataItem.ClipboardFormatId;
                        data2.SetValue(sharedDataItem.GetData());
                        ClipboardData[] updatedData = new ClipboardData[] { data2 };
                        update.SetUpdatedData(updatedData);
                    }
                    command.UpdatedSharedData = update;
                    if (e.ChangeType == WritableSharedDataChangeType.Add)
                    {
                        DataFormatConfiguration[] addedFormats = new DataFormatConfiguration[] { configuration };
                        command.UpdatedSharedData.SetAddedFormats(addedFormats);
                    }
                    else
                    {
                        DataFormatConfiguration[] changedFormats = new DataFormatConfiguration[] { configuration };
                        command.UpdatedSharedData.SetChangedFormats(changedFormats);
                    }
                    flag = true;
                    break;
                }
                case WritableSharedDataChangeType.Remove:
                    command.UpdatedSharedData.SetRemovedClipboardFormatIds(new string[] { sharedDataItem.ClipboardFormatId });
                    flag = true;
                    break;
            }
            if (flag)
            {
                this._snapInPlatform.ProcessCommand(command);
            }
        }