ITsiTextItem.cs 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using BluePointLilac.Controls;
  2. using BluePointLilac.Methods;
  3. using System;
  4. using System.Windows.Forms;
  5. namespace ContextMenuManager.Controls.Interfaces
  6. {
  7. interface ITsiTextItem
  8. {
  9. string Text { get; set; }
  10. string ItemText { get; set; }
  11. ChangeTextMenuItem TsiChangeText { get; set; }
  12. }
  13. sealed class ChangeTextMenuItem : ToolStripMenuItem
  14. {
  15. public ChangeTextMenuItem(ITsiTextItem item) : base(AppString.Menu.ChangeText)
  16. {
  17. this.Click += (sender, e) =>
  18. {
  19. string name = ChangeText(item.Text);
  20. if(name != null) item.ItemText = name;
  21. };
  22. MyListItem listItem = (MyListItem)item;
  23. listItem.TextDoubleClick += (sender, e) =>
  24. {
  25. if(listItem is IFoldGroupItem) return;
  26. if(listItem.FindForm() is ShellStoreDialog.ShellStoreForm) return;
  27. if(this.Enabled) this.OnClick(null);
  28. };
  29. }
  30. private string ChangeText(string text)
  31. {
  32. using(InputDialog dlg = new InputDialog { Text = text, Title = AppString.Menu.ChangeText })
  33. {
  34. if(dlg.ShowDialog() != DialogResult.OK) return null;
  35. if(dlg.Text.Length == 0)
  36. {
  37. MessageBoxEx.Show(AppString.Message.TextCannotBeEmpty);
  38. return ChangeText(text);
  39. }
  40. else if(ResourceString.GetDirectString(dlg.Text).Length == 0)
  41. {
  42. MessageBoxEx.Show(AppString.Message.StringParsingFailed);
  43. return ChangeText(text);
  44. }
  45. else return dlg.Text;
  46. }
  47. }
  48. }
  49. }