Data model visualization - Moved services and VMs to UI.Shared

Data model visualization - Added support for custom display VMs
Data model visualization - Added framework for custom input VMs
Shared UI - Made internal converters public
This commit is contained in:
Robert committed 2020-07-02 16:04:21 +02:00
1 parent addb06c348
commit 448d94915c
30 files changed
+537 -129

No files matched your search

@@ -0,0 +1,60 @@
using System.Reflection;
using Artemis.Core.Extensions;
using Artemis.Core.Plugins.Abstract.DataModels.Attributes;
using Artemis.UI.Shared.Services;
using Stylet;
namespace Artemis.UI.Shared.DataModelVisualization.Shared
{
public class DataModelViewModel : DataModelVisualizationViewModel
{
private readonly IDataModelVisualizationService _dataModelVisualizationService;
private BindableCollection<DataModelVisualizationViewModel> _children;
internal DataModelViewModel()
{
Children = new BindableCollection<DataModelVisualizationViewModel>();
}
internal DataModelViewModel(PropertyInfo propertyInfo, object model, DataModelPropertyAttribute propertyDescription, DataModelVisualizationViewModel parent,
IDataModelVisualizationService dataModelVisualizationService)
{
_dataModelVisualizationService = dataModelVisualizationService;
PropertyInfo = propertyInfo;
Model = model;
PropertyDescription = propertyDescription;
Parent = parent;
Children = new BindableCollection<DataModelVisualizationViewModel>();
PopulateProperties();
}
public BindableCollection<DataModelVisualizationViewModel> Children
{
get => _children;
set => SetAndNotify(ref _children, value);
}
public void PopulateProperties()
{
Children.Clear();
foreach (var propertyInfo in Model.GetType().GetProperties())
{
var child = CreateChild(_dataModelVisualizationService, propertyInfo);
if (child != null)
Children.Add(child);
}
}
public override void Update()
{
if (PropertyInfo != null && PropertyInfo.PropertyType.IsStruct())
Model = PropertyInfo.GetValue(Parent.Model);
foreach (var dataModelVisualizationViewModel in Children)
dataModelVisualizationViewModel.Update();
UpdateListStatus();
}
}
}