mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-03-03 00:00:57 +08:00
105 lines
2.8 KiB
C#
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,
|
|
}
|
|
}
|