/// Adds a Navigation Item to the Navigation controller.
        /// </summary>
        /// <param name="number">Number of the Navigation Item.</param>
        /// <param name="alias">Alias of the Navigation Item.</param>
        /// <param name="idXML">IdXML of the Navigation Item.</param>
        /// <param name="agents">List of agents that can access to the Navigation Item.</param>
        /// <param name="classIUName">Class name of the Navigation Item.</param>
        /// <param name="iuName">Interaction unit name of the Navigation Item.</param>
        /// <param name="rolePath">Role path of the Navigation Item.</param>
        /// <param name="navigationalFilteringIdentity">Navigational filtering.</param>
        /// <param name="targetScenarioAlias">Alias of the target scenario.</param>
        /// <param name="idXMLTargetScenarioAlias">IdXML of the Target scenario</param>
        /// <param name="instanceAlias">Selected instance Alias</param>
        /// <param name="idXMLInstanceAlias">IdXML selected instance Alias</param>
        /// <param name="displaySetToTargetScenario">Display Set to be shown in the target scenario. Attributes separates by commas</param>
        /// <param name="attributesListForFormulas ">List of attributes needed for evaluating the enabling/disabling formulas.</param>
        /// <returns>NavigationItemController</returns>
        public NavigationItemController Add(
			int number,
			string alias,
			string idXML,
			string[] agents,
			string classIUName,
			string iuName,
			string rolePath,
			string navigationalFilteringIdentity,
			string targetScenarioAlias,
			string idXMLTargetScenarioAlias,
			string instanceAlias,
			string idXMLInstanceAlias,
			string displaySetToTargetScenario,
			List<KeyValuePair<string, string[]>> attributesListForFormulas,
			string alternateKeyName)
        {
            // Check the attributes for enabled formulas depending on the connected agent.
            List<string> lAttributesForFormulas = new List<string>();
            if (attributesListForFormulas != null && Logic.Agent.IsActiveFacet(agents))
            {
                foreach (KeyValuePair<string, string[]> lKeyPair in attributesListForFormulas)
                {
                    // Check the connected agent visibility.
                    if (Logic.Agent.IsActiveFacet(lKeyPair.Key))
                    {
                        foreach (string lAttribute in lKeyPair.Value)
                        {
                            // Avoid adding repeated elements.
                            if (!lAttributesForFormulas.Contains(lAttribute))
                            {
                                lAttributesForFormulas.Add(lAttribute);
                            }
                        }
                    }
                }
            }

            // Set the 'AnyNavigationItemEnabledByCondition' flag to true.
            if ((lAttributesForFormulas != null) && (lAttributesForFormulas.Count > 0))
            {
                AnyNavigationItemEnabledByCondition = true;
            }

            List<string> lAgents = new List<string>(agents);
            NavigationItemController lNavigationItem = new NavigationItemController(
                number,
                alias,
                idXML,
                lAgents,
                classIUName,
                iuName,
                rolePath,
                navigationalFilteringIdentity,
                targetScenarioAlias,
                idXMLTargetScenarioAlias,
                instanceAlias,
                idXMLInstanceAlias,
                displaySetToTargetScenario,
                lAttributesForFormulas,
                this,
                alternateKeyName);
            lNavigationItem.SelectedInstancesRequired += new EventHandler<SelectedInstancesRequiredEventArgs>(HandleNavigationItemSelectedInstancesRequired);
            lNavigationItem.ContextRequired += new EventHandler<ContextRequiredEventArgs>(HandleNavigationItemContextRequired);
            lNavigationItem.LaunchingScenario += new EventHandler<LaunchingScenarioEventArgs>(HandleNavigationItemLaunchingScenario);
            lNavigationItem.RefreshRequired += new EventHandler<RefreshRequiredEventArgs>(HandleNavigationItemRefreshRequired);
            mNavigationItems.Add(number, lNavigationItem);
            return lNavigationItem;
        }
        /// Adds a Navigation Item to the Navigation controller.
        /// </summary>
        /// <param name="number">Number of the Navigation Item.</param>
        /// <param name="alias">Alias of the Navigation Item.</param>
        /// <param name="idXML">IdXML of the Navigation Item.</param>
        /// <param name="agents">List of agents that can access to the Navigation Item.</param>
        /// <param name="classIUName">Class name of the Navigation Item.</param>
        /// <param name="iuName">Interaction unit name of the Navigation Item.</param>
        /// <param name="rolePath">Role path of the Navigation Item.</param>
        /// <param name="navigationalFilteringIdentity">Navigational filtering.</param>
        /// <param name="targetScenarioAlias">Alias of the target scenario.</param>
        /// <param name="idXMLTargetScenarioAlias">IdXML of the Target scenario</param>
        /// <param name="instanceAlias">Selected instance Alias</param>
        /// <param name="idXMLInstanceAlias">IdXML selected instance Alias</param>
        /// <param name="displaySetToTargetScenario">Display Set to be shown in the target scenario. Attributes separates by commas</param>
        /// <param name="attributesListForFormulas ">List of attributes needed for evaluating the enabling/disabling formulas.</param>
        /// <returns>NavigationItemController</returns>
        public NavigationItemController Add(
            int number,
            string alias,
            string idXML,
            string[] agents,
            string classIUName,
            string iuName,
            string rolePath,
            string navigationalFilteringIdentity,
            string targetScenarioAlias,
            string idXMLTargetScenarioAlias,
            string instanceAlias,
            string idXMLInstanceAlias,
            string displaySetToTargetScenario,
            List <KeyValuePair <string, string[]> > attributesListForFormulas,
            string alternateKeyName)
        {
            // Check the attributes for enabled formulas depending on the connected agent.
            List <string> lAttributesForFormulas = new List <string>();

            if (attributesListForFormulas != null && Logic.Agent.IsActiveFacet(agents))
            {
                foreach (KeyValuePair <string, string[]> lKeyPair in attributesListForFormulas)
                {
                    // Check the connected agent visibility.
                    if (Logic.Agent.IsActiveFacet(lKeyPair.Key))
                    {
                        foreach (string lAttribute in lKeyPair.Value)
                        {
                            // Avoid adding repeated elements.
                            if (!lAttributesForFormulas.Contains(lAttribute))
                            {
                                lAttributesForFormulas.Add(lAttribute);
                            }
                        }
                    }
                }
            }

            // Set the 'AnyNavigationItemEnabledByCondition' flag to true.
            if ((lAttributesForFormulas != null) && (lAttributesForFormulas.Count > 0))
            {
                AnyNavigationItemEnabledByCondition = true;
            }

            List <string>            lAgents         = new List <string>(agents);
            NavigationItemController lNavigationItem = new NavigationItemController(
                number,
                alias,
                idXML,
                lAgents,
                classIUName,
                iuName,
                rolePath,
                navigationalFilteringIdentity,
                targetScenarioAlias,
                idXMLTargetScenarioAlias,
                instanceAlias,
                idXMLInstanceAlias,
                displaySetToTargetScenario,
                lAttributesForFormulas,
                this,
                alternateKeyName);

            lNavigationItem.SelectedInstancesRequired += new EventHandler <SelectedInstancesRequiredEventArgs>(HandleNavigationItemSelectedInstancesRequired);
            lNavigationItem.ContextRequired           += new EventHandler <ContextRequiredEventArgs>(HandleNavigationItemContextRequired);
            lNavigationItem.LaunchingScenario         += new EventHandler <LaunchingScenarioEventArgs>(HandleNavigationItemLaunchingScenario);
            lNavigationItem.RefreshRequired           += new EventHandler <RefreshRequiredEventArgs>(HandleNavigationItemRefreshRequired);
            mNavigationItems.Add(number, lNavigationItem);
            return(lNavigationItem);
        }