public QueryStatus QueryStatus(IGuidanceExtension feature) { var status = new QueryStatus { Visible = false, Enabled = false }; if (feature == null) { return(status); } // // First, let's check to see if our feature has a workflow // if (feature.GuidanceWorkflow != null) { var associatedActions = feature.GuidanceWorkflow.Successors .Traverse(node => node.Successors) .OfType <IGuidanceAction>() .Where(activity => activity.LaunchPoints.Contains(launchPointName)) .ToArray(); // If there are no associated actions, it's visible + enabled. if (!associatedActions.Any()) { status.Enabled = status.Visible = true; } else { var hasAvailableActions = associatedActions.Any(action => action.State == NodeState.Enabled); status.Visible = status.Enabled = hasAvailableActions; } } else { // // If we don't have a workflow, look at the "active" workflow // if (feature.GuidanceManager != null && feature.GuidanceManager.ActiveGuidanceExtension != null && feature.GuidanceManager.ActiveGuidanceExtension.GuidanceWorkflow != null) { status.Enabled = status.Visible = true; var associatedActions = feature.GuidanceManager.ActiveGuidanceExtension.GuidanceWorkflow.Successors .Traverse(node => node.Successors) .OfType <IGuidanceAction>() .Where(activity => activity.LaunchPoints.Contains(launchPointName)) .ToArray(); // If there are no associated actions, it's visible + enabled. if (!associatedActions.Any()) { status.Enabled = status.Visible = true; } else { var hasAvailableActions = associatedActions.Any(action => action.State == NodeState.Enabled); status.Visible = status.Enabled = hasAvailableActions; } } } return(status); }
public QueryStatus QueryStatus(IGuidanceExtension feature) { var status = new QueryStatus { Visible = false, Enabled = false }; if (feature == null) { return status; } // // First, let's check to see if our feature has a workflow // if (feature.GuidanceWorkflow != null) { var associatedActions = feature.GuidanceWorkflow.Successors .Traverse(node => node.Successors) .OfType<IGuidanceAction>() .Where(activity => activity.LaunchPoints.Contains(launchPointName)) .ToArray(); // If there are no associated actions, it's visible + enabled. if (!associatedActions.Any()) { status.Enabled = status.Visible = true; } else { var hasAvailableActions = associatedActions.Any(action => action.State == NodeState.Enabled); status.Visible = status.Enabled = hasAvailableActions; } } else { // // If we don't have a workflow, look at the "active" workflow // if (feature.GuidanceManager != null && feature.GuidanceManager.ActiveGuidanceExtension != null && feature.GuidanceManager.ActiveGuidanceExtension.GuidanceWorkflow != null) { status.Enabled = status.Visible = true; var associatedActions = feature.GuidanceManager.ActiveGuidanceExtension.GuidanceWorkflow.Successors .Traverse(node => node.Successors) .OfType<IGuidanceAction>() .Where(activity => activity.LaunchPoints.Contains(launchPointName)) .ToArray(); // If there are no associated actions, it's visible + enabled. if (!associatedActions.Any()) { status.Enabled = status.Visible = true; } else { var hasAvailableActions = associatedActions.Any(action => action.State == NodeState.Enabled); status.Visible = status.Enabled = hasAvailableActions; } } } return status; }