/// <summary>
 /// Constuctor.
 /// </summary>
 /// <param name="mruEntry">MRU entry.</param>
 public MRUFileEntryViewModel(MRUFileEntry mruEntry)
 {
     this.mruEntry = mruEntry;
 }
 /// <summary>
 /// Constuctor.
 /// </summary>
 /// <param name="viewModelStore">The store this view model belongs to.</param>
 /// <param name="mruEntry">MRU entry.</param>
 public MRUFileEntryViewModel(ViewModelStore viewModelStore, MRUFileEntry mruEntry)
     : base(viewModelStore)
 {
     this.mruEntry = mruEntry;
 }
 /// <summary>
 /// Moves an mru entry to the top of the list.
 /// </summary>
 /// <param name="entry">MRU entry.</param>
 public void MoveToTop(MRUFileEntry entry)
 {
     MoveToTop(entry.FileName, entry.ModelContextName);
 }
 /// <summary>
 /// Removes an mru entry from the list.
 /// </summary>
 /// <param name="entry">MRU entry.</param>
 public void RemoveMRUEntry(MRUFileEntry entry)
 {
     RemoveMRUEntry(entry.FileName, entry.ModelContextName);
 }
        public void AddMRUEntry(MRUFileEntry entry)
        {
            if (Contains(entry))
            {
                MoveToTop(entry);
                return;
            }

            this.ViewModelStore.Options.MRUFileEntries.Insert(0, entry);
            this.MRUFileEntries.Insert(0, new MRUFileEntryViewModel(this.ViewModelStore, entry));
        }
        /// <summary>
        /// Verifies if there is a specific mru entry.
        /// </summary>
        /// <param name="mruEntry">Mru entry.</param>
        /// <returns>True if a mru entry is found; False otherwise.</returns>
        public bool Contains(MRUFileEntry mruEntry)
        {
            foreach (MRUFileEntry entry in this.ViewModelStore.Options.MRUFileEntries)
            {
                if (entry.FileName == mruEntry.FileName && 
                    entry.ModelContextName == mruEntry.ModelContextName)
                {
                    return true;
                }
            }

            return false;
        }
        /// <summary>
        /// Open command executed.
        /// </summary>
        public void OpenCommandExecuted(MRUFileEntry entry)
        {
            if (entry != null && this.mainViewModel != null)
            {
                this.mainViewModel.OpenModel(entry.FileName);

                MoveToTopCommandExecuted(entry);
            }
        }
 /// <summary>
 /// Move to top command executed.
 /// </summary>
 public void MoveToTopCommandExecuted(MRUFileEntry entry)
 {
     if (entry != null)
         MoveToTop(entry);
 }
 /// <summary>
 /// Remove command executed.
 /// </summary>
 public void RemoveCommandExecuted(MRUFileEntry entry)
 {
     if (entry != null)
         RemoveMRUEntry(entry);
 }
 /// <summary>
 /// AddCommand executed.
 /// </summary>
 /// <param name="entry">MRU file entry.</param>
 public void AddCommandExecuted(MRUFileEntry entry)
 {
     AddMRUEntry(entry);
 }
        private MRUFileEntry DeserializeMRUFileEntry(System.Xml.XmlTextReader reader)
        {
            MRUFileEntry entry = new MRUFileEntry();

            while (reader.Read())
            {
                if( reader.NodeType == System.Xml.XmlNodeType.Element )
                {
                    if (reader.Name == "fileName")
                    {
                        entry.FileName = reader.ReadElementContentAsString();
                    }
                    else if (reader.Name == "shortName")
                    {
                        entry.ShortName = reader.ReadElementContentAsString();
                    }
                    else if (reader.Name == "modelContextName")
                    {
                        entry.ModelContextName = reader.ReadElementContentAsString();
                    }                  
                }
                else if (reader.NodeType == System.Xml.XmlNodeType.EndElement)
                {
                    if (reader.Name == "mruFileEntries")
                    {
                        reader.Skip();
                        break;
                    }
                }
            }

            return entry;

        }