Files
aistudio-wpf-diagram/AIStudio.Wpf.DiagramDesigner/ViewModels/BaseViewModel/Connector/ConnectorVertexModel.cs
2023-05-02 17:28:16 +08:00

105 lines
2.8 KiB
C#

using System;
using System.Windows.Input;
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) : this(null, connector, position)
{
}
public ConnectorVertexModel(IDiagramViewModel root, ConnectionViewModel connector, PointBase? position = null) : base(root)
{
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(IDiagramViewModel root, bool initNew)
{
base.Init(root, initNew);
DeleteVertexCommand = new SimpleCommand(Command_Enable, DeleteVertex);
}
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
{
base.LoadDesignerItemViewModel(designerbase);
if (designerbase is ConnectorVertexItem designer)
{
}
}
public ConnectorVertexType ConnectorVertexType
{
get; set;
}
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 ICommand DeleteVertexCommand
{
get; set;
}
private void DeleteVertex(object parameter)
{
if (parameter is ConnectorVertexModel vertice)
{
Connector.RemoveVertex(this);
}
}
public void SetPosition(PointBase position)
{
X = position.X;
Y = position.Y;
}
}
public enum ConnectorVertexType
{
None,
Start,
End,
}
}