예제 #1
0
 private void ResolveFromParent(BcsExpressionNode parentNode)
 {
     foreach (var childNode in parentNode.EnumerateChildNodes())
     {
         childNode.ParentNode = parentNode;
     }
 }
예제 #2
0
        private void AddToTree(BcsExpressionNode node, MenuItem item)
        {
            //ISSUE: make dedicated function for errors
            foreach (var error in node.Errors)
            {
                item.NodeErrors.Add(error.Message);
            }

            var parentItem = NodeCache[node.ParentNode.UniqueId];

            parentItem.Items.Add(item);
            NodeCache.Add(node.UniqueId, item);
        }
예제 #3
0
        public void Visit(BcsExpressionNode node)
        {
            if (node is BcsAtomicAgentNode)
            {
                VisitAgent(node as BcsAtomicAgentNode);
            }
            else if (node is BcsAgentStateNode)
            {
                VisitAgentState(node as BcsAgentStateNode);
            }
            else if (node is BcsComponentNode)
            {
                VisitComponent(node as BcsComponentNode);
            }
            else if (node is BcsComplexNode)
            {
                VisitComplex(node as BcsComplexNode);
            }
            else if (node is BcsReactantNode)
            {
                VisitReactant(node as BcsReactantNode);
            }
            else if (node is BcsReactionNode)
            {
                VisitReaction(node as BcsReactionNode);
            }
            else if(node is BcsLocationNode)
            {
                VisitLocation(node as BcsLocationNode);
            }
            else
            {
                VisitDefault(node);
            }

            var children = node.EnumerateChildNodes().ToList();

            foreach (var childNode in children)
            {
                Visit(childNode);
            }
        }
예제 #4
0
        protected override void VisitDefault(BcsExpressionNode node)
        {
            var item = new MenuItem() { Title = $"Unknown" };

            AddToTree(node, item);
        }
예제 #5
0
 protected override void VisitDefault(BcsExpressionNode node)
 {
     ResolveFromParent(node);
 }
예제 #6
0
 protected abstract void VisitDefault(BcsExpressionNode node);