using System; using System.Collections.Generic; using System.Windows; using System.Linq; using RainmeterStudio.Business; using RainmeterStudio.Core.Documents; using RainmeterStudio.Core.Model.Events; using RainmeterStudio.UI.Dialogs; using RainmeterStudio.UI.ViewModel; using RainmeterStudio.Core.Model; namespace RainmeterStudio.UI.Controller { public class DocumentController { #region Managers /// /// Gets or sets the document manager /// protected DocumentManager DocumentManager { get; private set; } /// /// Gets or sets the project manager /// protected ProjectManager ProjectManager { get; private set; } #endregion #region Commands public Command DocumentCreateCommand { get; private set; } #endregion /// /// Triggered when a document is opened /// public event EventHandler DocumentOpened { add { DocumentManager.DocumentOpened += value; } remove { DocumentManager.DocumentOpened -= value; } } /// /// Triggered when a document is closed /// public event EventHandler DocumentClosed { add { DocumentManager.DocumentClosed += value; } remove { DocumentManager.DocumentClosed -= value; } } public Window OwnerWindow { get; set; } public DocumentController(DocumentManager documentManager, ProjectManager projectManager) { DocumentManager = documentManager; ProjectManager = projectManager; DocumentCreateCommand = new Command("DocumentCreateCommand", () => CreateWindow()); } public void CreateWindow(IDocumentTemplate defaultFormat = null, string defaultPath = "") { // Show dialog var dialog = new CreateDocumentDialog(this) { Owner = OwnerWindow, SelectedTemplate = new DocumentTemplateViewModel(defaultFormat), SelectedPath = defaultPath }; bool? res = dialog.ShowDialog(); if (!res.HasValue || !res.Value) return; var format = dialog.SelectedTemplate; var path = dialog.SelectedPath; // Call manager DocumentManager.Create(format.Template); } public void Create(IDocumentTemplate format) { // Call manager DocumentManager.Create(format); } /// /// Gets a list of document templates view models /// public IEnumerable DocumentTemplates { get { return DocumentManager.DocumentTemplates.Select(t => new DocumentTemplateViewModel(t)); } } } }