Files
aistudio-wpf-diagram/AIStudio.Wpf.Flowchart/ViewModels/FlowNode.cs
2023-01-24 16:20:39 +08:00

218 lines
5.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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, DesignerItemBase designer) : base(root, designer)
{
}
public FlowNode(IDiagramViewModel root, string json) : base(root, json)
{
}
public override SelectableItemBase ToXmlObject()
{
return new FlowNodeDesignerItem(this);
}
public override Type ToXmlType()
{
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);
FlowNodeDesignerItem designer = designerbase as FlowNodeDesignerItem;
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<string> PreStepId { get; set; }
public string NextStepId { get; set; }
public Dictionary<string, string> SelectNextStep { get; set; } = new Dictionary<string, string>();
#endregion
public virtual Dictionary<string, string> PropertiesSetting
{
get
{
return new Dictionary<string, string>()
{
{ "Name","名称" },
{ "Text","文本" },
};
}
}
}
public class StartFlowNode : FlowNode
{
public StartFlowNode() : base(NodeKinds.Start)
{
}
public StartFlowNode(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer)
{
}
public StartFlowNode(IDiagramViewModel root, string json) : base(root, json)
{
}
}
public class EndFlowNode : FlowNode
{
public EndFlowNode() : base(NodeKinds.End)
{
}
public EndFlowNode(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer)
{
}
public EndFlowNode(IDiagramViewModel root, string json) : base(root, json)
{
}
}
public class DecideFlowNode : FlowNode
{
public DecideFlowNode() : base(NodeKinds.Decide)
{
}
public DecideFlowNode(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer)
{
}
public DecideFlowNode(IDiagramViewModel root, string json) : base(root, json)
{
}
}
public class COBeginFlowNode : FlowNode
{
public COBeginFlowNode() : base(NodeKinds.COBegin)
{
}
public COBeginFlowNode(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer)
{
}
public COBeginFlowNode(IDiagramViewModel root, string json) : base(root, json)
{
}
}
public class COEndFlowNode : FlowNode
{
public COEndFlowNode() : base(NodeKinds.COEnd)
{
}
public COEndFlowNode(IDiagramViewModel root, DesignerItemBase designer) : base(root, designer)
{
}
public COEndFlowNode(IDiagramViewModel root, string json) : base(root, json)
{
}
}
}