Text.cs 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156
  1. using System;
  2. using System.Text;
  3. using Terminal.Gui;
  4. using Terminal.Gui.TextValidateProviders;
  5. namespace UICatalog {
  6. [ScenarioMetadata (Name: "Text Input Controls", Description: "Tests all text input controls")]
  7. [ScenarioCategory ("Controls")]
  8. [ScenarioCategory ("Bug Repro")]
  9. class Text : Scenario {
  10. public override void Setup ()
  11. {
  12. var s = "TAB to jump between text fields.";
  13. var textField = new TextField (s) {
  14. X = 1,
  15. Y = 1,
  16. Width = Dim.Percent (50),
  17. //ColorScheme = Colors.Dialog
  18. };
  19. Win.Add (textField);
  20. var labelMirroringTextField = new Label (textField.Text) {
  21. X = Pos.Right (textField) + 1,
  22. Y = Pos.Top (textField),
  23. Width = Dim.Fill (1)
  24. };
  25. Win.Add (labelMirroringTextField);
  26. textField.TextChanged += (prev) => {
  27. labelMirroringTextField.Text = textField.Text;
  28. };
  29. var textView = new TextView () {
  30. X = 1,
  31. Y = 3,
  32. Width = Dim.Percent (50),
  33. Height = Dim.Percent (30),
  34. ColorScheme = Colors.Dialog
  35. };
  36. textView.Text = s;
  37. Win.Add (textView);
  38. var labelMirroringTextView = new Label (textView.Text) {
  39. X = Pos.Right (textView) + 1,
  40. Y = Pos.Top (textView),
  41. Width = Dim.Fill (1),
  42. Height = Dim.Height (textView),
  43. };
  44. Win.Add (labelMirroringTextView);
  45. textView.TextChanged += () => {
  46. labelMirroringTextView.Text = textView.Text;
  47. };
  48. var btnMultiline = new Button ("Toggle Multiline") {
  49. X = Pos.Right (textView) + 1,
  50. Y = Pos.Top (textView) + 1
  51. };
  52. btnMultiline.Clicked += () => textView.Multiline = !textView.Multiline;
  53. Win.Add (btnMultiline);
  54. // BUGBUG: 531 - TAB doesn't go to next control from HexView
  55. var hexView = new HexView (new System.IO.MemoryStream (Encoding.ASCII.GetBytes (s))) {
  56. X = 1,
  57. Y = Pos.Bottom (textView) + 1,
  58. Width = Dim.Fill (1),
  59. Height = Dim.Percent (30),
  60. //ColorScheme = Colors.Dialog
  61. };
  62. Win.Add (hexView);
  63. var dateField = new DateField (System.DateTime.Now) {
  64. X = 1,
  65. Y = Pos.Bottom (hexView) + 1,
  66. Width = 20,
  67. //ColorScheme = Colors.Dialog,
  68. IsShortFormat = false
  69. };
  70. Win.Add (dateField);
  71. var labelMirroringDateField = new Label (dateField.Text) {
  72. X = Pos.Right (dateField) + 1,
  73. Y = Pos.Top (dateField),
  74. Width = Dim.Width (dateField),
  75. Height = Dim.Height (dateField),
  76. };
  77. Win.Add (labelMirroringDateField);
  78. dateField.TextChanged += (prev) => {
  79. labelMirroringDateField.Text = dateField.Text;
  80. };
  81. _timeField = new TimeField (DateTime.Now.TimeOfDay) {
  82. X = Pos.Right (labelMirroringDateField) + 5,
  83. Y = Pos.Bottom (hexView) + 1,
  84. Width = 20,
  85. //ColorScheme = Colors.Dialog,
  86. IsShortFormat = false
  87. };
  88. Win.Add (_timeField);
  89. _labelMirroringTimeField = new Label (_timeField.Text) {
  90. X = Pos.Right (_timeField) + 1,
  91. Y = Pos.Top (_timeField),
  92. Width = Dim.Width (_timeField),
  93. Height = Dim.Height (_timeField),
  94. };
  95. Win.Add (_labelMirroringTimeField);
  96. _timeField.TimeChanged += TimeChanged;
  97. // MaskedTextProvider
  98. var netProvider = new Label (".Net MaskedTextProvider [ 999 000 LLL >LLL| AAA aaa ]") {
  99. X = Pos.Left (dateField),
  100. Y = Pos.Bottom (dateField) + 1
  101. };
  102. Win.Add (netProvider);
  103. var netProviderField = new TextValidateField<NetMaskedTextProvider> ("999 000 LLL >LLL| AAA aaa") {
  104. X = Pos.Right (netProvider) + 1,
  105. Y = Pos.Y (netProvider),
  106. Width = 40,
  107. TextAlignment = TextAlignment.Centered
  108. };
  109. Win.Add (netProviderField);
  110. // TextRegexProvider
  111. var regexProvider = new Label ("Gui.cs TextRegexProvider [ ^([0-9]?[0-9]?[0-9]|1000)$ ]") {
  112. X = Pos.Left (netProvider),
  113. Y = Pos.Bottom (netProvider) + 1
  114. };
  115. Win.Add (regexProvider);
  116. var regexProviderField = new TextValidateField<TextRegexProvider> ("^([0-9]?[0-9]?[0-9]|1000)$") {
  117. X = Pos.Right (regexProvider) + 1,
  118. Y = Pos.Y (regexProvider),
  119. Width = 40,
  120. TextAlignment = TextAlignment.Centered
  121. };
  122. // Access the inner Provider to configure.
  123. regexProviderField.Provider.ValidateOnInput = false;
  124. Win.Add (regexProviderField);
  125. }
  126. TimeField _timeField;
  127. Label _labelMirroringTimeField;
  128. private void TimeChanged (DateTimeEventArgs<TimeSpan> e)
  129. {
  130. _labelMirroringTimeField.Text = _timeField.Text;
  131. }
  132. }
  133. }