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);
}
}
}
}