da4b57ad862037c64fd645d8e6ee828e9d14c05e2f681097494e51c0c771b6f4e28b50c12883c1bed963024492f8933d0e75114356f806579b917651f8c66e 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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. var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
  15. function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
  16. return new (P || (P = Promise))(function (resolve, reject) {
  17. function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
  18. function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
  19. function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
  20. step((generator = generator.apply(thisArg, _arguments || [])).next());
  21. });
  22. };
  23. import { windowOpenNoOpener } from '../../../base/browser/dom.js';
  24. import { Schemas } from '../../../base/common/network.js';
  25. import { AbstractCodeEditorService } from '../../browser/services/abstractCodeEditorService.js';
  26. import { ICodeEditorService } from '../../browser/services/codeEditorService.js';
  27. import { IContextKeyService } from '../../../platform/contextkey/common/contextkey.js';
  28. import { registerSingleton } from '../../../platform/instantiation/common/extensions.js';
  29. import { IThemeService } from '../../../platform/theme/common/themeService.js';
  30. let StandaloneCodeEditorService = class StandaloneCodeEditorService extends AbstractCodeEditorService {
  31. constructor(contextKeyService, themeService) {
  32. super(themeService);
  33. this.onCodeEditorAdd(() => this._checkContextKey());
  34. this.onCodeEditorRemove(() => this._checkContextKey());
  35. this._editorIsOpen = contextKeyService.createKey('editorIsOpen', false);
  36. this._activeCodeEditor = null;
  37. this.registerCodeEditorOpenHandler((input, source, sideBySide) => __awaiter(this, void 0, void 0, function* () {
  38. if (!source) {
  39. return null;
  40. }
  41. return this.doOpenEditor(source, input);
  42. }));
  43. }
  44. _checkContextKey() {
  45. let hasCodeEditor = false;
  46. for (const editor of this.listCodeEditors()) {
  47. if (!editor.isSimpleWidget) {
  48. hasCodeEditor = true;
  49. break;
  50. }
  51. }
  52. this._editorIsOpen.set(hasCodeEditor);
  53. }
  54. setActiveCodeEditor(activeCodeEditor) {
  55. this._activeCodeEditor = activeCodeEditor;
  56. }
  57. getActiveCodeEditor() {
  58. return this._activeCodeEditor;
  59. }
  60. doOpenEditor(editor, input) {
  61. const model = this.findModel(editor, input.resource);
  62. if (!model) {
  63. if (input.resource) {
  64. const schema = input.resource.scheme;
  65. if (schema === Schemas.http || schema === Schemas.https) {
  66. // This is a fully qualified http or https URL
  67. windowOpenNoOpener(input.resource.toString());
  68. return editor;
  69. }
  70. }
  71. return null;
  72. }
  73. const selection = (input.options ? input.options.selection : null);
  74. if (selection) {
  75. if (typeof selection.endLineNumber === 'number' && typeof selection.endColumn === 'number') {
  76. editor.setSelection(selection);
  77. editor.revealRangeInCenter(selection, 1 /* ScrollType.Immediate */);
  78. }
  79. else {
  80. const pos = {
  81. lineNumber: selection.startLineNumber,
  82. column: selection.startColumn
  83. };
  84. editor.setPosition(pos);
  85. editor.revealPositionInCenter(pos, 1 /* ScrollType.Immediate */);
  86. }
  87. }
  88. return editor;
  89. }
  90. findModel(editor, resource) {
  91. const model = editor.getModel();
  92. if (model && model.uri.toString() !== resource.toString()) {
  93. return null;
  94. }
  95. return model;
  96. }
  97. };
  98. StandaloneCodeEditorService = __decorate([
  99. __param(0, IContextKeyService),
  100. __param(1, IThemeService)
  101. ], StandaloneCodeEditorService);
  102. export { StandaloneCodeEditorService };
  103. registerSingleton(ICodeEditorService, StandaloneCodeEditorService);