port from perforce
This commit is contained in:
68
intromat/Intromat/ViewModels/DocumentViewModel.cs
Normal file
68
intromat/Intromat/ViewModels/DocumentViewModel.cs
Normal file
@@ -0,0 +1,68 @@
|
||||
using System.Reactive.Linq;
|
||||
using Intromat.Views;
|
||||
using NodeNetwork.Toolkit.BreadcrumbBar;
|
||||
using ReactiveUI;
|
||||
using Splat;
|
||||
|
||||
namespace Intromat.ViewModels
|
||||
{
|
||||
public sealed class DocumentViewModel : FileViewModel
|
||||
{
|
||||
private readonly ObservableAsPropertyHelper<ReactiveObject> _currentViewModel;
|
||||
private readonly CodeGenNetworkViewModel _mainNetwork;
|
||||
|
||||
static DocumentViewModel()
|
||||
{
|
||||
Locator.CurrentMutable.Register(() => new DocumentView(), typeof(IViewFor<DocumentViewModel>));
|
||||
}
|
||||
|
||||
public static DocumentViewModel CreateDefault(MainViewModel mainVm, ModuleViewModel module, FolderViewModel parent, string name)
|
||||
{
|
||||
var documentVm = new DocumentViewModel(mainVm, module, parent, name);
|
||||
return documentVm;
|
||||
}
|
||||
|
||||
public DocumentViewModel(MainViewModel mainVm, ModuleViewModel module, FolderViewModel parent, string name)
|
||||
: base(module, parent, name, "igraph")
|
||||
{
|
||||
var network = new CodeGenNetworkViewModel(this, name);
|
||||
_mainNetwork = network;
|
||||
MainViewModel = mainVm;
|
||||
|
||||
this.WhenAnyValue(vm => vm.NetworkBreadcrumbBar.ActiveItem)
|
||||
.Cast<NetworkBreadcrumbViewModel?>()
|
||||
.Where(b => b != null)
|
||||
.Select(b => (CodeGenNetworkViewModel)b!.ViewModel!)
|
||||
.ToProperty(this, vm => vm.CurrentViewModel, out _currentViewModel);
|
||||
|
||||
NetworkBreadcrumbBar.ActivePath.Edit(list =>
|
||||
{
|
||||
list.Clear();
|
||||
list.Add(new NetworkBreadcrumbViewModel
|
||||
{
|
||||
Name = "Main",
|
||||
ViewModel = _mainNetwork
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
public override ReactiveObject CurrentViewModel => _currentViewModel.Value;
|
||||
|
||||
public CodeGenNetworkViewModel MainNetwork => _mainNetwork;
|
||||
|
||||
public BreadcrumbBarViewModel NetworkBreadcrumbBar { get; } = new();
|
||||
|
||||
public override string Name
|
||||
{
|
||||
get => base.Name;
|
||||
set
|
||||
{
|
||||
base.Name = value;
|
||||
_mainNetwork.Name = value;
|
||||
// TODO: adjust path!
|
||||
}
|
||||
}
|
||||
|
||||
public MainViewModel MainViewModel { get; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user