Пример #1
0
 private void OnOK(object sender, RoutedEventArgs e)
 {
     if (this.BuildTemplateList.SelectedItem != null)
     {
         this.SelectedBuildTemplate = this.BuildTemplateList.SelectedItem as BuildTemplateViewModel;
         this.DialogResult          = true;
         this.Close();
     }
 }
 /// <summary>
 /// Logic for the <see cref="ClearBuildTemplate"/> command.
 /// </summary>
 /// <param name="sender">The sender.</param>
 /// <param name="e">The execution arguments.</param>
 private void ClearBuildTemplate_Executed(object sender, ExecutedRoutedEventArgs e)
 {
     Debug.Assert(e.Parameter is BuildTemplateViewModel);
     BuildTemplateViewModel model = (BuildTemplateViewModel)e.Parameter;
     if (model.BuildTemplate != null)
     {
         BuildLibrary.DeleteBuildTemplate(model.Index);
         SyncModels();
     }
 }
 /// <summary>
 /// Logic for the <see cref="ExitRenameMode"/> command.
 /// </summary>
 /// <param name="sender">The sender.</param>
 /// <param name="e">The execution arguments.</param>
 private void ExitRenameMode_Executed(object sender, ExecutedRoutedEventArgs e)
 {
     if (renameTarget != null && bool.TryParse(e.Parameter as string, out bool setName))
     {
         PART_RenameInputDialog.Visibility = Visibility.Collapsed;
         if (setName)
             BuildLibrary.SetBuildTemplateName(renameTarget.Index, PART_RenameTextInput.Text);
         PART_RenameTextInput.Clear();
         renameTarget = null;
     }
 }
 /// <summary>
 /// Logic for the <see cref="EnterRenameMode"/> command.
 /// </summary>
 /// <param name="sender">The sender.</param>
 /// <param name="e">The execution arguments.</param>
 private void EnterRenameMode_Executed(object sender, ExecutedRoutedEventArgs e)
 {
     Debug.Assert(e.Parameter is BuildTemplateViewModel);
     BuildTemplateViewModel model = (BuildTemplateViewModel)e.Parameter;
     if (model.BuildTemplate != null)
     {
         PART_RenameInputDialog.Visibility = Visibility.Visible;
         PART_RenameTextInput.Text = model.Name;
         PART_RenameTextInput.Focus();
         PART_RenameTextInput.Select(0, model.Name.Length);
         renameTarget = model;
     }
 }
        /// <summary>
        /// Synchronises the view models for the build templates with the templates in the library.
        /// </summary>
        private void SyncModels()
        {
            Debug.Assert(BuildLibrary != null, "No BuildLibrary instance was set.");
            if (BuildLibrary == null)
                return;

            // Ensure there is a model for every slot
            while (BuildTemplateModels.Count < BuildTemplateItems.ItemCount)
            {
                BuildTemplateModels.Add(new BuildTemplateViewModel());
            }
            // And no more
            while (BuildTemplateModels.Count > BuildTemplateItems.ItemCount)
            {
                BuildTemplateModels.RemoveAt(BuildTemplateModels.Count - 1);
            }

            int pageOffset = BuildTemplateItems.ItemCount * (CurrentPage - 1);
            if (ProfessionFilter == Profession.None)
            {
                /* No filter applied so just show the builds as they are
                 * All models are used and empty ones allow for storing more builds
                 */
                for (int modelIndex = 0; modelIndex < BuildTemplateItems.ItemCount; modelIndex++)
                {
                    BuildTemplateViewModel model = BuildTemplateModels[modelIndex];
                    BuildTemplate build = BuildLibrary.GetBuildTemplate(modelIndex + pageOffset);
                    model.BuildTemplate = build;
                    model.Index = build?.Index ?? (modelIndex + pageOffset);
                    model.IsHidden = false;
                }
            }
            else
            {
                // If a filter is applied then get all templates and only create models for those that match
                List<BuildTemplate> buildTemplates = BuildLibrary.GetAllBuildTemplates(ProfessionFilter)
                    .OrderBy(b => b.Index).ToList();

                int modelIndex;
                for (modelIndex = 0; modelIndex < BuildTemplateItems.ItemCount
                    && (modelIndex + pageOffset) < buildTemplates.Count; modelIndex++)
                {
                    BuildTemplateViewModel model = BuildTemplateModels[modelIndex];
                    BuildTemplate build = buildTemplates[modelIndex + pageOffset];
                    model.BuildTemplate = build;
                    model.Index = build.Index;
                    model.IsHidden = false;
                }

                // Ensure there is an empty slot after the filtered results if there is room
                if (modelIndex < BuildTemplateModels.Count)
                {
                    BuildTemplateViewModel model = BuildTemplateModels[modelIndex];
                    model.BuildTemplate = null;
                    model.Index = BuildLibrary.GetNextFreeIndex();
                    model.IsHidden = false;
                    modelIndex++;
                }

                // Instead of deleting models, tell them to hide
                for (; modelIndex < BuildTemplateItems.ItemCount; modelIndex++)
                {
                    BuildTemplateViewModel model = BuildTemplateModels[modelIndex];
                    model.IsHidden = true;
                    model.BuildTemplate = null;
                }
            }
        }