mirror of
https://gitee.com/akwkevin/aistudio.-wpf.-diagram
synced 2026-03-03 00:00:57 +08:00
把底层再分割一下
This commit is contained in:
@@ -13,7 +13,7 @@ using SvgPathProperties;
|
||||
|
||||
namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public class ConnectorViewModel : SelectableViewModelBase
|
||||
public class ConnectorViewModel : SelectableDesignerItemViewModelBase
|
||||
{
|
||||
public ConnectorViewModel(IDiagramViewModel parent, FullyCreatedConnectorInfo sourceConnectorInfo, ConnectorInfoBase sinkConnectorInfo, DrawMode drawMode, RouterMode routerMode)
|
||||
{
|
||||
|
||||
@@ -11,7 +11,7 @@ using AIStudio.Wpf.DiagramDesigner.Geometrys;
|
||||
|
||||
namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
public abstract class DesignerItemViewModelBase : SelectableViewModelBase
|
||||
public abstract class DesignerItemViewModelBase : SelectableDesignerItemViewModelBase
|
||||
{
|
||||
public DesignerItemViewModelBase() : base()
|
||||
{
|
||||
|
||||
@@ -452,7 +452,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
if (e.OldItems != null)
|
||||
{
|
||||
foreach (var item in e.OldItems.OfType<SelectableViewModelBase>())
|
||||
foreach (var item in e.OldItems.OfType<SelectableDesignerItemViewModelBase>())
|
||||
{
|
||||
item.PropertyChanged -= Item_PropertyChanged;
|
||||
item.Dispose();
|
||||
@@ -460,7 +460,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
if (e.NewItems != null)
|
||||
{
|
||||
foreach (var item in e.NewItems.OfType<SelectableViewModelBase>())
|
||||
foreach (var item in e.NewItems.OfType<SelectableDesignerItemViewModelBase>())
|
||||
{
|
||||
item.PropertyChanged += Item_PropertyChanged;
|
||||
}
|
||||
@@ -675,9 +675,9 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
|
||||
|
||||
public ObservableCollection<SelectableViewModelBase> Items { get; set; } = new ObservableCollection<SelectableViewModelBase>();
|
||||
public ObservableCollection<SelectableDesignerItemViewModelBase> Items { get; set; } = new ObservableCollection<SelectableDesignerItemViewModelBase>();
|
||||
|
||||
public List<SelectableViewModelBase> SelectedItems
|
||||
public List<SelectableDesignerItemViewModelBase> SelectedItems
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -698,13 +698,13 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
}
|
||||
|
||||
public Func<SelectableViewModelBase, bool> OutAddVerify
|
||||
public Func<SelectableDesignerItemViewModelBase, bool> OutAddVerify
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
|
||||
public bool AddVerify(SelectableViewModelBase item)
|
||||
public bool AddVerify(SelectableDesignerItemViewModelBase item)
|
||||
{
|
||||
if (item.InitData() == false)
|
||||
return false;
|
||||
@@ -722,14 +722,14 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
|
||||
private void ExecuteDirectAddItemCommand(object parameter)
|
||||
{
|
||||
if (parameter is SelectableViewModelBase ite)
|
||||
if (parameter is SelectableDesignerItemViewModelBase ite)
|
||||
{
|
||||
if (AddVerify(ite) != true) return;
|
||||
|
||||
ClearSelectedItems();
|
||||
Add(ite);
|
||||
}
|
||||
else if (parameter is List<SelectableViewModelBase> items)
|
||||
else if (parameter is List<SelectableDesignerItemViewModelBase> items)
|
||||
{
|
||||
if (items.Select(p => AddVerify(p)).Any() != true) return;
|
||||
|
||||
@@ -741,7 +741,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
}
|
||||
|
||||
private void Add(SelectableViewModelBase item)
|
||||
private void Add(SelectableDesignerItemViewModelBase item)
|
||||
{
|
||||
item.Parent = this;
|
||||
item.ZIndex = Items.Count;
|
||||
@@ -768,7 +768,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
|
||||
private void ExecuteAddItemCommand(object parameter)
|
||||
{
|
||||
if (parameter is SelectableViewModelBase ite)
|
||||
if (parameter is SelectableDesignerItemViewModelBase ite)
|
||||
{
|
||||
if (AddVerify(ite) != true) return;
|
||||
|
||||
@@ -781,7 +781,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
Items.Remove(ite);
|
||||
});
|
||||
}
|
||||
else if (parameter is List<SelectableViewModelBase> items)
|
||||
else if (parameter is List<SelectableDesignerItemViewModelBase> items)
|
||||
{
|
||||
if (items.Select(p => AddVerify(p)).Any() != true) return;
|
||||
|
||||
@@ -801,47 +801,34 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
|
||||
private void ExecuteDirectRemoveItemCommand(object parameter)
|
||||
{
|
||||
if (parameter is SelectableViewModelBase ite)
|
||||
if (parameter is SelectableDesignerItemViewModelBase ite)
|
||||
{
|
||||
ite.IsSelected = false;
|
||||
Items.Remove(ite);
|
||||
if (ite.OutTextItem != null)
|
||||
{
|
||||
Items.Remove(ite.OutTextItem);
|
||||
}
|
||||
}
|
||||
else if (parameter is List<SelectableViewModelBase> items)
|
||||
else if (parameter is List<SelectableDesignerItemViewModelBase> items)
|
||||
{
|
||||
foreach (var item in items)
|
||||
{
|
||||
item.IsSelected = false;
|
||||
Items.Remove(item);
|
||||
if (item.OutTextItem != null)
|
||||
{
|
||||
Items.Remove(item.OutTextItem);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
private void ExecuteRemoveItemCommand(object parameter)
|
||||
{
|
||||
if (parameter is SelectableViewModelBase ite)
|
||||
if (parameter is SelectableDesignerItemViewModelBase ite)
|
||||
{
|
||||
DoCommandManager.DoNewCommand(this.ToString(),
|
||||
() => {
|
||||
ite.IsSelected = false;
|
||||
Items.Remove(ite);
|
||||
if (ite.OutTextItem != null)
|
||||
{
|
||||
Items.Remove(ite.OutTextItem);
|
||||
}
|
||||
|
||||
},
|
||||
() => {
|
||||
Items.Add(ite);
|
||||
});
|
||||
}
|
||||
else if (parameter is List<SelectableViewModelBase> items)
|
||||
else if (parameter is List<SelectableDesignerItemViewModelBase> items)
|
||||
{
|
||||
DoCommandManager.DoNewCommand(this.ToString(),
|
||||
() => {
|
||||
@@ -849,10 +836,6 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
item.IsSelected = false;
|
||||
Items.Remove(item);
|
||||
if (item.OutTextItem != null)
|
||||
{
|
||||
Items.Remove(item.OutTextItem);
|
||||
}
|
||||
}
|
||||
|
||||
},
|
||||
@@ -860,10 +843,6 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
foreach (var item in items)
|
||||
{
|
||||
Items.Add(item);
|
||||
if (item.OutTextItem != null)
|
||||
{
|
||||
Items.Add(item.OutTextItem);
|
||||
}
|
||||
}
|
||||
|
||||
});
|
||||
@@ -1078,9 +1057,9 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
|
||||
private void ExecuteBringForwardCommand(object parameter)
|
||||
{
|
||||
List<SelectableViewModelBase> ordered = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
|
||||
List<SelectableDesignerItemViewModelBase> ordered = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
|
||||
|
||||
List<SelectableViewModelBase> changeditems = new List<SelectableViewModelBase>();
|
||||
List<SelectableDesignerItemViewModelBase> changeditems = new List<SelectableDesignerItemViewModelBase>();
|
||||
var guid = Guid.NewGuid();
|
||||
|
||||
DoCommandManager.DoNewCommand(this.ToString(),
|
||||
@@ -1097,7 +1076,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
item.ZIndex = newIndex;
|
||||
changeditems.Add(item);
|
||||
|
||||
IEnumerable<SelectableViewModelBase> it = this.Items.Where(p => p.ZIndex == newIndex);
|
||||
IEnumerable<SelectableDesignerItemViewModelBase> it = this.Items.Where(p => p.ZIndex == newIndex);
|
||||
|
||||
foreach (var elm in it)
|
||||
{
|
||||
@@ -1127,10 +1106,10 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
private void ExecuteBringToFrontCommand(object parameter)
|
||||
{
|
||||
List<SelectableViewModelBase> selectionSorted = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
|
||||
List<SelectableViewModelBase> childrenSorted = Items.OrderByDescending(p => p.ZIndex).ToList();
|
||||
List<SelectableDesignerItemViewModelBase> selectionSorted = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
|
||||
List<SelectableDesignerItemViewModelBase> childrenSorted = Items.OrderByDescending(p => p.ZIndex).ToList();
|
||||
|
||||
List<SelectableViewModelBase> changeditems = new List<SelectableViewModelBase>();
|
||||
List<SelectableDesignerItemViewModelBase> changeditems = new List<SelectableDesignerItemViewModelBase>();
|
||||
var guid = Guid.NewGuid();
|
||||
|
||||
DoCommandManager.DoNewCommand(this.ToString(),
|
||||
@@ -1138,7 +1117,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
int i = childrenSorted.Count - 1;
|
||||
int j = childrenSorted.Count - selectionSorted.Count - 1;
|
||||
|
||||
foreach (SelectableViewModelBase item in childrenSorted)
|
||||
foreach (SelectableDesignerItemViewModelBase item in childrenSorted)
|
||||
{
|
||||
item.SetOldValue<int>(item.ZIndex, nameof(item.ZIndex), guid.ToString());
|
||||
if (selectionSorted.Contains(item))
|
||||
@@ -1167,10 +1146,10 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
private void ExecuteSendBackwardCommand(object parameter)
|
||||
{
|
||||
List<SelectableViewModelBase> ordered = this.SelectedItems.OrderBy(p => p.ZIndex).ToList();
|
||||
List<SelectableDesignerItemViewModelBase> ordered = this.SelectedItems.OrderBy(p => p.ZIndex).ToList();
|
||||
int count = this.Items.Count;
|
||||
|
||||
List<SelectableViewModelBase> changeditems = new List<SelectableViewModelBase>();
|
||||
List<SelectableDesignerItemViewModelBase> changeditems = new List<SelectableDesignerItemViewModelBase>();
|
||||
var guid = Guid.NewGuid();
|
||||
|
||||
DoCommandManager.DoNewCommand(this.ToString(),
|
||||
@@ -1185,7 +1164,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
item.SetOldValue<int>(item.ZIndex, nameof(item.ZIndex), guid.ToString());
|
||||
item.ZIndex = newIndex;
|
||||
changeditems.Add(item);
|
||||
IEnumerable<SelectableViewModelBase> it = this.Items.Where(p => p.ZIndex == newIndex);
|
||||
IEnumerable<SelectableDesignerItemViewModelBase> it = this.Items.Where(p => p.ZIndex == newIndex);
|
||||
|
||||
foreach (var elm in it)
|
||||
{
|
||||
@@ -1216,10 +1195,10 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
private void ExecuteSendToBackCommand(object parameter)
|
||||
{
|
||||
List<SelectableViewModelBase> selectionSorted = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
|
||||
List<SelectableViewModelBase> childrenSorted = Items.OrderByDescending(p => p.ZIndex).ToList();
|
||||
List<SelectableDesignerItemViewModelBase> selectionSorted = SelectedItems.OrderByDescending(p => p.ZIndex).ToList();
|
||||
List<SelectableDesignerItemViewModelBase> childrenSorted = Items.OrderByDescending(p => p.ZIndex).ToList();
|
||||
|
||||
List<SelectableViewModelBase> changeditems = new List<SelectableViewModelBase>();
|
||||
List<SelectableDesignerItemViewModelBase> changeditems = new List<SelectableDesignerItemViewModelBase>();
|
||||
var guid = Guid.NewGuid();
|
||||
|
||||
DoCommandManager.DoNewCommand(this.ToString(),
|
||||
@@ -1227,7 +1206,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
int i = childrenSorted.Count - 1;
|
||||
int j = selectionSorted.Count - 1;
|
||||
|
||||
foreach (SelectableViewModelBase item in childrenSorted)
|
||||
foreach (SelectableDesignerItemViewModelBase item in childrenSorted)
|
||||
{
|
||||
item.SetOldValue<int>(item.ZIndex, nameof(item.ZIndex), guid.ToString());
|
||||
if (selectionSorted.Contains(item))
|
||||
@@ -1406,16 +1385,6 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
}
|
||||
|
||||
//连线上的文本
|
||||
foreach (var selectedConnection in selectedConnections)
|
||||
{
|
||||
if (selectedConnection.OutTextItem != null)
|
||||
{
|
||||
selectedDesignerItems.Add(selectedConnection.OutTextItem);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
string json = new SerializableObject
|
||||
{
|
||||
DesignerItems = selectedDesignerItems.Select(p => p.ToSerializabObject()).Where(p => p != null).ToList(),
|
||||
@@ -1438,7 +1407,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
return;
|
||||
try
|
||||
{
|
||||
List<SelectableViewModelBase> items = new List<SelectableViewModelBase>();
|
||||
List<SelectableDesignerItemViewModelBase> items = new List<SelectableDesignerItemViewModelBase>();
|
||||
SerializableObject copyitem = JsonConvert.DeserializeObject<SerializableObject>(clipboardData);
|
||||
|
||||
|
||||
@@ -1469,7 +1438,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
OffsetX += 10;
|
||||
OffsetY += 10;
|
||||
|
||||
List<SelectableViewModelBase> connectors = new List<SelectableViewModelBase>();
|
||||
List<SelectableDesignerItemViewModelBase> connectors = new List<SelectableDesignerItemViewModelBase>();
|
||||
foreach (var connection in copyitem.Connections)
|
||||
{
|
||||
var connectionItem = JsonConvert.DeserializeObject<ConnectionItem>(connection.ObjectJson);
|
||||
@@ -1491,12 +1460,6 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
|
||||
ConnectorViewModel connectionVM = new ConnectorViewModel(this, sourceConnectorInfo, sinkConnectorInfo, connectionItem);
|
||||
connectors.Add(connectionVM);
|
||||
|
||||
DesignerItemViewModelBase textItem = items.OfType<DesignerItemViewModelBase>().FirstOrDefault(x => x.ParentId == connectionItem.Id);
|
||||
if (textItem != null)
|
||||
{
|
||||
connectionVM.OutTextItem = textItem;
|
||||
}
|
||||
}
|
||||
|
||||
DirectAddItemCommand.Execute(connectors);
|
||||
@@ -1550,7 +1513,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
}
|
||||
|
||||
private bool ItemsToDeleteHasConnector(List<SelectableViewModelBase> itemsToRemove, ConnectorInfoBase connector)
|
||||
private bool ItemsToDeleteHasConnector(List<SelectableDesignerItemViewModelBase> itemsToRemove, ConnectorInfoBase connector)
|
||||
{
|
||||
if (connector is FullyCreatedConnectorInfo fully)
|
||||
{
|
||||
@@ -1571,8 +1534,8 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
|
||||
private void ExecuteDeleteCommand(object parameter)
|
||||
{
|
||||
List<SelectableViewModelBase> itemsToRemove = SelectedItems.OfType<SelectableViewModelBase>().ToList();
|
||||
List<SelectableViewModelBase> connectionsToAlsoRemove = new List<SelectableViewModelBase>();
|
||||
List<SelectableDesignerItemViewModelBase> itemsToRemove = SelectedItems.OfType<SelectableDesignerItemViewModelBase>().ToList();
|
||||
List<SelectableDesignerItemViewModelBase> connectionsToAlsoRemove = new List<SelectableDesignerItemViewModelBase>();
|
||||
|
||||
foreach (var connector in Items.OfType<ConnectorViewModel>())
|
||||
{
|
||||
@@ -1744,7 +1707,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
|
||||
public void UpdateZIndex()
|
||||
{
|
||||
List<SelectableViewModelBase> ordered = Items.OrderBy(p => p.ZIndex).ToList();
|
||||
List<SelectableDesignerItemViewModelBase> ordered = Items.OrderBy(p => p.ZIndex).ToList();
|
||||
|
||||
|
||||
for (int i = 0; i < ordered.Count; i++)
|
||||
|
||||
@@ -0,0 +1,165 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Windows.Input;
|
||||
using System.Windows.Media;
|
||||
using AIStudio.Wpf.DiagramDesigner.Models;
|
||||
using Newtonsoft.Json;
|
||||
|
||||
namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
|
||||
public interface ISelectItems
|
||||
{
|
||||
SimpleCommand SelectItemCommand
|
||||
{
|
||||
get;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public abstract class SelectableDesignerItemViewModelBase : SelectableViewModelBase, ISelectItems, ISelectable, IGroupable
|
||||
{
|
||||
|
||||
public SelectableDesignerItemViewModelBase():base()
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public SelectableDesignerItemViewModelBase(IDiagramViewModel parent, SelectableDesignerItemBase designer):base(parent, designer)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
public SelectableDesignerItemViewModelBase(IDiagramViewModel parent, string json) : base(parent, json)
|
||||
{
|
||||
|
||||
}
|
||||
|
||||
protected override void Init()
|
||||
{
|
||||
base.Init();
|
||||
|
||||
SelectItemCommand = new SimpleCommand(ExecuteSelectItemCommand);
|
||||
EditCommand = new SimpleCommand(ExecuteEditCommand);
|
||||
}
|
||||
|
||||
public virtual bool InitData()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public virtual bool EditData()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public SimpleCommand SelectItemCommand
|
||||
{
|
||||
get; private set;
|
||||
}
|
||||
public ICommand EditCommand
|
||||
{
|
||||
get; private set;
|
||||
}
|
||||
|
||||
private string _text;
|
||||
[Browsable(true)]
|
||||
[CanDo]
|
||||
public override string Text
|
||||
{
|
||||
get
|
||||
{
|
||||
var text = _text;
|
||||
if (FontViewModel.FontCase == FontCase.Upper)
|
||||
{
|
||||
return text?.ToUpper();
|
||||
}
|
||||
else if (FontViewModel.FontCase == FontCase.Lower)
|
||||
{
|
||||
return text?.ToLower();
|
||||
}
|
||||
else
|
||||
{
|
||||
return text;
|
||||
}
|
||||
}
|
||||
set
|
||||
{
|
||||
if (SetProperty(ref _text, value))
|
||||
{
|
||||
if (!string.IsNullOrEmpty(_text))
|
||||
{
|
||||
ShowText = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private bool _isReadOnlyText = false;
|
||||
public bool IsReadOnlyText
|
||||
{
|
||||
get
|
||||
{
|
||||
if (IsReadOnly)
|
||||
return true;
|
||||
return _isReadOnlyText;
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _isReadOnlyText, value);
|
||||
}
|
||||
}
|
||||
|
||||
private bool _showText;
|
||||
public virtual bool ShowText
|
||||
{
|
||||
get
|
||||
{
|
||||
return _showText;
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _showText, value);
|
||||
}
|
||||
}
|
||||
|
||||
private void ExecuteSelectItemCommand(object param)
|
||||
{
|
||||
SelectItem((bool)param, !IsSelected);
|
||||
}
|
||||
|
||||
private void SelectItem(bool newselect, bool select)
|
||||
{
|
||||
if (newselect)
|
||||
{
|
||||
foreach (var designerItemViewModelBase in Parent.SelectedItems.ToList())
|
||||
{
|
||||
designerItemViewModelBase._isSelected = false;
|
||||
}
|
||||
}
|
||||
|
||||
IsSelected = select;
|
||||
}
|
||||
|
||||
public override void AddToSelection(bool selected)
|
||||
{
|
||||
foreach (SelectableDesignerItemViewModelBase item in Parent.SelectedItems.ToList())
|
||||
item.IsSelected = false;
|
||||
|
||||
Parent.SelectedItems.Clear();
|
||||
if (selected == true)
|
||||
{
|
||||
Parent.SelectionService.AddToSelection(this);
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void ExecuteEditCommand(object param)
|
||||
{
|
||||
if (IsReadOnly == true) return;
|
||||
|
||||
ShowText = true;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -10,19 +10,9 @@ using Newtonsoft.Json;
|
||||
|
||||
namespace AIStudio.Wpf.DiagramDesigner
|
||||
{
|
||||
|
||||
public interface ISelectItems
|
||||
public abstract class SelectableViewModelBase : BindableBase, ISelectable
|
||||
{
|
||||
SimpleCommand SelectItemCommand
|
||||
{
|
||||
get;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public abstract class SelectableViewModelBase : BindableBase, ISelectItems, ISelectable, IGroupable
|
||||
{
|
||||
private IDiagramServiceProvider _service
|
||||
protected IDiagramServiceProvider _service
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -80,8 +70,6 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
FontViewModel = _service.CopyDefaultFontViewModel();
|
||||
|
||||
LockObjectViewModel = new LockObjectViewModel();
|
||||
SelectItemCommand = new SimpleCommand(ExecuteSelectItemCommand);
|
||||
EditCommand = new SimpleCommand(ExecuteEditCommand);
|
||||
}
|
||||
|
||||
protected virtual void LoadDesignerItemViewModel(IDiagramViewModel parent, SelectableDesignerItemBase designerbase)
|
||||
@@ -98,36 +86,10 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
FontViewModel = CopyHelper.Mapper<FontViewModel, FontItem>(designerbase.FontItem);
|
||||
}
|
||||
|
||||
public virtual bool InitData()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
public virtual bool EditData()
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
public List<SelectableViewModelBase> SelectedItems
|
||||
{
|
||||
//todo
|
||||
get
|
||||
{
|
||||
return Parent.SelectedItems;
|
||||
}
|
||||
}
|
||||
|
||||
public IDiagramViewModel Parent
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
public SimpleCommand SelectItemCommand
|
||||
{
|
||||
get; private set;
|
||||
}
|
||||
public ICommand EditCommand
|
||||
{
|
||||
get; private set;
|
||||
}
|
||||
public Guid Id
|
||||
{
|
||||
get; set;
|
||||
@@ -145,19 +107,15 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
SetProperty(ref _parentId, value);
|
||||
}
|
||||
}
|
||||
public SelectableViewModelBase ParentItem
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
public bool IsGroup
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
private bool _isSelected;
|
||||
protected bool _isSelected;
|
||||
[Browsable(false)]
|
||||
public bool IsSelected
|
||||
public virtual bool IsSelected
|
||||
{
|
||||
get
|
||||
{
|
||||
@@ -165,24 +123,7 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
set
|
||||
{
|
||||
if (SetProperty(ref _isSelected, value))
|
||||
{
|
||||
//如果没有文字,失去焦点自动清除
|
||||
if (_isSelected == false && string.IsNullOrEmpty(Text))
|
||||
{
|
||||
ShowText = false;
|
||||
if (this is TextDesignerItemViewModel)
|
||||
{
|
||||
if (ParentItem != null)
|
||||
{
|
||||
ParentItem.OutTextItem = null;
|
||||
}
|
||||
Parent.DirectRemoveItemCommand.Execute(this);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
SetProperty(ref _isSelected, value);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -271,19 +212,14 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
get; set;
|
||||
}
|
||||
|
||||
|
||||
private string _text;
|
||||
[Browsable(true)]
|
||||
[CanDo]
|
||||
public string Text
|
||||
public virtual string Text
|
||||
{
|
||||
get
|
||||
{
|
||||
var text = _text;
|
||||
if (OutTextItem != null)
|
||||
{
|
||||
text = OutTextItem._text;
|
||||
}
|
||||
if (FontViewModel.FontCase == FontCase.Upper)
|
||||
{
|
||||
return text?.ToUpper();
|
||||
@@ -299,81 +235,17 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
set
|
||||
{
|
||||
if (OutTextItem != null)
|
||||
if (SetProperty(ref _text, value))
|
||||
{
|
||||
OutTextItem.Text = value;
|
||||
}
|
||||
else if (SetProperty(ref _text, value))
|
||||
{
|
||||
if (!string.IsNullOrEmpty(_text))
|
||||
{
|
||||
ShowText = true;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private bool _isReadOnlyText = false;
|
||||
public bool IsReadOnlyText
|
||||
|
||||
public virtual void AddToSelection(bool selected)
|
||||
{
|
||||
get
|
||||
{
|
||||
if (IsReadOnly)
|
||||
return true;
|
||||
return _isReadOnlyText;
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _isReadOnlyText, value);
|
||||
}
|
||||
}
|
||||
|
||||
private bool _showText;
|
||||
public virtual bool ShowText
|
||||
{
|
||||
get
|
||||
{
|
||||
return _showText;
|
||||
}
|
||||
set
|
||||
{
|
||||
SetProperty(ref _showText, value);
|
||||
}
|
||||
}
|
||||
|
||||
public DesignerItemViewModelBase OutTextItem
|
||||
{
|
||||
get; set;
|
||||
}
|
||||
|
||||
private void ExecuteSelectItemCommand(object param)
|
||||
{
|
||||
SelectItem((bool)param, !IsSelected);
|
||||
}
|
||||
|
||||
private void SelectItem(bool newselect, bool select)
|
||||
{
|
||||
if (newselect)
|
||||
{
|
||||
foreach (var designerItemViewModelBase in Parent.SelectedItems.ToList())
|
||||
{
|
||||
designerItemViewModelBase._isSelected = false;
|
||||
}
|
||||
}
|
||||
|
||||
IsSelected = select;
|
||||
}
|
||||
|
||||
public void AddToSelection(bool selected)
|
||||
{
|
||||
foreach (SelectableViewModelBase item in Parent.SelectedItems.ToList())
|
||||
item.IsSelected = false;
|
||||
|
||||
Parent.SelectedItems.Clear();
|
||||
if (selected == true)
|
||||
{
|
||||
Parent.SelectionService.AddToSelection(this);
|
||||
}
|
||||
}
|
||||
|
||||
private void FontViewModel_PropertyChanged(object sender, System.ComponentModel.PropertyChangedEventArgs e)
|
||||
@@ -384,13 +256,6 @@ namespace AIStudio.Wpf.DiagramDesigner
|
||||
}
|
||||
}
|
||||
|
||||
protected virtual void ExecuteEditCommand(object param)
|
||||
{
|
||||
if (IsReadOnly == true) return;
|
||||
|
||||
ShowText = true;
|
||||
}
|
||||
|
||||
public virtual void Dispose()
|
||||
{
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user