viewEventHandler.js 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183
  1. /*---------------------------------------------------------------------------------------------
  2. * Copyright (c) Microsoft Corporation. All rights reserved.
  3. * Licensed under the MIT License. See License.txt in the project root for license information.
  4. *--------------------------------------------------------------------------------------------*/
  5. import { Disposable } from '../../../base/common/lifecycle.js';
  6. export class ViewEventHandler extends Disposable {
  7. constructor() {
  8. super();
  9. this._shouldRender = true;
  10. }
  11. shouldRender() {
  12. return this._shouldRender;
  13. }
  14. forceShouldRender() {
  15. this._shouldRender = true;
  16. }
  17. setShouldRender() {
  18. this._shouldRender = true;
  19. }
  20. onDidRender() {
  21. this._shouldRender = false;
  22. }
  23. // --- begin event handlers
  24. onCompositionStart(e) {
  25. return false;
  26. }
  27. onCompositionEnd(e) {
  28. return false;
  29. }
  30. onConfigurationChanged(e) {
  31. return false;
  32. }
  33. onCursorStateChanged(e) {
  34. return false;
  35. }
  36. onDecorationsChanged(e) {
  37. return false;
  38. }
  39. onFlushed(e) {
  40. return false;
  41. }
  42. onFocusChanged(e) {
  43. return false;
  44. }
  45. onLanguageConfigurationChanged(e) {
  46. return false;
  47. }
  48. onLineMappingChanged(e) {
  49. return false;
  50. }
  51. onLinesChanged(e) {
  52. return false;
  53. }
  54. onLinesDeleted(e) {
  55. return false;
  56. }
  57. onLinesInserted(e) {
  58. return false;
  59. }
  60. onRevealRangeRequest(e) {
  61. return false;
  62. }
  63. onScrollChanged(e) {
  64. return false;
  65. }
  66. onThemeChanged(e) {
  67. return false;
  68. }
  69. onTokensChanged(e) {
  70. return false;
  71. }
  72. onTokensColorsChanged(e) {
  73. return false;
  74. }
  75. onZonesChanged(e) {
  76. return false;
  77. }
  78. // --- end event handlers
  79. handleEvents(events) {
  80. let shouldRender = false;
  81. for (let i = 0, len = events.length; i < len; i++) {
  82. let e = events[i];
  83. switch (e.type) {
  84. case 0 /* ViewCompositionStart */:
  85. if (this.onCompositionStart(e)) {
  86. shouldRender = true;
  87. }
  88. break;
  89. case 1 /* ViewCompositionEnd */:
  90. if (this.onCompositionEnd(e)) {
  91. shouldRender = true;
  92. }
  93. break;
  94. case 2 /* ViewConfigurationChanged */:
  95. if (this.onConfigurationChanged(e)) {
  96. shouldRender = true;
  97. }
  98. break;
  99. case 3 /* ViewCursorStateChanged */:
  100. if (this.onCursorStateChanged(e)) {
  101. shouldRender = true;
  102. }
  103. break;
  104. case 4 /* ViewDecorationsChanged */:
  105. if (this.onDecorationsChanged(e)) {
  106. shouldRender = true;
  107. }
  108. break;
  109. case 5 /* ViewFlushed */:
  110. if (this.onFlushed(e)) {
  111. shouldRender = true;
  112. }
  113. break;
  114. case 6 /* ViewFocusChanged */:
  115. if (this.onFocusChanged(e)) {
  116. shouldRender = true;
  117. }
  118. break;
  119. case 7 /* ViewLanguageConfigurationChanged */:
  120. if (this.onLanguageConfigurationChanged(e)) {
  121. shouldRender = true;
  122. }
  123. break;
  124. case 8 /* ViewLineMappingChanged */:
  125. if (this.onLineMappingChanged(e)) {
  126. shouldRender = true;
  127. }
  128. break;
  129. case 9 /* ViewLinesChanged */:
  130. if (this.onLinesChanged(e)) {
  131. shouldRender = true;
  132. }
  133. break;
  134. case 10 /* ViewLinesDeleted */:
  135. if (this.onLinesDeleted(e)) {
  136. shouldRender = true;
  137. }
  138. break;
  139. case 11 /* ViewLinesInserted */:
  140. if (this.onLinesInserted(e)) {
  141. shouldRender = true;
  142. }
  143. break;
  144. case 12 /* ViewRevealRangeRequest */:
  145. if (this.onRevealRangeRequest(e)) {
  146. shouldRender = true;
  147. }
  148. break;
  149. case 13 /* ViewScrollChanged */:
  150. if (this.onScrollChanged(e)) {
  151. shouldRender = true;
  152. }
  153. break;
  154. case 15 /* ViewTokensChanged */:
  155. if (this.onTokensChanged(e)) {
  156. shouldRender = true;
  157. }
  158. break;
  159. case 14 /* ViewThemeChanged */:
  160. if (this.onThemeChanged(e)) {
  161. shouldRender = true;
  162. }
  163. break;
  164. case 16 /* ViewTokensColorsChanged */:
  165. if (this.onTokensColorsChanged(e)) {
  166. shouldRender = true;
  167. }
  168. break;
  169. case 17 /* ViewZonesChanged */:
  170. if (this.onZonesChanged(e)) {
  171. shouldRender = true;
  172. }
  173. break;
  174. default:
  175. console.info('View received unknown event: ');
  176. console.info(e);
  177. }
  178. }
  179. if (shouldRender) {
  180. this._shouldRender = true;
  181. }
  182. }
  183. }