Imported Upstream version 4.6.0.125

Former-commit-id: a2155e9bd80020e49e72e86c44da02a8ac0e57a4
This commit is contained in:
Xamarin Public Jenkins (auto-signing)
2016-08-03 10:59:49 +00:00
parent a569aebcfd
commit e79aa3c0ed
17047 changed files with 3137615 additions and 392334 deletions

View File

@@ -0,0 +1,88 @@
//-----------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
namespace System.Activities.Statements
{
using System.Collections.Generic;
using System.Activities;
using System.ComponentModel;
public abstract class FlowNode
{
Flowchart owner;
int cacheId;
internal FlowNode()
{
Index = -1;
}
internal abstract Activity ChildActivity
{
get;
}
internal int Index
{
get;
set;
}
internal bool IsOpen
{
get
{
return this.owner != null;
}
}
internal Flowchart Owner
{
get
{
return this.owner;
}
}
// Returns true if this is the first time we've visited this node during this pass
internal bool Open(Flowchart owner, NativeActivityMetadata metadata)
{
if (this.cacheId == owner.CacheId)
{
// We've already visited this node during this pass
if (!object.ReferenceEquals(this.owner, owner))
{
metadata.AddValidationError(SR.FlowNodeCannotBeShared(this.owner.DisplayName, owner.DisplayName));
}
// Whether we found an issue or not we don't want to change
// the metadata during this pass.
return false;
}
// if owner.ValidateUnconnectedNodes - Flowchart will be responsible for calling OnOpen for all the Nodes (connected and unconnected)
if (!owner.ValidateUnconnectedNodes)
{
OnOpen(owner, metadata);
}
this.owner = owner;
this.cacheId = owner.CacheId;
this.Index = -1;
return true;
}
internal abstract void OnOpen(Flowchart owner, NativeActivityMetadata metadata);
internal void GetChildActivities(ICollection<Activity> children)
{
if (ChildActivity != null)
{
children.Add(ChildActivity);
}
}
internal abstract void GetConnectedNodes(IList<FlowNode> connections);
}
}