private void BuildRecentTemplates()
        {
            RecentTemplates rts = RecentTemplateManager.GetRecentTemplates(5);

            foreach (var rt in rts)
            {
                MenuItem mi = new MenuItem();
                mi.Header  = rt.Name;
                mi.ToolTip = rt.Path;

                mi.Click += delegate(Object sender, RoutedEventArgs e)
                {
                    foreach (var wnd in App.Current.Windows)
                    {
                        if (wnd.GetType() == typeof(ViewWindow))
                        {
                            ViewWindow vw = (ViewWindow)wnd;

                            MenuItem m    = (MenuItem)sender;
                            string   path = (string)m.ToolTip;

                            vw._LoadTemplate(path);
                        }
                    }
                };

                cmMain.Items.Add(mi);
            }
        }
 /// <summary>
 /// загружаем шаблон из файла и строем визуальное отображения
 /// </summary>
 /// <param name="fileName"></param>
 public void _LoadTemplate(string fileName)
 {
     currentTemplate = ViewWindowTemplate.Load(fileName);
     new SkinManager().ApplySkin(currentTemplate.Skin);
     BuildTemplateView();
     //добавляем в список недавних файлов
     RecentTemplateManager.AddNewRecentTemplate(currentTemplate.Name, fileName);
 }
        /// <summary>
        /// Формируем шаблон на основе интерфейса и сохраняем в файл
        /// </summary>
        /// <param name="fileName">Путь файла для сохранения</param>
        private void _SaveTemplate(string fileName)
        {
            //Перебираем все уровни
            SaveTemplateView();
            currentTemplate.Name = System.IO.Path.GetFileNameWithoutExtension(fileName);
            currentTemplate.Skin = new SkinManager().GetCurrentSkin();
            currentTemplate.Save(fileName);

            //добавляем в список недавних файлов
            RecentTemplateManager.AddNewRecentTemplate(currentTemplate.Name, fileName);
        }
        public override void GetTemplates(TemplateSelectorFiltersParameters parameters, GetItemsCompleted <TemplateHeader> completed)
        {
            Assert.ArgumentNotNull(parameters, nameof(parameters));
            Assert.ArgumentNotNull(completed, nameof(completed));

            var templates = Templates;

            if (templates == null)
            {
                completed(Enumerable.Empty <TemplateHeader>());
                return;
            }

            var templateList = templates.ToList();

            var recent = RecentTemplateManager.GetTemplates(parameters.DatabaseUri);

            var result = recent.Where(templateHeader => templateList.Any(t => t.TemplateUri == templateHeader.TemplateUri)).ToList();

            completed(result);
        }
        public override void AddToRecent(TemplateHeader templateHeader)
        {
            Assert.ArgumentNotNull(templateHeader, nameof(templateHeader));

            RecentTemplateManager.AddToRecent(templateHeader);
        }
        private void CreateItem([NotNull] object sender, [NotNull] RoutedEventArgs e)
        {
            Debug.ArgumentNotNull(sender, nameof(sender));
            Debug.ArgumentNotNull(e, nameof(e));

            var context = Context;

            if (context == null)
            {
                return;
            }

            var parent = context.SelectedItems.FirstOrDefault() as ItemTreeViewItem;

            if (parent == null)
            {
                return;
            }

            var menuItem = e.Source as MenuItem;

            if (menuItem == null)
            {
                return;
            }

            var templateHeader = menuItem.Tag as TemplateHeader;

            if (templateHeader == null)
            {
                return;
            }

            var d = new AddInsertOptionDialog();

            d.NewItemName.Text = templateHeader.Name;

            if (AppHost.Shell.ShowDialog(d) != true)
            {
                return;
            }

            RecentTemplateManager.AddToRecent(templateHeader);

            var newName     = d.ItemName;
            var templateId  = templateHeader.TemplateUri.ItemId;
            var templateUri = new ItemUri(parent.ItemUri.DatabaseUri, templateId);

            ItemUri itemUri;

            var isBranch = IdManager.GetTemplateType(templateId) != "template";

            if (isBranch)
            {
                itemUri = parent.ItemUri.Site.DataService.AddFromMaster(parent.ItemUri, templateUri, newName);
            }
            else
            {
                itemUri = parent.ItemUri.Site.DataService.AddFromTemplate(parent.ItemUri, templateUri, newName);
            }

            if (itemUri == ItemUri.Empty)
            {
                return;
            }

            parent.RefreshAndExpand(false);
            parent.SelectChildItems(new[]
            {
                itemUri
            });

            var itemVersionUri = new ItemVersionUri(itemUri, LanguageManager.CurrentLanguage, Version.Latest);

            AppHost.OpenContentEditor(itemVersionUri);

            Notifications.RaiseItemAdded(this, itemVersionUri, parent.ItemUri);
        }