Exemple #1
0
        public IList <VisualUnit> GetAllDescendantsOfUnit(VisualUnit unit)
        {
            var descendants = new List <VisualUnit>();

            // descendants.Add(unit);

            var visited = new Dictionary <VisualUnit, bool>();


            descendants.AddRange(GetDescendantsOfUnit(unit, visited));
            return(descendants);
        }
Exemple #2
0
        public void Connect(VisualUnit source, string sourcePort, VisualUnit sink, string sinkPort)
        {
            if (source != null && source != null)
            {
                var sourceConnector = source.Connectors.FirstOrDefault(c => c.Name == sourcePort);
                var sinkConnector   = sink.Connectors.FirstOrDefault(c => c.Name == sinkPort);

                if (sourceConnector != null && sinkConnector != null)
                {
                    var newCon = new Connection()
                    {
                        Source = sourceConnector, Sink = sinkConnector
                    };
                    sourceConnector.IsConnected = true;
                    sinkConnector.IsConnected   = true;

                    newCon.UpdatePathGeometry();
                    Connections.Add(newCon);
                }
            }
        }
Exemple #3
0
        IList <VisualUnit> GetDescendantsOfUnit(VisualUnit unit, Dictionary <VisualUnit, bool> visited)
        {
            var descendants = new List <VisualUnit>();

            foreach (var outgoing in GetAllOutputStreams(unit))
            {
                if (!visited.ContainsKey(outgoing.Sink.Owner))
                {
                    descendants.Add(outgoing.Sink.Owner);
                    visited.Add(outgoing.Sink.Owner, true);
                }
            }

            foreach (var descendant in descendants.ToArray())
            {
                var otherNodes = GetDescendantsOfUnit(descendant, visited);
                descendants.AddRange(otherNodes);
            }

            return(descendants);
        }
Exemple #4
0
 public IList <Connection> GetAllOutputStreams(VisualUnit unit)
 {
     return(Connections.Where(c => c.Source.Owner == unit).ToList());
 }