smoketest.js 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139
  1. /// <reference path="../node_modules/monaco-editor-core/monaco.d.ts" />
  2. define(['./samples-all'], 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 = commentsConfig.blockCommentStartToken + ' ' + text + ' ' + commentsConfig.blockCommentEndToken;
  47. }
  48. }
  49. editor.trigger('keyboard', monaco.editor.Handler.Type, {
  50. text: text + '\n'
  51. });
  52. }
  53. },
  54. {
  55. name: 'multicursor',
  56. run: function (editor) {
  57. editor.setPosition({
  58. lineNumber: 1,
  59. column: 1
  60. });
  61. editor.trigger('keyboard', monaco.editor.Handler.AddCursorDown);
  62. editor.trigger('keyboard', monaco.editor.Handler.AddCursorDown);
  63. editor.trigger('keyboard', monaco.editor.Handler.AddCursorDown);
  64. editor.trigger('keyboard', monaco.editor.Handler.AddCursorDown);
  65. editor.trigger('keyboard', monaco.editor.Handler.AddCursorDown);
  66. editor.trigger('keyboard', monaco.editor.Handler.Type, {
  67. text: 'some text - '
  68. });
  69. }
  70. }
  71. ];
  72. })();
  73. var panelContainer = document.getElementById('control');
  74. var editorContainer = document.getElementById('editor');
  75. var editors = {}, models = {};
  76. function onError(err) {
  77. console.error(err);
  78. alert('error!!');
  79. }
  80. function getAllModes() {
  81. var result = monaco.languages.getLanguages().map(function(language) { return language.id; });
  82. result.sort();
  83. return result;
  84. }
  85. function createEditor(container, mode) {
  86. editors[mode] = monaco.editor.create(container, {
  87. value: mode
  88. });
  89. var value = mode + '\n' + XHR_SAMPLES['sample.' + mode + '.txt'];
  90. var model = monaco.editor.createModel(value, mode);
  91. editors[mode].setModel(model);
  92. }
  93. function createEditors(modes) {
  94. for (var i = 0; i < modes.length; i++) {
  95. var container = document.createElement('div');
  96. container.style.width = '300px';
  97. container.style.cssFloat = 'left';
  98. container.style.height = '200px';
  99. container.style.border = '1px solid #ccc';
  100. container.style.background = 'red';
  101. container.setAttribute('data-mime', modes[i]);
  102. editorContainer.appendChild(container);
  103. createEditor(container, modes[i]);
  104. }
  105. var clearer = document.createElement('div');
  106. clearer.style.clear = 'both';
  107. editorContainer.appendChild(clearer);
  108. }
  109. function executeAction(action) {
  110. for (var mime in editors) {
  111. if (editors.hasOwnProperty(mime)) {
  112. action(editors[mime]);
  113. }
  114. }
  115. }
  116. function createActions(actions) {
  117. for (var i = 0; i < actions.length; i++) {
  118. var btn = document.createElement('button');
  119. btn.appendChild(document.createTextNode('<<' + actions[i].name + '>>'));
  120. btn.onclick = executeAction.bind(this, actions[i].run);
  121. panelContainer.appendChild(btn);
  122. }
  123. }
  124. createEditors(getAllModes());
  125. createActions(actions);
  126. });