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; } } }