private void buttonAddNewRule_Click(object sender, EventArgs e) { if (comboBoxRuleTypes.SelectedIndex < 0) { //messageBox Arguments are (Text, Title, No Button Visible, Cancel Button Visible) MessageBoxForm.msgIcon = SystemIcons.Warning; //this is used if you want to add a system icon to the message form. var messageBox = new MessageBoxForm("Select a rule type first.", "Warning", false, false); messageBox.ShowDialog(); return; } INamingGenerator ng = (INamingGenerator)comboBoxRuleTypes.SelectedItem; INamingGenerator newGenerator = (INamingGenerator)Activator.CreateInstance(ng.GetType()); AddNewNamingGenerator(newGenerator); listViewGenerators.Items[listViewGenerators.Items.Count - 1].Selected = true; int index = listViewGenerators.SelectedIndices[0]; if (textBoxNameFormat.Text.Contains("<" + (index + 1) + ">")) { } else { textBoxNameFormat.Text = textBoxNameFormat.Text + string.Format(" <{0}>", index + 1); } PopulateNames(); }
private void DisplayNamingGenerator(INamingGenerator generator) { panelRuleConfig.Controls.Clear(); NameGeneratorEditor newControl = null; if (generator is NumericCounter) { newControl = new NumericCounterEditor(generator as NumericCounter); } else if (generator is LetterCounter) { newControl = new LetterCounterEditor(generator as LetterCounter); } else if (generator is LetterIterator) { newControl = new LetterIteratorEditor(generator as LetterIterator); } else if (generator is WordIterator) { newControl = new WordIteratorEditor(generator as WordIterator); } if (newControl != null) { newControl.DataChanged += new EventHandler(NameGeneratorEditor_DataChanged); panelRuleConfig.Controls.Add(newControl); } buttonMoveRuleUp.Enabled = (newControl != null); buttonMoveRuleDown.Enabled = (newControl != null); buttonDeleteRule.Enabled = (newControl != null); }
// depth is 1-offset, as it will be the same as the one the user uses private IEnumerable <string> GenerateNames(int depth, string format, int currentNumber, int maxNumber) { List <string> result = new List <string>(); if (Generators.Count < depth || currentNumber > maxNumber) { return(result); } INamingGenerator generator = Generators[depth - 1]; // if the generator is endless, this will be an empty list. List <string> names = new List <string>(generator.GenerateNames()); for (int i = 0; i < generator.IterationsInCycle || generator.EndlessCycle; i++) { string substitution; if (generator.EndlessCycle) { substitution = generator.GenerateName(i); } else { substitution = names[i]; } string newFormat = format.Replace("<" + depth + ">", substitution); // if this is the last generator, use the single string; otherwise, recurse so the next // generator can have a crack at it as well. if (depth >= Generators.Count) { result.Add(newFormat); } else { // if the sub-generator didn't make anything, add the name directly and treat this one as the final. IEnumerable <string> subResult = GenerateNames(depth + 1, newFormat, currentNumber + result.Count, maxNumber); if (subResult.Any()) { result.AddRange(subResult); } else { result.Add(newFormat); } } if (currentNumber + result.Count >= maxNumber) { break; } } return(result); }
private void buttonAddNewRule_Click(object sender, EventArgs e) { if (comboBoxRuleTypes.SelectedIndex < 0) { MessageBox.Show("Select a rule type first."); return; } INamingGenerator ng = (INamingGenerator)comboBoxRuleTypes.SelectedItem; INamingGenerator newGenerator = (INamingGenerator)Activator.CreateInstance(ng.GetType()); AddNewNamingGenerator(newGenerator); listViewGenerators.Items[listViewGenerators.Items.Count - 1].Selected = true; PopulateNames(); }
private void buttonMoveRuleUp_Click(object sender, EventArgs e) { int index = listViewGenerators.SelectedIndices[0]; if (listViewGenerators.SelectedIndices.Count <= 0) { return; } if (index <= 0) { return; } INamingGenerator ng = Generators[index - 1]; Generators[index - 1] = Generators[index]; Generators[index] = ng; SyncGeneratorsToListView(); PopulateNames(); this.listViewGenerators.Items[index - 1].Selected = true; }
private void buttonMoveRuleDown_Click(object sender, EventArgs e) { if (listViewGenerators.SelectedIndices.Count <= 0) { return; } int index = listViewGenerators.SelectedIndices[0]; if (index >= Generators.Count - 1) { return; } INamingGenerator ng = Generators[index + 1]; Generators[index + 1] = Generators[index]; Generators[index] = ng; SyncGeneratorsToListView(); PopulateNames(); }
private void AddNewNamingGenerator(INamingGenerator generator) { Generators.Add(generator); SyncGeneratorsToListView(); }