standaloneCodeServiceImpl.js 4.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  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. var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
  6. var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
  7. if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
  8. else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
  9. return c > 3 && r && Object.defineProperty(target, key, r), r;
  10. };
  11. var __param = (this && this.__param) || function (paramIndex, decorator) {
  12. return function (target, key) { decorator(target, key, paramIndex); }
  13. };
  14. import { windowOpenNoOpener } from '../../../base/browser/dom.js';
  15. import { Schemas } from '../../../base/common/network.js';
  16. import { CodeEditorServiceImpl } from '../../browser/services/codeEditorServiceImpl.js';
  17. import { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';
  18. import { IThemeService } from '../../../platform/theme/common/themeService.js';
  19. let StandaloneCodeEditorServiceImpl = class StandaloneCodeEditorServiceImpl extends CodeEditorServiceImpl {
  20. constructor(styleSheet, contextKeyService, themeService) {
  21. super(styleSheet, themeService);
  22. this.onCodeEditorAdd(() => this._checkContextKey());
  23. this.onCodeEditorRemove(() => this._checkContextKey());
  24. this._editorIsOpen = contextKeyService.createKey('editorIsOpen', false);
  25. this._activeCodeEditor = null;
  26. }
  27. _checkContextKey() {
  28. let hasCodeEditor = false;
  29. for (const editor of this.listCodeEditors()) {
  30. if (!editor.isSimpleWidget) {
  31. hasCodeEditor = true;
  32. break;
  33. }
  34. }
  35. this._editorIsOpen.set(hasCodeEditor);
  36. }
  37. setActiveCodeEditor(activeCodeEditor) {
  38. this._activeCodeEditor = activeCodeEditor;
  39. }
  40. getActiveCodeEditor() {
  41. return this._activeCodeEditor;
  42. }
  43. openCodeEditor(input, source, sideBySide) {
  44. if (!source) {
  45. return Promise.resolve(null);
  46. }
  47. return Promise.resolve(this.doOpenEditor(source, input));
  48. }
  49. doOpenEditor(editor, input) {
  50. const model = this.findModel(editor, input.resource);
  51. if (!model) {
  52. if (input.resource) {
  53. const schema = input.resource.scheme;
  54. if (schema === Schemas.http || schema === Schemas.https) {
  55. // This is a fully qualified http or https URL
  56. windowOpenNoOpener(input.resource.toString());
  57. return editor;
  58. }
  59. }
  60. return null;
  61. }
  62. const selection = (input.options ? input.options.selection : null);
  63. if (selection) {
  64. if (typeof selection.endLineNumber === 'number' && typeof selection.endColumn === 'number') {
  65. editor.setSelection(selection);
  66. editor.revealRangeInCenter(selection, 1 /* Immediate */);
  67. }
  68. else {
  69. const pos = {
  70. lineNumber: selection.startLineNumber,
  71. column: selection.startColumn
  72. };
  73. editor.setPosition(pos);
  74. editor.revealPositionInCenter(pos, 1 /* Immediate */);
  75. }
  76. }
  77. return editor;
  78. }
  79. findModel(editor, resource) {
  80. const model = editor.getModel();
  81. if (model && model.uri.toString() !== resource.toString()) {
  82. return null;
  83. }
  84. return model;
  85. }
  86. };
  87. StandaloneCodeEditorServiceImpl = __decorate([
  88. __param(1, IContextKeyService),
  89. __param(2, IThemeService)
  90. ], StandaloneCodeEditorServiceImpl);
  91. export { StandaloneCodeEditorServiceImpl };