Exemple #1
0
        /// <summary>
        /// 设置图元是否可用
        /// </summary>
        /// <param name="list">遍历过的图元链表</param>
        /// <param name="graphElement">当前图元</param>
        /// <param name="eventNode">事件结点</param>
        /// <param name="enable">图元是否可用</param>
        protected virtual void ReBindEventNode(List <GraphElement> list, GraphElement graphElement, EventGraphElement eventNode, bool enable)
        {
            if (!list.Contains(graphElement)) // 还没有遍历过当前图元
            {
                GraphManager graphManager = data as GraphManager;
                DataManager  dataManager  = graphManager.CurrentFlowChartManager.CurrentDataManager;

                if (graphElement is SlotContainer) // 该图元是插槽容器
                {
                    SlotContainer slotContainer = graphElement as SlotContainer;

                    if (!enable && slotContainer.EventNode != null && dataManager.IsConnect(slotContainer.EventNode, slotContainer)) // 不需要更新当前图元的事件结点
                    {
                    }
                    else
                    {
                        list.Add(slotContainer);
                        slotContainer.Enable    = enable;
                        slotContainer.EventNode = eventNode;

                        foreach (GraphElement g in dataManager.GetNextGraphElements(graphElement))
                        {
                            ReBindEventNode(list, g, eventNode, enable);
                        }
                    }
                }
                else if (graphElement is ConnectorContainer) // 该图元是连接线控制点容器
                {
                    ConnectorContainer line = graphElement as ConnectorContainer;

                    if (!enable && line.EventNode != null && dataManager.IsConnect(line.EventNode, line)) // 不需要更新当前图元的事件结点
                    {
                    }
                    else
                    {
                        list.Add(line);
                        line.Enable    = enable;
                        line.EventNode = eventNode;

                        foreach (GraphElement g in dataManager.GetNextGraphElements(graphElement))
                        {
                            ReBindEventNode(list, g, eventNode, enable);
                        }
                    }
                }
            }
        }