ITsiTextItem.cs 1.7 KB

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