using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.IO; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Media.Imaging; using Tango.SharedUI.Helpers; namespace Tango.Scripting.IDE { public abstract class Project : IProject { #region properties private static Dictionary _imageCache; public string FilePath { get; set; } public string WorkingFolder => Path.GetDirectoryName(FilePath); public string Name => Path.GetFileNameWithoutExtension(FilePath); public abstract BitmapSource Image { get; } public ObservableCollection Items { get; set; } public ObservableCollection Commands { get; set; } #endregion #region constructors static Project() { _imageCache = new Dictionary(); } public Project() { Items = new ObservableCollection(); Commands = new ObservableCollection { new SolutionItemCommand(BuildProject) { Name = "Build", Image= GetImage(@"Images/BuildSolution_16x.png") }, new SolutionItemCommand(SetStartUpProject) { Name = "Set as StartUp Project" , Image= GetImage(@"Images/Settings_Inverse_16x.png")}, new SolutionItemCommand(Remove) { Name = "Remove" , Image= GetImage(@"Images/deletered_16.png")}, new SolutionItemCommand(Rename) { Name = "Rename", Image= GetImage(@"Images/Rename_16x.png") }, new SolutionItemCommand(OpenFolderInFileExplorer) { Name = "Open Folder In File Explorer", Image= GetImage(@"Images/Open_16x.png") }, new SolutionItemCommand() { Name = "Add...", Commands = new ObservableCollection { new SolutionItemCommand(AddNewScript) { Name = "Add New Script" }, new SolutionItemCommand(AddExistingScript) { Name = "Add Existing Script" }, } } }; } #endregion #region Commands private void BuildProject() { } private void SetStartUpProject() { } private void Remove() { } private void Rename() { } private void OpenFolderInFileExplorer() { } /// /// Adds a new script file of type IProjectItem to the current project. /// private void AddNewScript() { } /// /// Adds the existing script file to the current project. /// private void AddExistingScript() { } #endregion #region Build_Run public abstract Task Build(); public abstract Task Run(); #endregion #region generic_functions 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 bool CanOpen => false; #endregion } }