using System.ComponentModel; using SHJX.Service.Common.Utils; using System.Collections.Generic; namespace Flowchart { public class FlowNode : INotifyPropertyChanged { [Browsable(false)] public NodeKinds Kind { get; private set; } private int _column; public int Column { get { return _column; } set { _column = value; OnPropertyChanged("Column"); } } private int _row; public int Row { get { return _row; } set { _row = value; OnPropertyChanged("Row"); } } private string _text; public string Text { get { return _text; } set { _text = value; OnPropertyChanged("Text"); } } public FlowNode(NodeKinds kind) { Kind = kind; Text = kind.GetEnumDescription(); } public IEnumerable GetPorts() { switch (Kind) { case NodeKinds.Start: yield return PortKinds.Bottom; break; case NodeKinds.End: yield return PortKinds.Top; break; case NodeKinds.MotorX: case NodeKinds.MotorY: case NodeKinds.MotorZ: case NodeKinds.MotorZGoBack: case NodeKinds.ManiGrab: case NodeKinds.ManiLoosen: yield return PortKinds.Top; yield return PortKinds.Bottom; break; case NodeKinds.Condition: yield return PortKinds.Top; yield return PortKinds.Bottom; yield return PortKinds.Left; yield return PortKinds.Right; break; } } #region INotifyPropertyChanged Members public event PropertyChangedEventHandler PropertyChanged; protected void OnPropertyChanged(string name) { PropertyChanged?.Invoke(this, new PropertyChangedEventArgs(name)); } #endregion } public enum NodeKinds { [Description("开始")] Start, [Description("结束")] End, [Description("X轴")] MotorX, [Description("Y轴")] MotorY, [Description("Z轴")] MotorZ, [Description("Z轴原点")] MotorZGoBack, [Description("杯抓")] ManiGrab, [Description("杯松")] ManiLoosen, [Description("条件")] Condition } }