Ejemplo n.º 1
0
 protected virtual void OnNGraphChanged(TItem item, GraphEventType graphEventType)
 {
     if (_nGraphChanged != null)
     {
         _nGraphChanged(this, new GraphChangedEventArgs <TItem, TEdge>(this, GraphCursor.Create(this, item), graphEventType));
     }
 }
Ejemplo n.º 2
0
    public GraphEventArgs nextLevelArgs(System.Object lastSender, GraphEventType graphEvent, string appendString)
    {
        GraphEventArgs eventArgs = new GraphEventArgs(origin, lastSender, graphEvent, this.timeToLive - 1, this.message + "\n" + timeToLive + ": " + appendString);

        //Debug.Log(eventArgs.ToString());
        return(eventArgs);
    }
Ejemplo n.º 3
0
 public GraphEventArgs(System.Object origin, System.Object lastSender, GraphEventType graphEvent, int timeToLive, string message)
 {
     this.origin     = origin;
     this.lastSender = lastSender;
     this.GraphEvent = graphEvent;
     this.timeToLive = timeToLive;
     this.message    = message;
 }
Ejemplo n.º 4
0
 public virtual void VisitItems(
     GraphCursor <TItem, TEdge> graphCursor,
     Action <TItem> visit,
     GraphEventType eventType)
 {
     if (Visitor != null)
     {
         Visitor(graphCursor, visit, eventType);
     }
 }
Ejemplo n.º 5
0
        public static void DependencyVisitor <TSinkItem, TSinkEdge, TSourceItem, TSourceEdge> (GraphCursor <TSinkItem, TSinkEdge> sink, Action <TSinkItem> visit, GraphEventType eventType)
            where TSinkEdge : IEdge <TSinkItem>, TSinkItem
            where TSourceEdge : IEdge <TSourceItem>, TSourceItem
        {
            var graphPair = sink.Graph.Source <TSinkItem, TSinkEdge, TSourceItem, TSourceEdge> ();

            if (graphPair == null)
            {
                return;
            }

            var sourceGraph = graphPair.Source;
            var sourceItem  = sink.Graph.SourceItemOf <TSinkItem, TSinkEdge, TSourceItem, TSourceEdge> (sink.Cursor);

            if (sourceGraph == null || sourceItem == null)
            {
                return;
            }

            Registry.Pooled <GraphDepencencies <TSourceItem, TSourceEdge> > ()
            .VisitItems(
                GraphCursor.Create(sourceGraph, sourceItem),
                source => {
                if (graphPair.Source2Sink.ContainsKey(source))
                {
                    visit(graphPair.Get(source));
                }
            },
                eventType);
        }
Ejemplo n.º 6
0
        public static IEnumerable <TItem> DependsOn <TItem, TEdge> (this IGraph <TItem, TEdge> graph, TItem source, GraphEventType eventType) where TEdge : IEdge <TItem>
        {
            var dep = graph as IGraphDependencies <TItem, TEdge>;

            if (dep != null)
            {
                return(dep.DependsOn(GraphCursor.Create(graph, source), eventType));
            }
            return(new TItem[0]);
        }
Ejemplo n.º 7
0
        public virtual IEnumerable <IThing> DependsOn(GraphCursor <IThing, ILink> source, GraphEventType eventType)
        {
            if (HasPages(source))
            {
                var doc   = source.Cursor;
                var graph = source.Graph.Unwrap();

                foreach (var link in PageLinks(graph as IThingGraph, doc).ToArray())
                {
                    var page       = link.Leaf;
                    var singleEdge = graph.HasSingleEdge(page);
                    yield return(link);

                    if (singleEdge || eventType != GraphEventType.Remove)
                    {
                        yield return(page);
                    }
                }
            }
        }
Ejemplo n.º 8
0
 public GraphEventArgs nextLevelArgs(System.Object lastSender, GraphEventType graphEvent)
 {
     return(new GraphEventArgs(origin, lastSender, graphEvent, this.timeToLive - 1, this.message));
 }
Ejemplo n.º 9
0
 public GraphChangeArgs(IGraph <TItem, TEdge> graph, TItem item, GraphEventType eventType)
 {
     this.Graph     = graph;
     this.Item      = item;
     this.EventType = eventType;
 }
Ejemplo n.º 10
0
        public static IEnumerable <IThing> DependsOn(GraphCursor <IThing, ILink> source, GraphEventType eventType)
        {
            var graph = source.Graph.Unwrap();

            return(graph.Edges(source.Cursor)
                   .Where(l => l != null && l.Marker != null && Deps.Contains(l.Marker.Id))
                   .Select(l => l.Leaf)
                   .ToArray());
        }
Ejemplo n.º 11
0
 public static void OnGraphChange <TItem, TEdge> (this IGraph <TItem, TEdge> graph, TItem item, GraphEventType eventType)
     where TEdge : IEdge <TItem>
 {
     graph.OnGraphChange(graph, new GraphChangeArgs <TItem, TEdge> (graph, item, eventType));
 }