/// <summary> /// Edit > Rename /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void miRename_Click(object sender, EventArgs e) { // Quit if none selected if (lbPlanList.SelectedItems.Count == 0) { return; } // Prompts the user for a new name var plan = lbPlanList.SelectedItems[0].Tag as Plan; using (NewPlanWindow f = new NewPlanWindow()) { f.Text = "Rename Plan"; f.PlanName = plan.Name; DialogResult dr = f.ShowDialog(); if (dr == DialogResult.Cancel) { return; } // Change the name plan.Name = f.Result; UpdateContent(true); } }
/// <summary> /// Edit > Rename... /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void miRenameEdit_Click(object sender, EventArgs e) { // Quit if none selected if (lbPlanList.SelectedItems.Count == 0) { return; } // Prompts the user for a new name Plan plan = (Plan)lbPlanList.SelectedItems[0].Tag; using (NewPlanWindow f = new NewPlanWindow()) { f.Text = @"Rename Plan or Edit Description"; f.PlanName = plan.Name; f.PlanDescription = plan.Description; DialogResult dr = f.ShowDialog(); if (dr == DialogResult.Cancel) { return; } // Change the name plan.Name = f.PlanName; plan.Description = f.PlanDescription; UpdateContent(true); } }
/// <summary> /// Merge the selected plans. /// </summary> private void MergePlans() { // Build the merge plan var result = new Plan(m_character); using (result.SuspendingEvents()) { // Merge the plans foreach (ListViewItem item in lbPlanList.SelectedItems) { Plan plan = (Plan)item.Tag; foreach (PlanEntry entry in plan) { // If not planned yet, we add the new entry if (!result.IsPlanned(entry.Skill, entry.Level)) { result.PlanTo(entry.Skill, entry.Level, entry.Priority, entry.Notes); } // Then we update the entry's groups var newEntry = result.GetEntry(entry.Skill, entry.Level); // The entry may be null if the character already knows it. if (newEntry != null) { newEntry.PlanGroups.Add(plan.Name); } } } } // Request a new name for this plan using (NewPlanWindow npw = new NewPlanWindow()) { DialogResult dr = npw.ShowDialog(); if (dr == DialogResult.Cancel) { return; } // Change the plan's name and add it result.Name = npw.Result; m_character.Plans.Add(result); } }
/// <summary> /// Occurs when the user clicks one of the children of the "Plans" menu. /// The item may be an existing plan or the "New plan" item. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tsddbPlans_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e) { if (e.ClickedItem.Tag == m_plan) { return; } // Is it another plan ? if (e.ClickedItem.Tag != null) { var plan = (Plan)e.ClickedItem.Tag; var window = WindowsFactory <PlanWindow> .GetByTag(plan); // Opens the existing window when there is one, or switch to this plan when no window opened. if (window != null) { window.BringToFront(); } else { Plan = plan; } return; } // So it is "new plan" using (NewPlanWindow npw = new NewPlanWindow()) { DialogResult dr = npw.ShowDialog(); if (dr == DialogResult.Cancel) { return; } var plan = new Plan(Character) { Name = npw.Result }; Character.Plans.Add(plan); Plan = plan; } }
/// <summary> /// File > Load plan from file. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void miLoadPlanFromFile_Click(object sender, EventArgs e) { // Prompt the user to select a file DialogResult dr = ofdOpenDialog.ShowDialog(); if (dr == DialogResult.Cancel) { return; } // Load from file and returns if an error occured (user has already been warned) var serial = PlanExporter.ImportFromXML(ofdOpenDialog.FileName); if (serial == null) { return; } // Imports the plan Plan loadedPlan = new Plan(m_character); loadedPlan.Import(serial); // Cleans any obsolete entries and fixes the prerequisites loadedPlan.CleanObsoleteEntries(); loadedPlan.Fix(); // Prompt the user for the plan name using (NewPlanWindow npw = new NewPlanWindow()) { npw.PlanName = Path.GetFileNameWithoutExtension(ofdOpenDialog.FileName); DialogResult xdr = npw.ShowDialog(); if (xdr == DialogResult.Cancel) { return; } loadedPlan.Name = npw.Result; m_character.Plans.Add(loadedPlan); } }
/// <summary> /// File > New plan. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void miNewPlan_Click(object sender, EventArgs e) { // Request a new name for this plan using (NewPlanWindow npw = new NewPlanWindow()) { DialogResult dr = npw.ShowDialog(); if (dr == DialogResult.Cancel) { return; } // Create the plan and add it var plan = new Plan(m_character); plan.Name = npw.Result; m_character.Plans.Add(plan); // Open a window for this plan WindowsFactory <PlanWindow> .ShowByTag(plan); } this.Close(); }
/// <summary> /// File > Load plan from character. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void miLoadPlanFromCharacter_Click(object sender, EventArgs e) { // Prompt the user to choose the source character and plan. using (PlanImportationFromCharacterForm cps = new PlanImportationFromCharacterForm(m_character)) { DialogResult dr = cps.ShowDialog(); if (dr == DialogResult.Cancel) { return; } // Retrieves the cloned plan var plan = cps.TargetPlan; // Cleans any obsolete entries and fixes the prerequisites plan.CleanObsoleteEntries(); plan.Fix(); // Prompt the user for the new plan's name using (NewPlanWindow f = new NewPlanWindow()) { f.PlanName = m_character.Name + "-" + plan.Name; f.Text = "Save Plan As"; dr = f.ShowDialog(); if (dr == DialogResult.Cancel) { return; } plan.Name = f.Result; } // Add the plan to the character's list m_character.Plans.Add(plan); } }
/// <summary> /// File > Import Plan from Character.... /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void miImportPlanFromCharacter_Click(object sender, EventArgs e) { // Prompt the user to choose the source character and plan. using (PlanImportationFromCharacterWindow cps = new PlanImportationFromCharacterWindow(m_character)) { DialogResult dr = cps.ShowDialog(); if (dr == DialogResult.Cancel) { return; } // Retrieves the cloned plan Plan plan = cps.TargetPlan; // Adds and fixes the prerequisites order plan.FixPrerequisites(); // Prompt the user for the new plan's name using (NewPlanWindow f = new NewPlanWindow()) { f.PlanName = $"{m_character.Name}-{plan.Name}"; f.Text = @"Save Plan As"; dr = f.ShowDialog(); if (dr == DialogResult.Cancel) { return; } plan.Name = f.PlanName; plan.Description = f.PlanDescription; } // Add the plan to the character's list m_character.Plans.Add(plan); } }
/// <summary> /// File > New plan... /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void miNewPlan_Click(object sender, EventArgs e) { // Request a new name for this plan using (NewPlanWindow npw = new NewPlanWindow()) { DialogResult dr = npw.ShowDialog(); if (dr == DialogResult.Cancel) { return; } // Create the plan and add it Plan plan = new Plan(m_character) { Name = npw.PlanName, Description = npw.PlanDescription }; m_character.Plans.Add(plan); // Open a window for this plan PlanWindow.ShowPlanWindow(plan: plan); } Close(); }
/// <summary> /// File > Import Plan from File... /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void miImportPlanFromFile_Click(object sender, EventArgs e) { // Prompt the user to select a file DialogResult dr = ofdOpenDialog.ShowDialog(); if (dr == DialogResult.Cancel) { return; } // Load from file and returns if an error occurred (user has already been warned) SerializablePlan serial = PlanIOHelper.ImportFromXML(ofdOpenDialog.FileName); if (serial == null) { return; } // Imports the plan Plan loadedPlan = new Plan(m_character, serial); // Prompt the user for the plan name using (NewPlanWindow npw = new NewPlanWindow()) { npw.PlanName = Path.GetFileNameWithoutExtension(ofdOpenDialog.FileName); DialogResult xdr = npw.ShowDialog(); if (xdr == DialogResult.Cancel) { return; } loadedPlan.Name = npw.PlanName; loadedPlan.Description = npw.PlanDescription; m_character.Plans.Add(loadedPlan); } }
/// <summary> /// File > Load plan from file. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void miLoadPlanFromFile_Click(object sender, EventArgs e) { // Prompt the user to select a file DialogResult dr = ofdOpenDialog.ShowDialog(); if (dr == DialogResult.Cancel) return; // Load from file and returns if an error occurred (user has already been warned) var serial = PlanExporter.ImportFromXML(ofdOpenDialog.FileName); if (serial == null) return; // Imports the plan Plan loadedPlan = new Plan(m_character); loadedPlan.Import(serial); // Prompt the user for the plan name using (NewPlanWindow npw = new NewPlanWindow()) { npw.PlanName = Path.GetFileNameWithoutExtension(ofdOpenDialog.FileName); DialogResult xdr = npw.ShowDialog(); if (xdr == DialogResult.Cancel) return; loadedPlan.Name = npw.Result; m_character.Plans.Add(loadedPlan); } }
/// <summary> /// Merge the selected plans. /// </summary> private void MergePlans() { // Build the merge plan var result = new Plan(m_character); using (result.SuspendingEvents()) { // Merge the plans foreach (ListViewItem item in lbPlanList.SelectedItems) { Plan plan = (Plan)item.Tag; foreach (PlanEntry entry in plan) { // If not planned yet, we add the new entry if (!result.IsPlanned(entry.Skill, entry.Level)) result.PlanTo(entry.Skill, entry.Level, entry.Priority, entry.Notes); // Then we update the entry's groups var newEntry = result.GetEntry(entry.Skill, entry.Level); // The entry may be null if the character already knows it. if (newEntry != null) newEntry.PlanGroups.Add(plan.Name); } } } // Request a new name for this plan using (NewPlanWindow npw = new NewPlanWindow()) { DialogResult dr = npw.ShowDialog(); if (dr == DialogResult.Cancel) return; // Change the plan's name and add it result.Name = npw.Result; m_character.Plans.Add(result); } }
/// <summary> /// File > Load plan from character. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void miLoadPlanFromCharacter_Click(object sender, EventArgs e) { // Prompt the user to choose the source character and plan. using (PlanImportationFromCharacterForm cps = new PlanImportationFromCharacterForm(m_character)) { DialogResult dr = cps.ShowDialog(); if (dr == DialogResult.Cancel) return; // Retrieves the cloned plan var plan = cps.TargetPlan; // Adds and fixes the prerequisites order plan.Fix(); // Prompt the user for the new plan's name using (NewPlanWindow f = new NewPlanWindow()) { f.PlanName = m_character.Name + "-" + plan.Name; f.Text = "Save Plan As"; dr = f.ShowDialog(); if (dr == DialogResult.Cancel) return; plan.Name = f.Result; } // Add the plan to the character's list m_character.Plans.Add(plan); } }
/// <summary> /// Context > Copy to new plan... /// Opens a dialog to prompt the user for a name and create a plan with the selected entries. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void miCopyToNewPlan_Click(object sender, EventArgs e) { IList<PlanEntry> entries = SelectedEntries.ToList(); if (!entries.Any()) return; // Ask the user for a new name string planName, planDescription; using (NewPlanWindow npw = new NewPlanWindow()) { DialogResult dr = npw.ShowDialog(); if (dr == DialogResult.Cancel) return; planName = npw.PlanName; planDescription = npw.PlanDescription; } // Create a new plan Plan newPlan = new Plan(m_character) { Name = planName, Description = planDescription }; IPlanOperation operation = newPlan.TryAddSet(entries, $"Exported from {m_plan.Name}"); operation.Perform(); // Add plan and save m_character.Plans.Add(newPlan); }
/// <summary> /// File > New plan... /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void miNewPlan_Click(object sender, EventArgs e) { // Request a new name for this plan using (NewPlanWindow npw = new NewPlanWindow()) { DialogResult dr = npw.ShowDialog(); if (dr == DialogResult.Cancel) return; // Create the plan and add it Plan plan = new Plan(m_character) { Name = npw.PlanName, Description = npw.PlanDescription }; m_character.Plans.Add(plan); // Open a window for this plan PlanWindow.ShowPlanWindow(plan: plan); } Close(); }
/// <summary> /// Plans > New Plan... /// Displays the "New Plan" window. /// </summary> /// <param name="sender">menu item clicked</param> /// <param name="e"></param> private void tsmiNewPlan_Click(object sender, EventArgs e) { Character character = GetCurrentCharacter(); if (character == null) return; // Ask the user for a new name Plan newPlan; using (NewPlanWindow npw = new NewPlanWindow()) { DialogResult dr = npw.ShowDialog(); if (dr == DialogResult.Cancel) return; // Create a new plan newPlan = new Plan(character) { Name = npw.PlanName, Description = npw.PlanDescription }; } // Add plan and save character.Plans.Add(newPlan); // Show the editor for this plan PlanWindow.ShowPlanWindow(plan: newPlan); }
/// <summary> /// Occurs when the user clicks one of the children of the "Plans" menu. /// The item may be an existing plan or the "New plan" item. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void tsddbPlans_DropDownItemClicked(object sender, ToolStripItemClickedEventArgs e) { if (e.ClickedItem.Tag == m_plan) return; // Is it another plan ? if (e.ClickedItem.Tag != null) { var plan = (Plan)e.ClickedItem.Tag; var window = WindowsFactory<PlanWindow>.GetByTag(plan); // Opens the existing window when there is one, or switch to this plan when no window opened. if (window != null) { window.BringToFront(); } else { Plan = plan; } return; } // So it is "new plan" using (NewPlanWindow npw = new NewPlanWindow()) { DialogResult dr = npw.ShowDialog(); if (dr == DialogResult.Cancel) return; var plan = new Plan(Character) { Name = npw.Result }; Character.Plans.Add(plan); Plan = plan; } }
/// <summary> /// Edit > Rename... /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void miRenameEdit_Click(object sender, EventArgs e) { // Quit if none selected if (lbPlanList.SelectedItems.Count == 0) return; // Prompts the user for a new name Plan plan = (Plan)lbPlanList.SelectedItems[0].Tag; using (NewPlanWindow f = new NewPlanWindow()) { f.Text = @"Rename Plan or Edit Description"; f.PlanName = plan.Name; f.PlanDescription = plan.Description; DialogResult dr = f.ShowDialog(); if (dr == DialogResult.Cancel) return; // Change the name plan.Name = f.PlanName; plan.Description = f.PlanDescription; UpdateContent(true); } }
/// <summary> /// Plans > New Plan... /// Displays the "New Plan" window. /// </summary> /// <param name="sender">menu item clicked</param> /// <param name="e"></param> private void newPlanMenuItem_Click(object sender, EventArgs e) { Character character = GetCurrentCharacter(); if (character == null) return; // Ask the user for a new name string planName; using (NewPlanWindow npw = new NewPlanWindow()) { DialogResult dr = npw.ShowDialog(); if (dr == DialogResult.Cancel) return; planName = npw.Result; } // Create a new plan Plan newPlan = new Plan(character) { Name = planName }; // Add plan and save character.Plans.Add(newPlan); // Show the editor for this plan WindowsFactory<PlanWindow>.ShowByTag(newPlan); }
/// <summary> /// File > New plan. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void miNewPlan_Click(object sender, EventArgs e) { // Request a new name for this plan using (NewPlanWindow npw = new NewPlanWindow()) { DialogResult dr = npw.ShowDialog(); if (dr == DialogResult.Cancel) return; // Create the plan and add it var plan = new Plan(m_character); plan.Name = npw.Result; m_character.Plans.Add(plan); // Open a window for this plan WindowsFactory<PlanWindow>.ShowByTag(plan); } this.Close(); }
/// <summary> /// Edit > Rename /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void miRename_Click(object sender, EventArgs e) { // Quit if none selected if (lbPlanList.SelectedItems.Count == 0) return; // Prompts the user for a new name var plan = lbPlanList.SelectedItems[0].Tag as Plan; using (NewPlanWindow f = new NewPlanWindow()) { f.Text = "Rename Plan"; f.PlanName = plan.Name; DialogResult dr = f.ShowDialog(); if (dr == DialogResult.Cancel) return; // Change the name plan.Name = f.Result; UpdateContent(true); } }
/// <summary> /// Context > Copy to new plan... /// Opens a dialog to prompt the user for a name and create a plan with the selected entries. /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void miCopyToNewPlan_Click(object sender, EventArgs e) { var entries = SelectedEntries; if (entries.IsEmpty()) return; // Ask the user for a new name string planName; using (NewPlanWindow npw = new NewPlanWindow()) { DialogResult dr = npw.ShowDialog(); if (dr == DialogResult.Cancel) return; planName = npw.Result; } // Create a new plan Plan newPlan = new Plan(Character); newPlan.Name = planName; var operation = newPlan.TryAddSet(entries, "Exported from " + m_plan.Name); operation.Perform(); // Add plan and save Character.Plans.Add(newPlan); }