/// <summary>
        /// Returns true if the Detail will be shown in the Tree
        /// </summary>
        /// <param name="lDetail"></param>
        /// <returns></returns>
        private bool CalculateShowInTree(IDetailController detail)
        {
            // If it has no role path, won't be shown in the Tree
            ExchangeInfoNavigation lNavInfo = detail.ExchangeInformation as ExchangeInfoNavigation;

            if (lNavInfo != null && lNavInfo.RolePath.Equals(""))
            {
                return(false);
            }

            // If it is a Master Detail and its Master is a Population with Filters, won't be shown in the Tree
            IUMasterDetailController lMasterDetail = detail as IUMasterDetailController;

            if (lMasterDetail != null)
            {
                IUPopulationController lPopulationController = lMasterDetail.Master as IUPopulationController;
                if (lPopulationController != null && lPopulationController.Filters.Count > 0)
                {
                    return(false);
                }
                else
                {
                    return(true);
                }
            }

            // It is not a Master Detail and its role path is not empty
            return(false);
        }
        /// <summary>
        /// Process the RefreshDetailRequired event for any detail.
        /// </summary>
        /// <param name="sender"></param>
        protected void ProcessDetailRefreshDetailRequired(object sender)
        {
            IDetailController lDetail = sender as IDetailController;

            if (lDetail == null)
            {
                return;
            }

            // Update the detail.
            ExchangeInfoNavigation lInfoNav;
            ExchangeInfo           lExchgInfo = lDetail.ExchangeInformation;

            lInfoNav = new ExchangeInfoNavigation(lExchgInfo as ExchangeInfoNavigation);
            if (Master.InstancesSelected != null && Master.InstancesSelected.Count == 1)
            {
                lInfoNav.SelectedOids = Master.InstancesSelected;
            }
            else
            {
                lInfoNav.SelectedOids = null;
            }
            lDetail.ExchangeInformation = lInfoNav;
            ClearLastOids(lDetail as IUQueryController);
            lDetail.UpdateData(true);
        }
 /// <summary>
 /// Adds a detail unit to the interaction unit.
 /// </summary>
 /// <param name="controllerDetail">Detail controller</param>
 /// <returns>IUController</returns>
 public IDetailController AddDetail(IDetailController controllerDetail, string detailAlias, string idXMLDetailAlias)
 {
     Details.Add(controllerDetail);
     controllerDetail.RefreshMasterRequired += new EventHandler <RefreshRequiredMasterEventArgs>(HandleDetailRefreshMasterRequired);
     controllerDetail.DetailAlias            = detailAlias;
     controllerDetail.IdXMLDetailAlias       = idXMLDetailAlias;
     controllerDetail.RefreshDetailRequired += new EventHandler <EventArgs>(HandleDetailRefreshDetailRequired);
     controllerDetail.CloseMainScenario     += new EventHandler <EventArgs>(HandleCloseMainScenario);
     return(controllerDetail);
 }
 /// <summary>
 /// Initializes a new Tree node controller
 /// </summary>
 /// <param name="parentNodeId">Parent node identifier</param>
 /// <param name="id">Id</param>
 /// <param name="queryController">Detail Interface</param>
 /// <param name="instanceMasterController">Main Master Instance IU</param>
 /// <param name="isMainMaster">True if it is the Main Master</param>
 /// <param name="showGroupingNode">True if Grouping nodes must be shown</param>
 public TreeNodeController(string parentNodeId, string id, IDetailController queryController, IUInstanceController instanceMasterController, bool isMainMaster, bool showGroupingNode)
 {
     mRecursiveNodes  = new List <TreeNodeController>();
     Filters          = new FilterControllerList();
     mOriginalNode    = null;
     ParentNodeId     = parentNodeId;
     NodeId           = id;
     mIsMainMaster    = isMainMaster;
     ShowGroupingNode = showGroupingNode;
     ShowInTree       = CalculateShowInTree(queryController);
     FinalNodeID      = NodeId;
     InitializeNode(queryController);
 }
 /// <summary>
 ///  Initializes the nodes controller.
 /// </summary>
 private void InitializeNode(IDetailController queryController)
 {
     if (ShowInTree)
     {
         IUMasterDetailController masterDetailController = queryController as IUMasterDetailController;
         if (masterDetailController != null)
         {
             InitializeMasterDetailNode(masterDetailController, CalculateDetailsGroupingNode(masterDetailController));
         }
     }
     else
     {
         // It is a final node, will not be shown in the Tree.
         FinalNodeQueryController = queryController;
         Alias = CultureManager.TranslateString(FinalNodeQueryController.IdXMLDetailAlias, FinalNodeQueryController.DetailAlias);
     }
 }
        /// <summary>
        /// Initialize pagination state, for detail of this master.
        /// </summary>
        /// <param name="controller">Detail pattern controller.</param>
        /// <returns></returns>
        private bool ClearLastOids(IDetailController controller)
        {
            if (controller != null)
            {
                switch (controller.Context.ContextType)
                {
                case ContextType.Population:
                    IUPopulationController lPopulationController = controller as IUPopulationController;
                    if (lPopulationController != null)
                    {
                        if (lPopulationController.Context != null)
                        {
                            lPopulationController.Context.LastOids.Clear();
                            return(true);
                        }
                    }
                    return(false);

                case ContextType.MasterDetail:
                    IUMasterDetailController masterDetailController = controller as IUMasterDetailController;
                    if (masterDetailController != null)
                    {
                        ClearLastOids(masterDetailController.Master);

                        foreach (IDetailController lDetail in masterDetailController.Details)
                        {
                            if (!ClearLastOids(lDetail as IUMasterDetailController))
                            {
                                ClearLastOids(lDetail);
                            }
                        }
                        return(true);
                    }
                    break;

                default:
                    return(true);
                }
            }

            return(true);
        }
        /// <summary>
        /// Returns true if the Detail will be shown in the Tree
        /// </summary>
        /// <param name="lDetail"></param>
        /// <returns></returns>
        private bool CalculateShowInTree(IDetailController detail)
        {
            // If it has no role path, won't be shown in the Tree
            ExchangeInfoNavigation lNavInfo = detail.ExchangeInformation as ExchangeInfoNavigation;
            if (lNavInfo != null && lNavInfo.RolePath.Equals(""))
            {
                return false;
            }

            // If it is a Master Detail and its Master is a Population with Filters, won't be shown in the Tree
            IUMasterDetailController lMasterDetail = detail as IUMasterDetailController;
            if (lMasterDetail != null)
            {
                IUPopulationController lPopulationController = lMasterDetail.Master as IUPopulationController;
                if (lPopulationController != null && lPopulationController.Filters.Count > 0)
                {
                    return false;
                }
                else
                {
                    return true;
                }
            }

            // It is not a Master Detail and its role path is not empty
            return false;
        }
 /// <summary>
 /// Initializes a new Tree node controller
 /// </summary>
 /// <param name="parentNodeId">Parent node identifier</param>
 /// <param name="id">Id</param>
 /// <param name="queryController">Detail Interface</param>
 /// <param name="instanceMasterController">Main Master Instance IU</param>
 /// <param name="isMainMaster">True if it is the Main Master</param>
 /// <param name="showGroupingNode">True if Grouping nodes must be shown</param>
 public TreeNodeController(string parentNodeId, string id, IDetailController queryController, IUInstanceController instanceMasterController, bool isMainMaster, bool showGroupingNode)
 {
     mRecursiveNodes = new List<TreeNodeController>();
     Filters = new FilterControllerList();
     mOriginalNode = null;
     ParentNodeId = parentNodeId;
     NodeId = id;
     mIsMainMaster = isMainMaster;
     ShowGroupingNode = showGroupingNode;
     ShowInTree = CalculateShowInTree(queryController);
     FinalNodeID = NodeId;
     InitializeNode(queryController);
 }
 /// <summary>
 ///  Initializes the nodes controller.
 /// </summary>
 private void InitializeNode(IDetailController queryController)
 {
     if (ShowInTree)
     {
         IUMasterDetailController masterDetailController = queryController as IUMasterDetailController;
         if (masterDetailController != null)
             InitializeMasterDetailNode(masterDetailController, CalculateDetailsGroupingNode(masterDetailController));
     }
     else
     {
         // It is a final node, will not be shown in the Tree.
         FinalNodeQueryController = queryController;
         Alias = CultureManager.TranslateString(FinalNodeQueryController.IdXMLDetailAlias, FinalNodeQueryController.DetailAlias);
     }
 }
