Inheritance: BcsEntityNode
Example #1
0
        private void CreateAtomicAgents()
        {
            var atomicAgents = DefinitionFile.Entities.Where(e => !e.States.SourceText.IsEmptyOrWhitespace());

            foreach (var agetEntity in atomicAgents)
            {
                var states = agetEntity.States.SourceText.Split(',')
                    .Select(s => s.Trim());

                var agent = new BcsAtomicAgentNode()
                {
                    Name = agetEntity.Id
                };
                agent.AllStates.AddRange(states.Select(s => new BcsAgentStateNode { Name = s }));

                DefinitionFile.AtomicAgents.Add(agent);
            }
        }
Example #2
0
        public static UIElement CreateAgentGrid(BcsAtomicAgentNode agent)
        {
            var gridBorder = new Border
            {
                Margin = new Thickness(5),
                BorderThickness = new Thickness(3),
                CornerRadius = new CornerRadius(3),
                BorderBrush = Brushes.LightBlue
            };

            var grid = new Grid
            {
                Background = Brushes.LightBlue,
            };

            gridBorder.Child = grid;

            AddRowControlToGrid(grid, new Label { Content = $"Agent: {agent.Name}" });
            AddRowControlToGrid(grid, new Label { Content = $"Required state: {agent.CurrentState?.Name ?? "-"}" });

            string possibleStatesText = $"Possible states: {string.Join(", ", agent.AllStates.Select(agentState => agentState.Name ?? string.Empty))}";
            AddRowControlToGrid(grid, new Label { Content = possibleStatesText });

            return gridBorder;
        }
Example #3
0
        protected override void VisitAgent(BcsAtomicAgentNode bcsAtomicAgent)
        {
            var item = new MenuItem() { Title = $"Agent: {bcsAtomicAgent.Name}{{{bcsAtomicAgent?.CurrentState?.Name ?? ""}}}" };

            AddToTree(bcsAtomicAgent, item);
        }
 protected override void VisitAgent(BcsAtomicAgentNode bcsAtomicAgent)
 {
     ResolveFromParent(bcsAtomicAgent);
 }
 protected abstract void VisitAgent(BcsAtomicAgentNode bcsAtomicAgent);
Example #6
0
        private void CreateComponents()
        {
            var components = DefinitionFile.Entities.Where(e => e.States.SourceText.IsEmptyOrWhitespace() && !e.Composition.SourceText.Contains("."));

            foreach (var component in components)
            {
                var componentNode = new BcsComponentNode()
                {
                    Name = component.Id
                };

                if (!component.Composition.SourceText.IsEmptyOrWhitespace())
                {
                    var componentAgents = component.Composition.SourceText.Split('|').Select(name =>
                    {
                        name = name.Trim();

                        var matchingAgent = DefinitionFile.AtomicAgents.SingleOrDefault(agent => agent.Name == name);
                        if (matchingAgent == null)
                        {
                            componentNode.Errors.Add(new NodeError($"Failed to find matching agent named {name} in the definition file."));
                            var dummyAgent = new BcsAtomicAgentNode() { Name = name };
                            DefinitionFile.AtomicAgents.Add(dummyAgent);
                            return dummyAgent;
                        }
                        return matchingAgent;
                    }).ToList();

                    componentNode.AtomicAgents.AddRange(componentAgents);
                }

                DefinitionFile.Components.Add(componentNode);
            }
        }