smoketest.js 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. /// <reference path="../../node_modules/monaco-editor-core/monaco.d.ts" />
  2. define(['./samples-all.generated'], function (ALL_SAMPLES) {
  3. var XHR_SAMPLES = {};
  4. ALL_SAMPLES.forEach(function (sample) {
  5. XHR_SAMPLES[sample.name] = sample.content;
  6. });
  7. var actions = (function () {
  8. 'use strict';
  9. return [
  10. {
  11. name: 'Undo',
  12. run: function (editor) {
  13. editor.trigger('keyboard', monaco.editor.Handler.Undo);
  14. }
  15. },
  16. {
  17. name: 'type & suggest',
  18. run: function (editor) {
  19. editor.setPosition({
  20. lineNumber: 1,
  21. column: 1
  22. });
  23. var firstChar = editor.getModel().getLineContent(1).charAt(0);
  24. editor.trigger('keyboard', monaco.editor.Handler.CursorEnd);
  25. editor.trigger('keyboard', monaco.editor.Handler.Type, {
  26. text: '\n' + firstChar
  27. });
  28. editor.focus();
  29. editor.trigger('test', 'editor.action.triggerSuggest');
  30. }
  31. },
  32. {
  33. name: 'links',
  34. run: function (editor) {
  35. editor.setPosition({
  36. lineNumber: 1,
  37. column: 1
  38. });
  39. var commentsSupport = editor.getModel().getMode().commentsSupport;
  40. var text = 'http://www.test.com';
  41. if (commentsSupport) {
  42. var commentsConfig = commentsSupport.getCommentsConfiguration();
  43. if (commentsConfig && commentsConfig.lineCommentTokens) {
  44. text = commentsConfig.lineCommentTokens[0] + ' ' + text;
  45. } else if (commentsConfig && commentsConfig.blockCommentStartToken) {
  46. text =
  47. commentsConfig.blockCommentStartToken +
  48. ' ' +
  49. text +
  50. ' ' +
  51. commentsConfig.blockCommentEndToken;
  52. }
  53. }
  54. editor.trigger('keyboard', monaco.editor.Handler.Type, {
  55. text: text + '\n'
  56. });
  57. }
  58. },
  59. {
  60. name: 'multicursor',
  61. run: function (editor) {
  62. editor.setPosition({
  63. lineNumber: 1,
  64. column: 1
  65. });
  66. editor.trigger('keyboard', monaco.editor.Handler.AddCursorDown);
  67. editor.trigger('keyboard', monaco.editor.Handler.AddCursorDown);
  68. editor.trigger('keyboard', monaco.editor.Handler.AddCursorDown);
  69. editor.trigger('keyboard', monaco.editor.Handler.AddCursorDown);
  70. editor.trigger('keyboard', monaco.editor.Handler.AddCursorDown);
  71. editor.trigger('keyboard', monaco.editor.Handler.Type, {
  72. text: 'some text - '
  73. });
  74. }
  75. }
  76. ];
  77. })();
  78. var panelContainer = document.getElementById('control');
  79. var editorContainer = document.getElementById('editor');
  80. var editors = {},
  81. models = {};
  82. function onError(err) {
  83. console.error(err);
  84. alert('error!!');
  85. }
  86. function getAllModes() {
  87. var result = monaco.languages.getLanguages().map(function (language) {
  88. return language.id;
  89. });
  90. result.sort();
  91. return result;
  92. }
  93. function createEditor(container, mode) {
  94. editors[mode] = monaco.editor.create(container, {
  95. value: mode
  96. });
  97. var value = mode + '\n' + XHR_SAMPLES['sample.' + mode + '.txt'];
  98. var model = monaco.editor.createModel(value, mode);
  99. editors[mode].setModel(model);
  100. }
  101. function createEditors(modes) {
  102. for (var i = 0; i < modes.length; i++) {
  103. var container = document.createElement('div');
  104. container.style.width = '300px';
  105. container.style.cssFloat = 'left';
  106. container.style.height = '200px';
  107. container.style.border = '1px solid #ccc';
  108. container.style.background = 'red';
  109. container.setAttribute('data-mime', modes[i]);
  110. editorContainer.appendChild(container);
  111. createEditor(container, modes[i]);
  112. }
  113. var clearer = document.createElement('div');
  114. clearer.style.clear = 'both';
  115. editorContainer.appendChild(clearer);
  116. }
  117. function executeAction(action) {
  118. for (var mime in editors) {
  119. if (editors.hasOwnProperty(mime)) {
  120. action(editors[mime]);
  121. }
  122. }
  123. }
  124. function createActions(actions) {
  125. for (var i = 0; i < actions.length; i++) {
  126. var btn = document.createElement('button');
  127. btn.appendChild(document.createTextNode('<<' + actions[i].name + '>>'));
  128. btn.onclick = executeAction.bind(this, actions[i].run);
  129. panelContainer.appendChild(btn);
  130. }
  131. }
  132. createEditors(getAllModes());
  133. createActions(actions);
  134. });