using System; using System.Collections.Generic; using System.ComponentModel; using AIStudio.Wpf.DiagramDesigner; using AIStudio.Wpf.DiagramDesigner.Services; using AIStudio.Wpf.Flowchart.Models; namespace AIStudio.Wpf.Flowchart.ViewModels { public class FlowNode : DesignerItemViewModelBase { protected IUIVisualizerService visualiserService; public FlowNode(NodeKinds kind) : base() { Kind = kind; Text = Kind.GetDescription(); } public FlowNode(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) { } public FlowNode(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) { } public override SelectableItemBase GetSerializableObject() { return new FlowNodeDesignerItem(this); } public override Type GetSerializableType() { return typeof(FlowNodeDesignerItem); } protected override void Init() { base.Init(); ShowRotate = false; ShowText = true; IsReadOnlyText = true; visualiserService = ApplicationServicesProvider.Instance.Provider.VisualizerService; } protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) { base.LoadDesignerItemViewModel(root, designerbase); if (designerbase is FlowNodeDesignerItem designer) { this.Color = designer.Color; this.Kind = designer.Kind; this.StateImage = designer.StateImage; if (this is MiddleFlowNode middle) { middle.UserIds = designer.UserIds; middle.RoleIds = designer.RoleIds; middle.ActType = designer.ActType; } } } private string _color = "#1890ff"; [Browsable(false)] public string Color { get { return _color; } set { SetProperty(ref _color, value); } } [Browsable(false)] public NodeKinds Kind { get; set; } [Browsable(false)] public string StateImage { get; set; } [Browsable(true)] public string Name{ get; set; } #region 没有存起来,仅仅测试使用,实际这些代码应该都在服务端 private int _status; public int Status { get { return _status; } set { SetProperty(ref _status, value); } } private string _remark; public string Remark { get { return _remark; } set { SetProperty(ref _remark, value); } } public List PreStepId { get; set; } public string NextStepId { get; set; } public Dictionary SelectNextStep { get; set; } = new Dictionary(); #endregion public virtual Dictionary PropertiesSetting { get { return new Dictionary() { { "Name","名称" }, { "Text","文本" }, }; } } } public class StartFlowNode : FlowNode { public StartFlowNode() : base(NodeKinds.Start) { } public StartFlowNode(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) { } public StartFlowNode(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) { } } public class EndFlowNode : FlowNode { public EndFlowNode() : base(NodeKinds.End) { } public EndFlowNode(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) { } public EndFlowNode(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) { } } public class DecideFlowNode : FlowNode { public DecideFlowNode() : base(NodeKinds.Decide) { } public DecideFlowNode(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) { } public DecideFlowNode(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) { } } public class COBeginFlowNode : FlowNode { public COBeginFlowNode() : base(NodeKinds.COBegin) { } public COBeginFlowNode(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) { } public COBeginFlowNode(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) { } } public class COEndFlowNode : FlowNode { public COEndFlowNode() : base(NodeKinds.COEnd) { } public COEndFlowNode(IDiagramViewModel root, SelectableItemBase designer) : base(root, designer) { } public COEndFlowNode(IDiagramViewModel root, string serializableString, string serializableType) : base(root, serializableString, serializableType) { } } }