/// <summary> /// Trata el mensaje de último archivo utilizado /// </summary> private void TreatMessageRecentFileUsed(MessageRecentFileUsed message) { if (message?.Type == MessageRecentFileUsed.ActionType.Open) { // Añade el archivo RecentFilesUsed.Add(message.Source, message.FileName, message.Text); // Graba el archivo new Classess.MRU.MRUFileRepository().Save(RecentFilesUsed); // Actualiza el menú ShowMenuMRUFiles(); } }
/// <summary> /// Muestra el menú de archivos abiertos /// </summary> private void ShowMenuMRUFiles() { System.Collections.Generic.List <string> applications = RecentFilesUsed.GetApplications(); // Borra los últimos menús mnuFileLastFiles.Items.Clear(); // Recorre las aplicaciones en la colección mostrándolas en el menú foreach (string application in applications) { MenuItem mnuApplication = CreateMenu(application, null, null, null); // Añade los archivos al menú de aplicación for (int index = RecentFilesUsed.Count - 1; index >= 0; index--) { if (RecentFilesUsed[index].Source.EqualsIgnoreCase(application)) { MenuItem mnuMru = CreateMenu($"{RecentFilesUsed.Count - index} {RecentFilesUsed[index].Name}", null, null, RecentFilesUsed[index]); // Añade el menú al menú de aplicación mnuApplication.Items.Add(mnuMru); // Añade el manejador de menús mnuMru.Click += (sender, evntArgs) => { Classess.MRU.MRUFileModel file = (sender as MenuItem).Tag as Classess.MRU.MRUFileModel; if (file != null && !file.FileName.IsEmpty()) { if (!System.IO.File.Exists(file.FileName)) { Globals.HostController.ControllerWindow.ShowMessage("No se encuentra el archivo"); } else { Globals.HostController.HostViewModelController.Messenger.SendRecentFileClicked(file.Source, file.FileName); } } }; } } // Añade el menú de aplicación a la opción principal mnuFileLastFiles.Items.Add(mnuApplication); } // Desactiva el menú si no hay ningún archivo mnuFileLastFiles.IsEnabled = mnuFileLastFiles.Items.Count > 0; }