Esempio n. 10
0
 public void SetController(IDetailController uiController)
 {
     _uiController = uiController;
 }
        /// <summary>
        /// Initialize pagination state, for detail of this master.
        /// </summary>
        /// <param name="controller">Detail pattern controller.</param>
        /// <returns></returns>
        private bool ClearLastOids(IDetailController controller)
        {
            if (controller != null)
            {
                switch (controller.Context.ContextType)
                {
                    case ContextType.Population:
                        IUPopulationController lPopulationController = controller as IUPopulationController;
                        if (lPopulationController != null)
                        {
                            if (lPopulationController.Context != null)
                            {
                                lPopulationController.Context.LastOids.Clear();
                                return true;
                            }
                        }
                        return false;

                    case ContextType.MasterDetail:
                        IUMasterDetailController masterDetailController = controller as IUMasterDetailController;
                        if (masterDetailController != null)
                        {
                            ClearLastOids(masterDetailController.Master);

                            foreach (IDetailController lDetail in masterDetailController.Details)
                            {
                                if (!ClearLastOids(lDetail as IUMasterDetailController))
                                {
                                    ClearLastOids(lDetail);
                                }
                            }
                            return true;
                        }
                        break;
                    default:
                        return true;

                }
            }

            return true;
        }
 /// <summary>
 /// Adds a detail unit to the interaction unit.
 /// </summary>
 /// <param name="controllerDetail">Detail controller</param>
 /// <returns>IUController</returns>
 public IDetailController AddDetail(IDetailController controllerDetail, string detailAlias, string idXMLDetailAlias)
 {
     Details.Add(controllerDetail);
     controllerDetail.RefreshMasterRequired += new EventHandler<RefreshRequiredMasterEventArgs>(HandleDetailRefreshMasterRequired);
     controllerDetail.DetailAlias = detailAlias;
     controllerDetail.IdXMLDetailAlias = idXMLDetailAlias;
     controllerDetail.RefreshDetailRequired += new EventHandler<EventArgs>(HandleDetailRefreshDetailRequired);
     controllerDetail.CloseMainScenario += new EventHandler<EventArgs>(HandleCloseMainScenario);
     return controllerDetail;
 }