using System; using AIStudio.Wpf.DiagramDesigner.Geometrys; using AIStudio.Wpf.DiagramDesigner.Models; namespace AIStudio.Wpf.DiagramDesigner { public class ConnectorVertexModel : ConnectorPointModel { public ConnectorVertexModel(ConnectionViewModel connector, PointBase? position = null) { Parent = connector; X = position?.X ?? 0; Y = position?.Y ?? 0; } public ConnectorVertexModel(IDiagramViewModel root, ConnectionViewModel connector, SelectableItemBase designer) : base(root, designer) { Parent = connector; } public ConnectorVertexModel(IDiagramViewModel root, ConnectionViewModel connector, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType) { Parent = connector; } public override SelectableItemBase GetSerializableObject() { return new ConnectorVertexItem(this); } protected override void Init() { base.Init(); DeleteVertexCommand = new SimpleCommand(Command_Enable, DeleteVertex); } protected override void LoadDesignerItemViewModel(IDiagramViewModel root, SelectableItemBase designerbase) { base.LoadDesignerItemViewModel(root, designerbase); if (designerbase is ConnectorVertexItem designer) { } } public ConnectionViewModel Connector { get { return Parent as ConnectionViewModel; } } public override PointBase Position { get { return new PointBase(Connector.Area.Left + Left, Connector.Area.Top + Top); } } public override PointBase MiddlePosition => new PointBase(Connector.Area.Left + Left + ConnectorWidth / 2, Connector.Area.Top + Top + ConnectorHeight / 2); public SimpleCommand DeleteVertexCommand { get; set; } private void DeleteVertex(object parameter) { if (parameter is ConnectorVertexModel vertice) { Connector.Vertices.Remove(vertice); } } } }