Files
bluflame/aiwaz/Backup/Aiwaz.Editor/ViewModels/ResourceViewModel.cs
2026-04-18 22:31:51 +02:00

106 lines
2.9 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Collections.ObjectModel;
using Aiwaz.Contracts;
using System.Collections.Specialized;
using System.Windows.Controls;
using System.Windows.Media;
using System.Reflection;
using System.IO;
using System.Windows.Media.Imaging;
namespace Aiwaz.Editor.ViewModels
{
public class ResourceViewModel : ViewModelBase
{
private bool creating;
public IResource Resource;
public string DisplayName
{
get
{
return Resource.WellKnownName;
}
set
{
Resource.WellKnownName = value;
}
}
public ImageSource DisplayIcon
{
get
{
var stream = File.OpenRead("Resources/Untitled.png");
BitmapImage bitmap = new BitmapImage();
bitmap.BeginInit();
bitmap.StreamSource = stream;
bitmap.EndInit();
return bitmap;
}
}
private ObservableCollection<ResourceViewModel> nodes;
public ObservableCollection<ResourceViewModel> Nodes
{
get
{
if (nodes == null)
{
nodes = new ObservableCollection<ResourceViewModel>();
nodes.CollectionChanged += new NotifyCollectionChangedEventHandler(nodes_CollectionChanged);
}
return nodes;
}
set
{
if (nodes != value)
{
nodes = value;
OnPropertyChanged("Nodes");
}
}
}
void nodes_CollectionChanged(object sender, NotifyCollectionChangedEventArgs e)
{
if (creating)
return;
if (e.Action == NotifyCollectionChangedAction.Add)
{
foreach (ResourceViewModel newItem in e.NewItems)
{
Resource.Children.Insert(e.NewStartingIndex, newItem.Resource);
}
}
else if (e.Action == NotifyCollectionChangedAction.Remove)
{
foreach (ResourceViewModel oldItem in e.OldItems)
{
Resource.Children.Remove(oldItem.Resource);
}
}
OnPropertyChanged("Nodes");
}
public ResourceViewModel(IResource resource)
{
this.Resource = resource;
creating = true;
if (resource.Children != null)
foreach (var child in resource.Children)
{
Nodes.Add(new ResourceViewModel(child));
}
creating = false;
OnPropertyChanged("Nodes");
}
}
}