2023-01-24 17:53:04 +08:00
|
|
|
|
using System;
|
2023-03-24 22:32:42 +08:00
|
|
|
|
using System.Windows.Input;
|
2023-01-24 17:53:04 +08:00
|
|
|
|
using AIStudio.Wpf.DiagramDesigner.Geometrys;
|
2023-01-25 11:11:27 +08:00
|
|
|
|
using AIStudio.Wpf.DiagramDesigner.Models;
|
2023-01-08 09:22:37 +08:00
|
|
|
|
|
|
|
|
|
|
namespace AIStudio.Wpf.DiagramDesigner
|
|
|
|
|
|
{
|
2023-01-24 16:20:39 +08:00
|
|
|
|
public class ConnectorVertexModel : ConnectorPointModel
|
2023-01-08 09:22:37 +08:00
|
|
|
|
{
|
2023-01-27 14:54:03 +08:00
|
|
|
|
public ConnectorVertexModel(ConnectionViewModel connector, PointBase? position = null) : this(null, connector, position)
|
|
|
|
|
|
{
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public ConnectorVertexModel(IDiagramViewModel root, ConnectionViewModel connector, PointBase? position = null) : base(root)
|
2023-01-08 09:22:37 +08:00
|
|
|
|
{
|
2023-01-24 16:20:39 +08:00
|
|
|
|
Parent = connector;
|
2023-01-08 09:22:37 +08:00
|
|
|
|
X = position?.X ?? 0;
|
2023-01-27 14:54:03 +08:00
|
|
|
|
Y = position?.Y ?? 0;
|
2023-01-24 16:20:39 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2023-01-24 17:53:04 +08:00
|
|
|
|
public ConnectorVertexModel(IDiagramViewModel root, ConnectionViewModel connector, SelectableItemBase designer) : base(root, designer)
|
|
|
|
|
|
{
|
|
|
|
|
|
Parent = connector;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-01-25 11:11:27 +08:00
|
|
|
|
public ConnectorVertexModel(IDiagramViewModel root, ConnectionViewModel connector, SerializableItem serializableItem, string serializableType) : base(root, serializableItem, serializableType)
|
2023-01-24 17:53:04 +08:00
|
|
|
|
{
|
|
|
|
|
|
Parent = connector;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-01-25 11:11:27 +08:00
|
|
|
|
public override SelectableItemBase GetSerializableObject()
|
|
|
|
|
|
{
|
|
|
|
|
|
return new ConnectorVertexItem(this);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-03-25 11:59:31 +08:00
|
|
|
|
protected override void Init(IDiagramViewModel root, bool initNew)
|
2023-01-24 16:20:39 +08:00
|
|
|
|
{
|
2023-03-25 11:59:31 +08:00
|
|
|
|
base.Init(root, initNew);
|
2023-01-23 15:43:44 +08:00
|
|
|
|
|
2023-01-25 23:55:30 +08:00
|
|
|
|
DeleteVertexCommand = new SimpleCommand(Command_Enable, DeleteVertex);
|
2023-01-08 09:22:37 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2023-01-27 14:54:03 +08:00
|
|
|
|
protected override void LoadDesignerItemViewModel(SelectableItemBase designerbase)
|
2023-01-24 16:20:39 +08:00
|
|
|
|
{
|
2023-01-27 14:54:03 +08:00
|
|
|
|
base.LoadDesignerItemViewModel(designerbase);
|
2023-01-24 16:20:39 +08:00
|
|
|
|
|
2023-01-24 17:53:04 +08:00
|
|
|
|
if (designerbase is ConnectorVertexItem designer)
|
|
|
|
|
|
{
|
2023-05-03 17:14:47 +08:00
|
|
|
|
designer.ConnectorVertexType = designer.ConnectorVertexType;
|
2023-01-24 17:53:04 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-05-02 17:28:16 +08:00
|
|
|
|
public ConnectorVertexType ConnectorVertexType
|
|
|
|
|
|
{
|
|
|
|
|
|
get; set;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-01-24 17:53:04 +08:00
|
|
|
|
public ConnectionViewModel Connector
|
2023-01-08 09:22:37 +08:00
|
|
|
|
{
|
2023-01-24 16:20:39 +08:00
|
|
|
|
get
|
|
|
|
|
|
{
|
2023-01-24 17:53:04 +08:00
|
|
|
|
return Parent as ConnectionViewModel;
|
2023-01-24 16:20:39 +08:00
|
|
|
|
}
|
2023-01-08 09:22:37 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
2023-01-21 22:01:10 +08:00
|
|
|
|
public override PointBase Position
|
|
|
|
|
|
{
|
|
|
|
|
|
get
|
|
|
|
|
|
{
|
2023-01-24 16:20:39 +08:00
|
|
|
|
return new PointBase(Connector.Area.Left + Left, Connector.Area.Top + Top);
|
2023-01-21 22:01:10 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2023-01-24 16:20:39 +08:00
|
|
|
|
public override PointBase MiddlePosition => new PointBase(Connector.Area.Left + Left + ConnectorWidth / 2, Connector.Area.Top + Top + ConnectorHeight / 2);
|
2023-01-21 22:01:10 +08:00
|
|
|
|
|
2023-03-24 22:32:42 +08:00
|
|
|
|
public ICommand DeleteVertexCommand
|
2023-01-23 15:43:44 +08:00
|
|
|
|
{
|
|
|
|
|
|
get; set;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void DeleteVertex(object parameter)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (parameter is ConnectorVertexModel vertice)
|
|
|
|
|
|
{
|
2023-04-08 21:48:43 +08:00
|
|
|
|
Connector.RemoveVertex(this);
|
2023-01-23 15:43:44 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|
2023-05-02 17:28:16 +08:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public enum ConnectorVertexType
|
|
|
|
|
|
{
|
|
|
|
|
|
None,
|
|
|
|
|
|
Start,
|
|
|
|
|
|
End,
|
2023-01-08 09:22:37 +08:00
|
|
|
|
}
|
|
|
|
|
|
}
|