Profile editor - Many runtime fixes, UI is back to usable!

This commit is contained in:
SpoinkyNL committed 2020-09-12 23:11:08 +02:00
1 parent 83d2a07edc
commit 5b321b25c9
38 files changed
+309 -352

No files matched your search

@@ -1,32 +1,49 @@
using System;
using System.Linq;
using Artemis.Core;
using Artemis.UI.Ninject.Factories;
using Artemis.UI.Shared.Services;
using Stylet;
namespace Artemis.UI.Screens.ProfileEditor.LayerProperties.DataBindings
{
public class DataBindingsViewModel<T> : Conductor<IDataBindingViewModel>.Collection.AllActive
public class DataBindingsViewModel : Conductor<IDataBindingViewModel>.Collection.AllActive
{
private readonly IDataBindingsVmFactory _dataBindingsVmFactory;
public DataBindingsViewModel(LayerProperty<T> layerProperty, IDataBindingsVmFactory dataBindingsVmFactory)
private readonly IProfileEditorService _profileEditorService;
public DataBindingsViewModel(IProfileEditorService profileEditorService, IDataBindingsVmFactory dataBindingsVmFactory)
{
_profileEditorService = profileEditorService;
_dataBindingsVmFactory = dataBindingsVmFactory;
LayerProperty = layerProperty;
Initialise();
_profileEditorService.SelectedDataBindingChanged += ProfileEditorServiceOnSelectedDataBindingChanged;
CreateDataBindingViewModels();
}
public LayerProperty<T> LayerProperty { get; }
private void Initialise()
private void CreateDataBindingViewModels()
{
var registrations = LayerProperty.GetAllDataBindingRegistrations();
Items.Clear();
var layerProperty = _profileEditorService.SelectedDataBinding;
if (layerProperty == null)
return;
var registrations = layerProperty.GetAllDataBindingRegistrations();
// Create a data binding VM for each data bindable property. These VMs will be responsible for retrieving
// and creating the actual data bindings
foreach (var registration in registrations)
ActivateItem(_dataBindingsVmFactory.DataBindingViewModel(registration));
}
protected override void OnClose()
{
_profileEditorService.SelectedDataBindingChanged -= ProfileEditorServiceOnSelectedDataBindingChanged;
base.OnClose();
}
private void ProfileEditorServiceOnSelectedDataBindingChanged(object? sender, EventArgs e)
{
CreateDataBindingViewModels();
}
}
}