using System.Collections.Generic;
using System.Threading.Tasks;
namespace Serein.Library.Api
{
///
/// 流程编辑
///
public interface IFlowEdit
{
///
/// 节点视图模型管理类
///
NodeMVVMService NodeMVVMManagement { get; }
///
/// 从节点信息集合批量加载节点控件
///
/// 节点集合信息
///
Task LoadNodeInfosAsync(List nodeInfos);
#region 流程节点操作接口
///
/// 增加画布
///
/// 画布名称
/// 宽度
/// 高度
///
void CreateCanvas(string canvasName, int width, int height);
///
/// 删除画布
///
/// 画布Guid
///
void RemoveCanvas(string canvasGuid);
///
/// 在两个节点之间创建连接关系
///
/// 所在画布
/// 起始节点Guid
/// 目标节点Guid
/// 起始节点控制点
/// 目标节点控制点
/// 决定了方法执行后的后继行为
void ConnectInvokeNode(string canvasGuid,
string fromNodeGuid,
string toNodeGuid,
JunctionType fromNodeJunctionType,
JunctionType toNodeJunctionType,
ConnectionInvokeType invokeType);
///
/// 在两个节点之间创建连接关系
///
/// 所在画布
/// 起始节点Guid
/// 目标节点Guid
/// 起始节点控制点
/// 目标节点控制点
/// 决定了方法参数来源
/// 设置第几个参数
void ConnectArgSourceNode(string canvasGuid,
string fromNodeGuid,
string toNodeGuid,
JunctionType fromNodeJunctionType,
JunctionType toNodeJunctionType,
ConnectionArgSourceType argSourceType,
int argIndex);
///
/// 移除两个节点之间的方法调用关系
///
/// 所在画布
/// 起始节点
/// 目标节点
/// 连接类型
void RemoveInvokeConnect(string canvasGuid, string fromNodeGuid, string toNodeGuid, ConnectionInvokeType connectionType);
///
/// 移除连接节点之间参数传递的关系
///
/// 所在画布
/// 起始节点Guid
/// 目标节点Guid
/// 连接到第几个参数
void RemoveArgSourceConnect(string canvasGuid, string fromNodeGuid, string toNodeGuid, int argIndex);
///
/// 创建节点
///
/// 所在画布
/// 控件类型
/// 节点在画布上的位置(
/// 节点绑定的方法说明
void CreateNode(string canvasGuid, NodeControlType nodeType, PositionOfUI position, MethodDetailsInfo methodDetailsInfo = null);
///
/// 移除节点
///
/// 所在画布
/// 待移除的节点Guid
void RemoveNode(string canvasGuid, string nodeGuid);
///
/// 将节点放置在容器中
///
/// 所在画布
/// 需要放置的节点Guid
/// 存放节点的容器Guid
///
void PlaceNodeToContainer(string canvasGuid, string nodeGuid, string containerNodeGuid);
///
/// 将节点放置在容器中
///
/// 所在画布
/// 需要取出的节点Guid
void TakeOutNodeToContainer(string canvasGuid, string nodeGuid);
///
/// 设置流程起点节点
///
/// 所在画布
/// 尝试设置为起始节点的节点Guid
/// 被设置为起始节点的Guid
void SetStartNode(string canvasGuid, string nodeGuid);
///
/// 设置两个节点某个类型的方法调用关系为优先调用
///
/// 起始节点
/// 目标节点
/// 连接关系
///
void SetConnectPriorityInvoke(string fromNodeGuid, string toNodeGuid, ConnectionInvokeType connectionType);
///
/// 改变可选参数的数目
///
/// 对应的节点Guid
/// true,增加参数;false,减少参数
/// 以哪个参数为模板进行拷贝,或删去某个参数(该参数必须为可选参数)
///
void ChangeParameter(string nodeGuid, bool isAdd, int paramIndex);
#endregion
#region UI视觉
///
/// 节点定位
///
///
void NodeLocate(string nodeGuid);
#endregion
}
}