using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows; using System.Windows.Media.Imaging; using Tango.Core; using Tango.SharedUI.Helpers; namespace Tango.Scripting.IDE { public abstract class ProjectItem : ExtendedObject, IProjectItem { private static Dictionary _imageCache; static ProjectItem() { _imageCache = new Dictionary(); } public string Name { get; set; } public ObservableCollection Items { get; set; } public ProjectItem() { Items = new ObservableCollection(); } public abstract BitmapSource Image { get; } public abstract FrameworkElement OnGetView(); private FrameworkElement GetView() { return OnGetView(); } protected static BitmapSource GetImage(String name) { if (_imageCache.ContainsKey(name)) { return _imageCache[name]; } else { var image = ResourceHelper.GetImageFromResources(name); _imageCache.Add(name, image); return image; } } public abstract bool CanOpen { get; } public FrameworkElement View => GetView(); } }