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.Commands; using Tango.Scripting.IDE.Controls; using Tango.Scripting.IDE.Projects; using Tango.Scripting.IDE.ProjectTypes; using Tango.SharedUI; namespace Tango.Scripting.IDE { public class ScriptIDEViewVM : ViewModel { private List _projectTypes; public ObservableCollection ErrorList { get; set; } #region Properties private Solution _solution; public Solution Solution { get { return _solution; } set { _solution = value; RaisePropertyChangedAuto(); } } private IProject _selectedProject; public IProject SelectedProject { get { return _selectedProject; } set { _selectedProject = value; RaisePropertyChangedAuto(); } } private IProjectItem _selectedProjectItem; public IProjectItem SelectedProjectItem { get { return _selectedProjectItem; } set { _selectedProjectItem = value; RaisePropertyChangedAuto(); } } private ObservableCollection _openProjectItems; public ObservableCollection OpenProjectItems { get { return _openProjectItems; } set { _openProjectItems = value; RaisePropertyChangedAuto(); } } #endregion #region Commands public RelayCommand NewProjectCommand { get; set; } public RelayCommand OpenProjectItemCommand { get; set; } public RelayCommand CloseProjectItemCommand { get; set; } #endregion #region Constructors public ScriptIDEViewVM() { _projectTypes = new List(); OpenProjectItems = new ObservableCollection(); ErrorList = new ObservableCollection(); RegisterProjectType(new StubProjectType()); RegisterProjectType(new UnitTestProjectType()); Solution = new Solution(); Solution.Projects.Add(_projectTypes.First().NewProject("Test Project.stub")); //Init Commands NewProjectCommand = new RelayCommand(AddNewProject); OpenProjectItemCommand = new RelayCommand(OpenProjectItem); CloseProjectItemCommand = new RelayCommand(CloseProjectItem); } #endregion #region Public Methods private void OpenProjectItem(IProjectItem projectItem) { if (!OpenProjectItems.Contains(projectItem)) { OpenProjectItems.Add(projectItem); } SelectedProjectItem = projectItem; } private void CloseProjectItem(IProjectItem projectItem) { OpenProjectItems.Remove(projectItem); SelectedProjectItem = OpenProjectItems.FirstOrDefault(); } public void RegisterProjectType(IProjectType projectType) { _projectTypes.Add(projectType); } public void UnRegisterProjectItemHandler(IProjectType projectType) { _projectTypes.Remove(projectType); } /// /// Open a dialog to create a new project /// private void AddNewProject() { Dialogs.NewProjectDialog dialog = new Dialogs.NewProjectDialog(true); if(dialog.ShowDialog() == true) { MessageBox.Show("You said: OK"); } } #endregion } }