Microsoft.ManagementConsole.View.DoAction C# (CSharp) Method

DoAction() private method

private DoAction ( int actionId, bool selectionDependent, int selectionId, IRequestStatus requestStatus ) : void
actionId int
selectionDependent bool
selectionId int
requestStatus IRequestStatus
return void
        private void DoAction(int actionId, bool selectionDependent, int selectionId, IRequestStatus requestStatus)
        {
            ActionsPaneItem itemById = null;
            bool flag = false;
            if (selectionDependent)
            {
                itemById = this.SelectionData.ActionsPaneItems.GetItemById(actionId);
                if (itemById == null)
                {
                    itemById = this.SelectionData.ActionsPaneHelpItems.GetItemById(actionId);
                }
            }
            else
            {
                itemById = this.ActionsPaneItems.GetItemById(actionId);
                if (itemById == null)
                {
                    itemById = this.ModeActionsPaneItems.GetItemById(actionId);
                    flag = true;
                }
            }
            ActionBase base2 = itemById as ActionBase;
            if (base2 == null)
            {
                TraceSources.ExecutiveSource.TraceEvent(TraceEventType.Warning, 12, "The request action with id {0} does not exist for view {1}.", new object[] { actionId.ToString(CultureInfo.CurrentUICulture), this._viewInstanceId });
            }
            else if (selectionDependent && ((this.SelectionData.SelectionCardinality == SelectionCardinality.None) || (selectionId != this.SelectionData.Id)))
            {
                TraceSources.ExecutiveSource.TraceEvent(TraceEventType.Warning, 12, "Action {0} in view {1} selection id {2} ignored since selection has changed.", new object[] { actionId, this._viewInstanceId, selectionId });
            }
            else
            {
                SyncAction action = base2 as SyncAction;
                if (action != null)
                {
                    SyncStatus status = new SyncStatus(requestStatus);
                    action.RaiseTriggeredEvent(this, status);
                    if (selectionDependent)
                    {
                        this.OnSyncSelectionAction(action, status);
                    }
                    else if (flag)
                    {
                        this.OnSyncModeAction(action, status);
                    }
                    else
                    {
                        this.OnSyncAction(action, status);
                    }
                }
                else
                {
                    Action action2 = (Action) base2;
                    AsyncStatus status2 = new AsyncStatus(requestStatus);
                    action2.RaiseTriggeredEvent(this, status2);
                    if (selectionDependent)
                    {
                        this.OnSelectionAction(action2, status2);
                    }
                    else if (flag)
                    {
                        this.OnModeAction(action2, status2);
                    }
                    else
                    {
                        this.OnAction(action2, status2);
                    }
                }
            }
        }