@theia/terminal-manager 1.73.0-next.9 → 1.73.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/browser/terminal-manager-creation-handler.d.ts +25 -0
- package/lib/browser/terminal-manager-creation-handler.d.ts.map +1 -0
- package/lib/browser/terminal-manager-creation-handler.js +77 -0
- package/lib/browser/terminal-manager-creation-handler.js.map +1 -0
- package/lib/browser/terminal-manager-frontend-contribution.d.ts +2 -20
- package/lib/browser/terminal-manager-frontend-contribution.d.ts.map +1 -1
- package/lib/browser/terminal-manager-frontend-contribution.js +9 -58
- package/lib/browser/terminal-manager-frontend-contribution.js.map +1 -1
- package/lib/browser/terminal-manager-frontend-module.d.ts.map +1 -1
- package/lib/browser/terminal-manager-frontend-module.js +4 -0
- package/lib/browser/terminal-manager-frontend-module.js.map +1 -1
- package/lib/browser/terminal-manager-tree-model.d.ts +21 -4
- package/lib/browser/terminal-manager-tree-model.d.ts.map +1 -1
- package/lib/browser/terminal-manager-tree-model.js +65 -46
- package/lib/browser/terminal-manager-tree-model.js.map +1 -1
- package/lib/browser/terminal-manager-tree-model.spec.js +111 -18
- package/lib/browser/terminal-manager-tree-model.spec.js.map +1 -1
- package/lib/browser/terminal-manager-tree-widget.d.ts +1 -0
- package/lib/browser/terminal-manager-tree-widget.d.ts.map +1 -1
- package/lib/browser/terminal-manager-tree-widget.js +19 -2
- package/lib/browser/terminal-manager-tree-widget.js.map +1 -1
- package/lib/browser/terminal-manager-types.d.ts +7 -6
- package/lib/browser/terminal-manager-types.d.ts.map +1 -1
- package/lib/browser/terminal-manager-types.js +1 -10
- package/lib/browser/terminal-manager-types.js.map +1 -1
- package/lib/browser/terminal-manager-types.spec.js +20 -33
- package/lib/browser/terminal-manager-types.spec.js.map +1 -1
- package/lib/browser/terminal-manager-widget.d.ts +8 -11
- package/lib/browser/terminal-manager-widget.d.ts.map +1 -1
- package/lib/browser/terminal-manager-widget.js +36 -47
- package/lib/browser/terminal-manager-widget.js.map +1 -1
- package/package.json +5 -5
- package/src/browser/terminal-manager-creation-handler.ts +76 -0
- package/src/browser/terminal-manager-frontend-contribution.ts +8 -62
- package/src/browser/terminal-manager-frontend-module.ts +5 -1
- package/src/browser/terminal-manager-tree-model.spec.ts +131 -19
- package/src/browser/terminal-manager-tree-model.ts +72 -51
- package/src/browser/terminal-manager-tree-widget.tsx +24 -4
- package/src/browser/terminal-manager-types.spec.ts +21 -35
- package/src/browser/terminal-manager-types.ts +7 -8
- package/src/browser/terminal-manager-widget.ts +37 -53
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { WidgetManager, WidgetOpenerOptions } from '@theia/core/lib/browser';
|
|
2
|
+
import { TerminalWidget } from '@theia/terminal/lib/browser/base/terminal-widget';
|
|
3
|
+
import { TerminalCreationHandler } from '@theia/terminal/lib/browser/terminal-creation-handler';
|
|
4
|
+
import { TerminalManagerFrontendViewContribution } from './terminal-manager-frontend-view-contribution';
|
|
5
|
+
import { TerminalManagerPreferences } from './terminal-manager-preferences';
|
|
6
|
+
/**
|
|
7
|
+
* A {@link TerminalCreationHandler} that routes terminals into the terminal
|
|
8
|
+
* manager widget when tree grouping mode is active.
|
|
9
|
+
*
|
|
10
|
+
* This hooks into {@link TerminalFrontendContribution.open} so that terminals
|
|
11
|
+
* created by any caller (plugins, tasks, debug, etc.) are routed into
|
|
12
|
+
* the manager at the point of placement, rather than being intercepted
|
|
13
|
+
* after the fact via `onDidCreateTerminal` events.
|
|
14
|
+
*
|
|
15
|
+
* Task and debug terminals are routed to dedicated pages in the tree;
|
|
16
|
+
* regular user terminals get their own numbered pages.
|
|
17
|
+
*/
|
|
18
|
+
export declare class TerminalManagerCreationHandler implements TerminalCreationHandler {
|
|
19
|
+
get priority(): number;
|
|
20
|
+
protected readonly terminalManagerViewContribution: TerminalManagerFrontendViewContribution;
|
|
21
|
+
protected readonly widgetManager: WidgetManager;
|
|
22
|
+
protected readonly preferences: TerminalManagerPreferences;
|
|
23
|
+
onWillOpenTerminal(terminal: TerminalWidget, _options?: WidgetOpenerOptions): Promise<boolean | undefined>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=terminal-manager-creation-handler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-manager-creation-handler.d.ts","sourceRoot":"","sources":["../../src/browser/terminal-manager-creation-handler.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,kDAAkD,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,uDAAuD,CAAC;AAEhG,OAAO,EAAE,uCAAuC,EAAE,MAAM,+CAA+C,CAAC;AACxG,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAE5E;;;;;;;;;;;GAWG;AACH,qBACa,8BAA+B,YAAW,uBAAuB;IAE1E,IAAI,QAAQ,IAAI,MAAM,CAErB;IAGD,SAAS,CAAC,QAAQ,CAAC,+BAA+B,EAAE,uCAAuC,CAAC;IAG5F,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAGhD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAAC;IAErD,kBAAkB,CAAC,QAAQ,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,OAAO,GAAG,SAAS,CAAC;CAuBnH"}
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 EclipseSource and others.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.TerminalManagerCreationHandler = void 0;
|
|
19
|
+
const tslib_1 = require("tslib");
|
|
20
|
+
const inversify_1 = require("@theia/core/shared/inversify");
|
|
21
|
+
const browser_1 = require("@theia/core/lib/browser");
|
|
22
|
+
const terminal_manager_widget_1 = require("./terminal-manager-widget");
|
|
23
|
+
const terminal_manager_frontend_view_contribution_1 = require("./terminal-manager-frontend-view-contribution");
|
|
24
|
+
const terminal_manager_preferences_1 = require("./terminal-manager-preferences");
|
|
25
|
+
/**
|
|
26
|
+
* A {@link TerminalCreationHandler} that routes terminals into the terminal
|
|
27
|
+
* manager widget when tree grouping mode is active.
|
|
28
|
+
*
|
|
29
|
+
* This hooks into {@link TerminalFrontendContribution.open} so that terminals
|
|
30
|
+
* created by any caller (plugins, tasks, debug, etc.) are routed into
|
|
31
|
+
* the manager at the point of placement, rather than being intercepted
|
|
32
|
+
* after the fact via `onDidCreateTerminal` events.
|
|
33
|
+
*
|
|
34
|
+
* Task and debug terminals are routed to dedicated pages in the tree;
|
|
35
|
+
* regular user terminals get their own numbered pages.
|
|
36
|
+
*/
|
|
37
|
+
let TerminalManagerCreationHandler = class TerminalManagerCreationHandler {
|
|
38
|
+
get priority() {
|
|
39
|
+
return this.preferences.get('terminal.grouping.mode') === 'tree' ? 100 : -200;
|
|
40
|
+
}
|
|
41
|
+
async onWillOpenTerminal(terminal, _options) {
|
|
42
|
+
if (this.preferences.get('terminal.grouping.mode') !== 'tree') {
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
if (terminal.hiddenFromUser) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
const resolvedWidget = this.terminalManagerViewContribution.tryGetWidget()
|
|
49
|
+
?? await this.widgetManager.getOrCreateWidget(terminal_manager_widget_1.TerminalManagerWidget.ID);
|
|
50
|
+
if (!(resolvedWidget instanceof terminal_manager_widget_1.TerminalManagerWidget)) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
if (!resolvedWidget.terminalWidgetIdsToNodeIds.has(terminal.id)) {
|
|
54
|
+
const specialConfig = resolvedWidget.treeWidget.model.getSpecialPageConfig(terminal.kind);
|
|
55
|
+
resolvedWidget.addTerminalPage(terminal, specialConfig?.pageId);
|
|
56
|
+
await this.terminalManagerViewContribution.openView({ reveal: true });
|
|
57
|
+
}
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
};
|
|
61
|
+
exports.TerminalManagerCreationHandler = TerminalManagerCreationHandler;
|
|
62
|
+
tslib_1.__decorate([
|
|
63
|
+
(0, inversify_1.inject)(terminal_manager_frontend_view_contribution_1.TerminalManagerFrontendViewContribution),
|
|
64
|
+
tslib_1.__metadata("design:type", terminal_manager_frontend_view_contribution_1.TerminalManagerFrontendViewContribution)
|
|
65
|
+
], TerminalManagerCreationHandler.prototype, "terminalManagerViewContribution", void 0);
|
|
66
|
+
tslib_1.__decorate([
|
|
67
|
+
(0, inversify_1.inject)(browser_1.WidgetManager),
|
|
68
|
+
tslib_1.__metadata("design:type", browser_1.WidgetManager)
|
|
69
|
+
], TerminalManagerCreationHandler.prototype, "widgetManager", void 0);
|
|
70
|
+
tslib_1.__decorate([
|
|
71
|
+
(0, inversify_1.inject)(terminal_manager_preferences_1.TerminalManagerPreferences),
|
|
72
|
+
tslib_1.__metadata("design:type", Object)
|
|
73
|
+
], TerminalManagerCreationHandler.prototype, "preferences", void 0);
|
|
74
|
+
exports.TerminalManagerCreationHandler = TerminalManagerCreationHandler = tslib_1.__decorate([
|
|
75
|
+
(0, inversify_1.injectable)()
|
|
76
|
+
], TerminalManagerCreationHandler);
|
|
77
|
+
//# sourceMappingURL=terminal-manager-creation-handler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminal-manager-creation-handler.js","sourceRoot":"","sources":["../../src/browser/terminal-manager-creation-handler.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,4DAAkE;AAClE,qDAA6E;AAG7E,uEAAkE;AAClE,+GAAwG;AACxG,iFAA4E;AAE5E;;;;;;;;;;;GAWG;AAEI,IAAM,8BAA8B,GAApC,MAAM,8BAA8B;IAEvC,IAAI,QAAQ;QACR,OAAO,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,wBAAwB,CAAC,KAAK,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IAClF,CAAC;IAWD,KAAK,CAAC,kBAAkB,CAAC,QAAwB,EAAE,QAA8B;QAC7E,IAAI,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,wBAAwB,CAAC,KAAK,MAAM,EAAE,CAAC;YAC5D,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,QAAQ,CAAC,cAAc,EAAE,CAAC;YAC1B,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,MAAM,cAAc,GAAG,IAAI,CAAC,+BAA+B,CAAC,YAAY,EAAE;eACnE,MAAM,IAAI,CAAC,aAAa,CAAC,iBAAiB,CAAwB,+CAAqB,CAAC,EAAE,CAAC,CAAC;QACnG,IAAI,CAAC,CAAC,cAAc,YAAY,+CAAqB,CAAC,EAAE,CAAC;YACrD,OAAO,KAAK,CAAC;QACjB,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,0BAA0B,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;YAC9D,MAAM,aAAa,GAAG,cAAc,CAAC,UAAU,CAAC,KAAK,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YAC1F,cAAc,CAAC,eAAe,CAAC,QAAQ,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC;YAChE,MAAM,IAAI,CAAC,+BAA+B,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1E,CAAC;QAED,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ,CAAA;AAtCY,wEAA8B;AAOpB;IADlB,IAAA,kBAAM,EAAC,qFAAuC,CAAC;sCACI,qFAAuC;uFAAC;AAGzE;IADlB,IAAA,kBAAM,EAAC,uBAAa,CAAC;sCACY,uBAAa;qEAAC;AAG7B;IADlB,IAAA,kBAAM,EAAC,yDAA0B,CAAC;;mEACwB;yCAblD,8BAA8B;IAD1C,IAAA,sBAAU,GAAE;GACA,8BAA8B,CAsC1C"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { CommandRegistry, PreferenceService, DisposableCollection } from '@theia/core/lib/common';
|
|
2
|
-
import { TerminalWidget } from '@theia/terminal/lib/browser/base/terminal-widget';
|
|
3
2
|
import { TerminalFrontendContribution } from '@theia/terminal/lib/browser/terminal-frontend-contribution';
|
|
4
3
|
import { ApplicationShell, WidgetManager, FrontendApplicationContribution, FrontendApplication } from '@theia/core/lib/browser';
|
|
5
|
-
import { FrontendApplicationStateService } from '@theia/core/lib/browser/frontend-application-state';
|
|
6
4
|
import { TerminalManagerFrontendViewContribution } from './terminal-manager-frontend-view-contribution';
|
|
7
5
|
import { TerminalManagerPreferences } from './terminal-manager-preferences';
|
|
6
|
+
import { ILogger } from '@theia/core';
|
|
8
7
|
/**
|
|
9
8
|
* Re-registers terminal commands (e.g. new terminal) to execute them via the terminal manager
|
|
10
9
|
* instead of creating new, separate terminals.
|
|
@@ -17,20 +16,8 @@ export declare class TerminalManagerFrontendContribution implements FrontendAppl
|
|
|
17
16
|
protected readonly preferenceService: PreferenceService;
|
|
18
17
|
protected readonly preferences: TerminalManagerPreferences;
|
|
19
18
|
protected readonly commandRegistry: CommandRegistry;
|
|
20
|
-
protected readonly
|
|
19
|
+
protected readonly logger: ILogger;
|
|
21
20
|
protected commandHandlerDisposables: DisposableCollection;
|
|
22
|
-
/**
|
|
23
|
-
* Check if a terminal is a task terminal.
|
|
24
|
-
* Task terminals have a 'kind' property set to 'task'.
|
|
25
|
-
*/
|
|
26
|
-
protected isTaskTerminal(terminal: TerminalWidget): boolean;
|
|
27
|
-
/**
|
|
28
|
-
* Register a listener to route externally created terminals (e.g. from plugins)
|
|
29
|
-
* into the terminal manager when tree mode is active.
|
|
30
|
-
* Terminals created internally via {@link TerminalManagerWidget.createTerminalWidget}
|
|
31
|
-
* are skipped because the command handlers handle their placement.
|
|
32
|
-
*/
|
|
33
|
-
protected registerTerminalListener(): void;
|
|
34
21
|
onStart(app: FrontendApplication): void;
|
|
35
22
|
initializeLayout(): Promise<void>;
|
|
36
23
|
protected handleTabsDisplayChange(newValue: string): Promise<void>;
|
|
@@ -44,11 +31,6 @@ export declare class TerminalManagerFrontendContribution implements FrontendAppl
|
|
|
44
31
|
protected migrateTerminalsToTabs(): Promise<void>;
|
|
45
32
|
protected unregisterHandlers(): void;
|
|
46
33
|
protected registerHandlers(): void;
|
|
47
|
-
/**
|
|
48
|
-
* Defers the terminal creation listener until layout restoration is complete,
|
|
49
|
-
* preventing restored terminals from being mistaken for externally created ones.
|
|
50
|
-
*/
|
|
51
|
-
protected deferTerminalListenerUntilLayoutReady(): void;
|
|
52
34
|
protected registerCommands(): void;
|
|
53
35
|
}
|
|
54
36
|
//# sourceMappingURL=terminal-manager-frontend-contribution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-manager-frontend-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/terminal-manager-frontend-contribution.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"terminal-manager-frontend-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/terminal-manager-frontend-contribution.ts"],"names":[],"mappings":"AAWA,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAElG,OAAO,EAAE,4BAA4B,EAAoB,MAAM,4DAA4D,CAAC;AAC5H,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,+BAA+B,EAAE,mBAAmB,EAAE,MAAM,yBAAyB,CAAC;AAEhI,OAAO,EAAE,uCAAuC,EAAE,MAAM,+CAA+C,CAAC;AACxG,OAAO,EAAE,0BAA0B,EAAE,MAAM,gCAAgC,CAAC;AAC5E,OAAO,EAAE,OAAO,EAAE,MAAM,aAAa,CAAC;AACtC;;;GAGG;AACH,qBACa,mCAAoC,YAAW,+BAA+B;IAEvF,SAAS,CAAC,QAAQ,CAAC,4BAA4B,EAAE,4BAA4B,CAAC;IAG9E,SAAS,CAAC,QAAQ,CAAC,+BAA+B,EAAE,uCAAuC,CAAC;IAG5F,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC;IAGhD,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,gBAAgB,CAAC;IAG3C,SAAS,CAAC,QAAQ,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAGxD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,0BAA0B,CAAC;IAG3D,SAAS,CAAC,QAAQ,CAAC,eAAe,EAAE,eAAe,CAAC;IAGpD,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEnC,SAAS,CAAC,yBAAyB,uBAA8B;IAEjE,OAAO,CAAC,GAAG,EAAE,mBAAmB,GAAG,IAAI;IAgBjC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;cAQvB,uBAAuB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxE;;OAEG;cACa,yBAAyB,IAAI,OAAO,CAAC,IAAI,CAAC;IAuB1D;;OAEG;cACa,sBAAsB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBvD,SAAS,CAAC,kBAAkB,IAAI,IAAI;IAKpC,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAKlC,SAAS,CAAC,gBAAgB,IAAI,IAAI;CAkFrC"}
|
|
@@ -16,10 +16,10 @@ const common_1 = require("@theia/core/lib/common");
|
|
|
16
16
|
const terminal_widget_1 = require("@theia/terminal/lib/browser/base/terminal-widget");
|
|
17
17
|
const terminal_frontend_contribution_1 = require("@theia/terminal/lib/browser/terminal-frontend-contribution");
|
|
18
18
|
const browser_1 = require("@theia/core/lib/browser");
|
|
19
|
-
const frontend_application_state_1 = require("@theia/core/lib/browser/frontend-application-state");
|
|
20
19
|
const terminal_manager_widget_1 = require("./terminal-manager-widget");
|
|
21
20
|
const terminal_manager_frontend_view_contribution_1 = require("./terminal-manager-frontend-view-contribution");
|
|
22
21
|
const terminal_manager_preferences_1 = require("./terminal-manager-preferences");
|
|
22
|
+
const core_1 = require("@theia/core");
|
|
23
23
|
/**
|
|
24
24
|
* Re-registers terminal commands (e.g. new terminal) to execute them via the terminal manager
|
|
25
25
|
* instead of creating new, separate terminals.
|
|
@@ -28,40 +28,6 @@ let TerminalManagerFrontendContribution = class TerminalManagerFrontendContribut
|
|
|
28
28
|
constructor() {
|
|
29
29
|
this.commandHandlerDisposables = new common_1.DisposableCollection();
|
|
30
30
|
}
|
|
31
|
-
/**
|
|
32
|
-
* Check if a terminal is a task terminal.
|
|
33
|
-
* Task terminals have a 'kind' property set to 'task'.
|
|
34
|
-
*/
|
|
35
|
-
isTaskTerminal(terminal) {
|
|
36
|
-
return terminal.kind === 'task';
|
|
37
|
-
}
|
|
38
|
-
/**
|
|
39
|
-
* Register a listener to route externally created terminals (e.g. from plugins)
|
|
40
|
-
* into the terminal manager when tree mode is active.
|
|
41
|
-
* Terminals created internally via {@link TerminalManagerWidget.createTerminalWidget}
|
|
42
|
-
* are skipped because the command handlers handle their placement.
|
|
43
|
-
*/
|
|
44
|
-
registerTerminalListener() {
|
|
45
|
-
this.commandHandlerDisposables.push(this.terminalFrontendContribution.onDidCreateTerminal(async (terminal) => {
|
|
46
|
-
if (this.isTaskTerminal(terminal) || terminal.hiddenFromUser) {
|
|
47
|
-
return;
|
|
48
|
-
}
|
|
49
|
-
// Check the flag synchronously (before any await) to correctly
|
|
50
|
-
// identify terminals created by the manager's command handlers.
|
|
51
|
-
const managerWidget = this.terminalManagerViewContribution.tryGetWidget();
|
|
52
|
-
if (managerWidget instanceof terminal_manager_widget_1.TerminalManagerWidget && managerWidget.creatingTerminalInternally) {
|
|
53
|
-
return;
|
|
54
|
-
}
|
|
55
|
-
const resolvedWidget = managerWidget ?? await this.widgetManager.getOrCreateWidget(terminal_manager_widget_1.TerminalManagerWidget.ID);
|
|
56
|
-
if (!(resolvedWidget instanceof terminal_manager_widget_1.TerminalManagerWidget)) {
|
|
57
|
-
return;
|
|
58
|
-
}
|
|
59
|
-
if (!resolvedWidget.terminalWidgetIdsToNodeIds.has(terminal.id)) {
|
|
60
|
-
resolvedWidget.addTerminalPage(terminal);
|
|
61
|
-
await this.terminalManagerViewContribution.openView({ reveal: true });
|
|
62
|
-
}
|
|
63
|
-
}));
|
|
64
|
-
}
|
|
65
31
|
onStart(app) {
|
|
66
32
|
this.preferenceService.ready.then(() => {
|
|
67
33
|
this.preferenceService.onPreferenceChanged(change => {
|
|
@@ -70,10 +36,10 @@ let TerminalManagerFrontendContribution = class TerminalManagerFrontendContribut
|
|
|
70
36
|
}
|
|
71
37
|
});
|
|
72
38
|
if (this.preferences.get('terminal.grouping.mode') !== 'tree') {
|
|
73
|
-
|
|
39
|
+
this.logger.debug('Terminal tab style is not tree. Use separate terminal views.');
|
|
74
40
|
return;
|
|
75
41
|
}
|
|
76
|
-
|
|
42
|
+
this.logger.debug('Terminal tab style is tree. Override command handlers accordingly.');
|
|
77
43
|
this.registerHandlers();
|
|
78
44
|
});
|
|
79
45
|
}
|
|
@@ -109,12 +75,8 @@ let TerminalManagerFrontendContribution = class TerminalManagerFrontendContribut
|
|
|
109
75
|
}
|
|
110
76
|
// Before terminal manager attachment to precede creation of default widget.
|
|
111
77
|
for (const terminal of bottomTerminals) {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
}
|
|
115
|
-
else {
|
|
116
|
-
managerWidget.addTerminalPage(terminal);
|
|
117
|
-
}
|
|
78
|
+
const specialConfig = managerWidget.treeWidget.model.getSpecialPageConfig(terminal.kind);
|
|
79
|
+
managerWidget.addTerminalPage(terminal, specialConfig?.pageId);
|
|
118
80
|
terminal.show(); // Clear hidden flag that may have been set by dock panel on removal.
|
|
119
81
|
}
|
|
120
82
|
await this.terminalManagerViewContribution.openView({ reveal: true });
|
|
@@ -145,18 +107,6 @@ let TerminalManagerFrontendContribution = class TerminalManagerFrontendContribut
|
|
|
145
107
|
registerHandlers() {
|
|
146
108
|
this.unregisterHandlers();
|
|
147
109
|
this.registerCommands();
|
|
148
|
-
this.deferTerminalListenerUntilLayoutReady();
|
|
149
|
-
}
|
|
150
|
-
/**
|
|
151
|
-
* Defers the terminal creation listener until layout restoration is complete,
|
|
152
|
-
* preventing restored terminals from being mistaken for externally created ones.
|
|
153
|
-
*/
|
|
154
|
-
deferTerminalListenerUntilLayoutReady() {
|
|
155
|
-
this.stateService.reachedState('initialized_layout').then(() => {
|
|
156
|
-
if (!this.commandHandlerDisposables.disposed) {
|
|
157
|
-
this.registerTerminalListener();
|
|
158
|
-
}
|
|
159
|
-
});
|
|
160
110
|
}
|
|
161
111
|
registerCommands() {
|
|
162
112
|
this.commandHandlerDisposables.push(this.commandRegistry.registerHandler(terminal_frontend_contribution_1.TerminalCommands.NEW.id, {
|
|
@@ -267,9 +217,10 @@ tslib_1.__decorate([
|
|
|
267
217
|
tslib_1.__metadata("design:type", common_1.CommandRegistry)
|
|
268
218
|
], TerminalManagerFrontendContribution.prototype, "commandRegistry", void 0);
|
|
269
219
|
tslib_1.__decorate([
|
|
270
|
-
(0, inversify_1.inject)(
|
|
271
|
-
|
|
272
|
-
|
|
220
|
+
(0, inversify_1.inject)(core_1.ILogger),
|
|
221
|
+
(0, inversify_1.named)('terminal-manager:TerminalManagerFrontendContribution'),
|
|
222
|
+
tslib_1.__metadata("design:type", Object)
|
|
223
|
+
], TerminalManagerFrontendContribution.prototype, "logger", void 0);
|
|
273
224
|
exports.TerminalManagerFrontendContribution = TerminalManagerFrontendContribution = tslib_1.__decorate([
|
|
274
225
|
(0, inversify_1.injectable)()
|
|
275
226
|
], TerminalManagerFrontendContribution);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-manager-frontend-contribution.js","sourceRoot":"","sources":["../../src/browser/terminal-manager-frontend-contribution.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,+CAA+C;AAC/C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAEhF,
|
|
1
|
+
{"version":3,"file":"terminal-manager-frontend-contribution.js","sourceRoot":"","sources":["../../src/browser/terminal-manager-frontend-contribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-manager-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/terminal-manager-frontend-module.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,eAAe,EAAc,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"terminal-manager-frontend-module.d.ts","sourceRoot":"","sources":["../../src/browser/terminal-manager-frontend-module.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,eAAe,EAAc,MAAM,8BAA8B,CAAC;AAe3E,OAAO,wCAAwC,CAAC;;AAGhD,wBAiCG"}
|
|
@@ -23,6 +23,8 @@ const terminal_manager_frontend_view_contribution_1 = require("./terminal-manage
|
|
|
23
23
|
const terminal_manager_frontend_contribution_1 = require("./terminal-manager-frontend-contribution");
|
|
24
24
|
const terminal_manager_preferences_1 = require("./terminal-manager-preferences");
|
|
25
25
|
const terminal_manager_tree_widget_1 = require("./terminal-manager-tree-widget");
|
|
26
|
+
const terminal_manager_creation_handler_1 = require("./terminal-manager-creation-handler");
|
|
27
|
+
const terminal_creation_handler_1 = require("@theia/terminal/lib/browser/terminal-creation-handler");
|
|
26
28
|
require("../../src/browser/terminal-manager.css");
|
|
27
29
|
const core_1 = require("@theia/core");
|
|
28
30
|
exports.default = new inversify_1.ContainerModule((bind) => {
|
|
@@ -31,6 +33,8 @@ exports.default = new inversify_1.ContainerModule((bind) => {
|
|
|
31
33
|
// Bind the contribution for overridden terminal commands
|
|
32
34
|
bind(terminal_manager_frontend_contribution_1.TerminalManagerFrontendContribution).toSelf().inSingletonScope();
|
|
33
35
|
bind(browser_1.FrontendApplicationContribution).toService(terminal_manager_frontend_contribution_1.TerminalManagerFrontendContribution);
|
|
36
|
+
bind(terminal_manager_creation_handler_1.TerminalManagerCreationHandler).toSelf().inSingletonScope();
|
|
37
|
+
bind(terminal_creation_handler_1.TerminalCreationHandler).toService(terminal_manager_creation_handler_1.TerminalManagerCreationHandler);
|
|
34
38
|
bind(browser_1.WidgetFactory).toDynamicValue(({ container }) => ({
|
|
35
39
|
id: terminal_manager_tree_widget_1.TerminalManagerTreeWidget.ID,
|
|
36
40
|
createWidget: () => terminal_manager_tree_widget_1.TerminalManagerTreeWidget.createWidget(container),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-manager-frontend-module.js","sourceRoot":"","sources":["../../src/browser/terminal-manager-frontend-module.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,0CAA0C;AAC1C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,4DAA2E;AAC3E,qDAKiC;AACjC,mFAA0F;AAC1F,uEAAkE;AAClE,+GAAwG;AACxG,qGAA+F;AAC/F,iFAAoJ;AACpJ,iFAA2E;AAC3E,kDAAgD;AAChD,sCAA6E;AAE7E,kBAAe,IAAI,2BAAe,CAAC,CAAC,IAAqB,EAAE,EAAE;IACzD,IAAA,8BAAoB,EAAC,IAAI,EAAE,qFAAuC,CAAC,CAAC;IACpE,IAAI,CAAC,2CAAyB,CAAC,CAAC,SAAS,CAAC,qFAAuC,CAAC,CAAC;IAEnF,yDAAyD;IACzD,IAAI,CAAC,4EAAmC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACtE,IAAI,CAAC,yCAA+B,CAAC,CAAC,SAAS,CAAC,4EAAmC,CAAC,CAAC;IAErF,IAAI,CAAC,uBAAa,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QACnD,EAAE,EAAE,wDAAyB,CAAC,EAAE;QAChC,YAAY,EAAE,GAAG,EAAE,CAAC,wDAAyB,CAAC,YAAY,CAAC,SAAS,CAAC;KACxE,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAEvB,IAAI,CAAC,uBAAa,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QACnD,EAAE,EAAE,+CAAqB,CAAC,EAAE;QAC5B,YAAY,EAAE,KAAK,IAAI,EAAE;YACrB,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,uBAAa,CAAC,CAAC;YACnD,MAAM,yBAAyB,GAAG,MAAM,aAAa,CAAC,iBAAiB,CAA4B,wDAAyB,CAAC,EAAE,CAAC,CAAC;YACjI,KAAK,CAAC,IAAI,CAAC,wDAAyB,CAAC,CAAC,eAAe,CAAC,yBAAyB,CAAC,CAAC;YACjF,OAAO,+CAAqB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACrD,CAAC;KACJ,CAAC,CAAC,CAAC;IAEJ,IAAI,CAAC,yDAA0B,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;QAClD,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAyB,6BAAsB,CAAC,CAAC;QAClF,OAAO,OAAO,CAAC,8DAA+B,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtB,IAAI,CAAC,oEAAqC,CAAC,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,8DAA+B,EAAE,CAAC,CAAC;IACzG,IAAI,CAAC,6BAAsB,CAAC,CAAC,SAAS,CAAC,oEAAqC,CAAC,CAAC;AAClF,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"terminal-manager-frontend-module.js","sourceRoot":"","sources":["../../src/browser/terminal-manager-frontend-module.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,0CAA0C;AAC1C,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAEhF,4DAA2E;AAC3E,qDAKiC;AACjC,mFAA0F;AAC1F,uEAAkE;AAClE,+GAAwG;AACxG,qGAA+F;AAC/F,iFAAoJ;AACpJ,iFAA2E;AAC3E,2FAAqF;AACrF,qGAAgG;AAChG,kDAAgD;AAChD,sCAA6E;AAE7E,kBAAe,IAAI,2BAAe,CAAC,CAAC,IAAqB,EAAE,EAAE;IACzD,IAAA,8BAAoB,EAAC,IAAI,EAAE,qFAAuC,CAAC,CAAC;IACpE,IAAI,CAAC,2CAAyB,CAAC,CAAC,SAAS,CAAC,qFAAuC,CAAC,CAAC;IAEnF,yDAAyD;IACzD,IAAI,CAAC,4EAAmC,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACtE,IAAI,CAAC,yCAA+B,CAAC,CAAC,SAAS,CAAC,4EAAmC,CAAC,CAAC;IAErF,IAAI,CAAC,kEAA8B,CAAC,CAAC,MAAM,EAAE,CAAC,gBAAgB,EAAE,CAAC;IACjE,IAAI,CAAC,mDAAuB,CAAC,CAAC,SAAS,CAAC,kEAA8B,CAAC,CAAC;IAExE,IAAI,CAAC,uBAAa,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QACnD,EAAE,EAAE,wDAAyB,CAAC,EAAE;QAChC,YAAY,EAAE,GAAG,EAAE,CAAC,wDAAyB,CAAC,YAAY,CAAC,SAAS,CAAC;KACxE,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IAEvB,IAAI,CAAC,uBAAa,CAAC,CAAC,cAAc,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC;QACnD,EAAE,EAAE,+CAAqB,CAAC,EAAE;QAC5B,YAAY,EAAE,KAAK,IAAI,EAAE;YACrB,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;YACtC,MAAM,aAAa,GAAG,SAAS,CAAC,GAAG,CAAC,uBAAa,CAAC,CAAC;YACnD,MAAM,yBAAyB,GAAG,MAAM,aAAa,CAAC,iBAAiB,CAA4B,wDAAyB,CAAC,EAAE,CAAC,CAAC;YACjI,KAAK,CAAC,IAAI,CAAC,wDAAyB,CAAC,CAAC,eAAe,CAAC,yBAAyB,CAAC,CAAC;YACjF,OAAO,+CAAqB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACrD,CAAC;KACJ,CAAC,CAAC,CAAC;IAEJ,IAAI,CAAC,yDAA0B,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,EAAE;QAClD,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,CAAC,GAAG,CAAyB,6BAAsB,CAAC,CAAC;QAClF,OAAO,OAAO,CAAC,8DAA+B,CAAC,CAAC;IACpD,CAAC,CAAC,CAAC,gBAAgB,EAAE,CAAC;IACtB,IAAI,CAAC,oEAAqC,CAAC,CAAC,eAAe,CAAC,EAAE,MAAM,EAAE,8DAA+B,EAAE,CAAC,CAAC;IACzG,IAAI,CAAC,6BAAsB,CAAC,CAAC,SAAS,CAAC,oEAAqC,CAAC,CAAC;AAClF,CAAC,CAAC,CAAC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { TreeModelImpl, CompositeTreeNode, SelectableTreeNode, TreeNode } from '@theia/core/lib/browser';
|
|
2
2
|
import { Emitter } from '@theia/core';
|
|
3
|
-
import { TerminalManagerTreeTypes } from './terminal-manager-types';
|
|
3
|
+
import { TerminalManagerTreeTypes, SpecialPageConfig } from './terminal-manager-types';
|
|
4
4
|
export declare class TerminalManagerTreeModel extends TreeModelImpl {
|
|
5
5
|
activePageNode: TerminalManagerTreeTypes.PageNode | undefined;
|
|
6
6
|
activeGroupNode: TerminalManagerTreeTypes.TerminalGroupNode | undefined;
|
|
@@ -47,7 +47,16 @@ export declare class TerminalManagerTreeModel extends TreeModelImpl {
|
|
|
47
47
|
terminalId: TerminalManagerTreeTypes.TerminalKey;
|
|
48
48
|
groupId: TerminalManagerTreeTypes.GroupId;
|
|
49
49
|
}>;
|
|
50
|
+
protected readonly specialPageConfigs: Map<string, SpecialPageConfig>;
|
|
50
51
|
protected init(): void;
|
|
52
|
+
/**
|
|
53
|
+
* Register the default special pages. Subclasses can override this to
|
|
54
|
+
* add, remove, or replace entries before the model is used.
|
|
55
|
+
*/
|
|
56
|
+
protected configureSpecialPages(): void;
|
|
57
|
+
registerSpecialPage(kind: string, config: SpecialPageConfig): void;
|
|
58
|
+
getSpecialPageConfig(kind: string): SpecialPageConfig | undefined;
|
|
59
|
+
getSpecialPageConfigs(): ReadonlyMap<string, SpecialPageConfig>;
|
|
51
60
|
addTerminalPage(terminalKey: TerminalManagerTreeTypes.TerminalKey, groupId: TerminalManagerTreeTypes.GroupId, pageId: TerminalManagerTreeTypes.PageId, label?: string): void;
|
|
52
61
|
protected createPageNode(pageId: TerminalManagerTreeTypes.PageId): TerminalManagerTreeTypes.PageNode;
|
|
53
62
|
protected getNextPageCounter(): number;
|
|
@@ -68,12 +77,20 @@ export declare class TerminalManagerTreeModel extends TreeModelImpl {
|
|
|
68
77
|
getPageIdForTerminal(terminalKey: TerminalManagerTreeTypes.TerminalKey): TerminalManagerTreeTypes.PageId | undefined;
|
|
69
78
|
selectTerminalNode(terminalKey: TerminalManagerTreeTypes.TerminalKey): void;
|
|
70
79
|
updateTerminalLabel(terminalKey: TerminalManagerTreeTypes.TerminalKey, newLabel: string): void;
|
|
71
|
-
protected refreshWithSelection(refreshTarget?: CompositeTreeNode, selectionTarget?: SelectableTreeNode
|
|
80
|
+
protected refreshWithSelection(refreshTarget?: CompositeTreeNode, selectionTarget?: SelectableTreeNode): Promise<void>;
|
|
72
81
|
protected findSelection(start?: TreeNode): SelectableTreeNode | undefined;
|
|
73
|
-
|
|
82
|
+
/**
|
|
83
|
+
* Get or create a page by ID. If a special page config exists for this ID,
|
|
84
|
+
* its label is used; otherwise an auto-numbered label is generated.
|
|
85
|
+
*
|
|
86
|
+
* An existing page is only reused if it is currently attached to the root
|
|
87
|
+
* of the tree. A page that has been detached (e.g., because its last
|
|
88
|
+
* terminal was removed) is treated as missing and recreated.
|
|
89
|
+
*/
|
|
90
|
+
protected getOrCreatePage(pageId: TerminalManagerTreeTypes.PageId): {
|
|
74
91
|
page: TerminalManagerTreeTypes.PageNode;
|
|
75
92
|
isNewlyCreated: boolean;
|
|
76
93
|
};
|
|
77
|
-
|
|
94
|
+
protected createSpecialPageNode(pageId: TerminalManagerTreeTypes.PageId, label: string): TerminalManagerTreeTypes.PageNode;
|
|
78
95
|
}
|
|
79
96
|
//# sourceMappingURL=terminal-manager-tree-model.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"terminal-manager-tree-model.d.ts","sourceRoot":"","sources":["../../src/browser/terminal-manager-tree-model.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,kBAAkB,EAA0B,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AACjI,OAAO,EAAE,OAAO,EAAO,MAAM,aAAa,CAAC;AAC3C,OAAO,EAAE,wBAAwB,
|
|
1
|
+
{"version":3,"file":"terminal-manager-tree-model.d.ts","sourceRoot":"","sources":["../../src/browser/terminal-manager-tree-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,6 +40,7 @@ let TerminalManagerTreeModel = class TerminalManagerTreeModel extends browser_1.
|
|
|
40
40
|
this.onDidAddTerminalToGroup = this.onDidAddTerminalToGroupEmitter.event;
|
|
41
41
|
this.onDidDeleteTerminalFromGroupEmitter = new core_1.Emitter();
|
|
42
42
|
this.onDidDeleteTerminalFromGroup = this.onDidDeleteTerminalFromGroupEmitter.event;
|
|
43
|
+
this.specialPageConfigs = new Map();
|
|
43
44
|
}
|
|
44
45
|
init() {
|
|
45
46
|
super.init();
|
|
@@ -50,20 +51,39 @@ let TerminalManagerTreeModel = class TerminalManagerTreeModel extends browser_1.
|
|
|
50
51
|
}
|
|
51
52
|
}));
|
|
52
53
|
this.root = { id: 'root', parent: undefined, children: [], visible: false };
|
|
54
|
+
this.configureSpecialPages();
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Register the default special pages. Subclasses can override this to
|
|
58
|
+
* add, remove, or replace entries before the model is used.
|
|
59
|
+
*/
|
|
60
|
+
configureSpecialPages() {
|
|
61
|
+
this.registerSpecialPage('task', { pageId: 'page-tasks', label: core_1.nls.localizeByDefault('Tasks'), icon: 'tasklist' });
|
|
62
|
+
this.registerSpecialPage('debug', { pageId: 'page-debug', label: core_1.nls.localizeByDefault('Debug'), icon: 'debug-alt' });
|
|
63
|
+
}
|
|
64
|
+
registerSpecialPage(kind, config) {
|
|
65
|
+
this.specialPageConfigs.set(kind, config);
|
|
66
|
+
}
|
|
67
|
+
getSpecialPageConfig(kind) {
|
|
68
|
+
return this.specialPageConfigs.get(kind);
|
|
69
|
+
}
|
|
70
|
+
getSpecialPageConfigs() {
|
|
71
|
+
return this.specialPageConfigs;
|
|
53
72
|
}
|
|
54
73
|
addTerminalPage(terminalKey, groupId, pageId, label) {
|
|
55
|
-
const pageNode = this.
|
|
74
|
+
const { page: pageNode, isNewlyCreated } = this.getOrCreatePage(pageId);
|
|
56
75
|
const groupNode = this.createGroupNode(groupId, pageId);
|
|
57
76
|
const terminalNode = this.createTerminalNode(terminalKey, groupId, label);
|
|
58
77
|
if (this.root && browser_1.CompositeTreeNode.is(this.root)) {
|
|
59
78
|
this.activePageNode = pageNode;
|
|
60
79
|
browser_1.CompositeTreeNode.addChild(groupNode, terminalNode);
|
|
61
80
|
browser_1.CompositeTreeNode.addChild(pageNode, groupNode);
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
});
|
|
81
|
+
if (isNewlyCreated) {
|
|
82
|
+
this.root = browser_1.CompositeTreeNode.addChild(this.root, pageNode);
|
|
83
|
+
this.onDidAddPageEmitter.fire({ pageId: pageNode.id, terminalKey });
|
|
84
|
+
}
|
|
85
|
+
this.onDidAddTerminalGroupEmitter.fire({ groupId: groupNode.id, pageId: pageNode.id, terminalKey });
|
|
86
|
+
this.refreshWithSelection(pageNode, terminalNode);
|
|
67
87
|
}
|
|
68
88
|
}
|
|
69
89
|
createPageNode(pageId) {
|
|
@@ -87,9 +107,12 @@ let TerminalManagerTreeModel = class TerminalManagerTreeModel extends browser_1.
|
|
|
87
107
|
const pageNode = this.getNode(pageId);
|
|
88
108
|
if (terminal_manager_types_1.TerminalManagerTreeTypes.isPageNode(pageNode) && browser_1.CompositeTreeNode.is(this.root)) {
|
|
89
109
|
const isActive = this.activePageNode === pageNode;
|
|
110
|
+
const fallback = isActive
|
|
111
|
+
? this.findSelection(pageNode.previousSibling) ?? this.findSelection(pageNode.nextSibling)
|
|
112
|
+
: undefined;
|
|
90
113
|
this.onDidDeletePageEmitter.fire(pageNode.id);
|
|
91
|
-
browser_1.CompositeTreeNode.removeChild(this.root, pageNode);
|
|
92
|
-
this.refreshWithSelection(this.root,
|
|
114
|
+
browser_1.CompositeTreeNode.removeChild(this.root, pageNode, this.tree);
|
|
115
|
+
this.refreshWithSelection(this.root, fallback);
|
|
93
116
|
}
|
|
94
117
|
}
|
|
95
118
|
addTerminalGroup(terminalKey, groupId, pageId, label) {
|
|
@@ -134,14 +157,17 @@ let TerminalManagerTreeModel = class TerminalManagerTreeModel extends browser_1.
|
|
|
134
157
|
}
|
|
135
158
|
else {
|
|
136
159
|
const isActive = this.activeGroupNode === groupNode;
|
|
160
|
+
const fallback = isActive
|
|
161
|
+
? this.findSelection(groupNode.previousSibling) ?? this.findSelection(groupNode.nextSibling)
|
|
162
|
+
: undefined;
|
|
137
163
|
this.doDeleteTerminalGroup(groupNode, parentPageNode);
|
|
138
|
-
this.refreshWithSelection(parentPageNode,
|
|
164
|
+
this.refreshWithSelection(parentPageNode, fallback);
|
|
139
165
|
}
|
|
140
166
|
}
|
|
141
167
|
}
|
|
142
168
|
doDeleteTerminalGroup(group, page) {
|
|
143
169
|
this.onDidDeleteTerminalGroupEmitter.fire(group.id);
|
|
144
|
-
browser_1.CompositeTreeNode.removeChild(page, group);
|
|
170
|
+
browser_1.CompositeTreeNode.removeChild(page, group, this.tree);
|
|
145
171
|
}
|
|
146
172
|
addTerminal(newTerminalId, groupId, label) {
|
|
147
173
|
const groupNode = this.getNode(groupId);
|
|
@@ -173,8 +199,11 @@ let TerminalManagerTreeModel = class TerminalManagerTreeModel extends browser_1.
|
|
|
173
199
|
}
|
|
174
200
|
else {
|
|
175
201
|
const isActive = this.activeTerminalNode === terminalNode;
|
|
202
|
+
const fallback = isActive
|
|
203
|
+
? this.findSelection(terminalNode.previousSibling) ?? this.findSelection(terminalNode.nextSibling)
|
|
204
|
+
: undefined;
|
|
176
205
|
this.doDeleteTerminalNode(terminalNode, parentGroupNode);
|
|
177
|
-
this.refreshWithSelection(parentGroupNode,
|
|
206
|
+
this.refreshWithSelection(parentGroupNode, fallback);
|
|
178
207
|
}
|
|
179
208
|
}
|
|
180
209
|
}
|
|
@@ -183,7 +212,7 @@ let TerminalManagerTreeModel = class TerminalManagerTreeModel extends browser_1.
|
|
|
183
212
|
terminalId: node.id,
|
|
184
213
|
groupId: parent.id,
|
|
185
214
|
});
|
|
186
|
-
browser_1.CompositeTreeNode.removeChild(parent, node);
|
|
215
|
+
browser_1.CompositeTreeNode.removeChild(parent, node, this.tree);
|
|
187
216
|
}
|
|
188
217
|
toggleRenameTerminal(entityId) {
|
|
189
218
|
const node = this.getNode(entityId);
|
|
@@ -276,18 +305,11 @@ let TerminalManagerTreeModel = class TerminalManagerTreeModel extends browser_1.
|
|
|
276
305
|
this.fireChanged();
|
|
277
306
|
}
|
|
278
307
|
}
|
|
279
|
-
async refreshWithSelection(refreshTarget, selectionTarget
|
|
308
|
+
async refreshWithSelection(refreshTarget, selectionTarget) {
|
|
280
309
|
await this.refresh(refreshTarget);
|
|
281
310
|
if (selectionTarget) {
|
|
282
311
|
return this.selectNode(selectionTarget);
|
|
283
312
|
}
|
|
284
|
-
if (selectionReferent) {
|
|
285
|
-
const { previousSibling, nextSibling } = selectionReferent;
|
|
286
|
-
const toSelect = this.findSelection(previousSibling) ?? this.findSelection(nextSibling);
|
|
287
|
-
if (toSelect) {
|
|
288
|
-
this.selectNode(toSelect);
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
313
|
}
|
|
292
314
|
findSelection(start) {
|
|
293
315
|
if (!start) {
|
|
@@ -303,14 +325,30 @@ let TerminalManagerTreeModel = class TerminalManagerTreeModel extends browser_1.
|
|
|
303
325
|
return start.children.at(0)?.children.at(0);
|
|
304
326
|
}
|
|
305
327
|
}
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
328
|
+
/**
|
|
329
|
+
* Get or create a page by ID. If a special page config exists for this ID,
|
|
330
|
+
* its label is used; otherwise an auto-numbered label is generated.
|
|
331
|
+
*
|
|
332
|
+
* An existing page is only reused if it is currently attached to the root
|
|
333
|
+
* of the tree. A page that has been detached (e.g., because its last
|
|
334
|
+
* terminal was removed) is treated as missing and recreated.
|
|
335
|
+
*/
|
|
336
|
+
getOrCreatePage(pageId) {
|
|
337
|
+
const existing = this.getNode(pageId);
|
|
338
|
+
if (terminal_manager_types_1.TerminalManagerTreeTypes.isPageNode(existing) && existing.parent === this.root) {
|
|
339
|
+
return { page: existing, isNewlyCreated: false };
|
|
310
340
|
}
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
341
|
+
// Check if this is a special page with a configured label
|
|
342
|
+
const specialConfig = [...this.specialPageConfigs.values()].find(c => c.pageId === pageId);
|
|
343
|
+
const pageNode = specialConfig
|
|
344
|
+
? this.createSpecialPageNode(pageId, specialConfig.label)
|
|
345
|
+
: this.createPageNode(pageId);
|
|
346
|
+
return { page: pageNode, isNewlyCreated: true };
|
|
347
|
+
}
|
|
348
|
+
createSpecialPageNode(pageId, label) {
|
|
349
|
+
return {
|
|
350
|
+
id: pageId,
|
|
351
|
+
label,
|
|
314
352
|
parent: undefined,
|
|
315
353
|
selected: false,
|
|
316
354
|
children: [],
|
|
@@ -319,25 +357,6 @@ let TerminalManagerTreeModel = class TerminalManagerTreeModel extends browser_1.
|
|
|
319
357
|
expanded: true,
|
|
320
358
|
counter: 0,
|
|
321
359
|
};
|
|
322
|
-
if (this.root && browser_1.CompositeTreeNode.is(this.root)) {
|
|
323
|
-
this.root = browser_1.CompositeTreeNode.addChild(this.root, tasksPageNode);
|
|
324
|
-
}
|
|
325
|
-
return { page: tasksPageNode, isNewlyCreated: true };
|
|
326
|
-
}
|
|
327
|
-
addTerminalToTasksPage(terminalKey, groupId, label) {
|
|
328
|
-
const { page: tasksPage, isNewlyCreated } = this.getOrCreateTasksPage();
|
|
329
|
-
const groupNode = this.createGroupNode(groupId, tasksPage.id);
|
|
330
|
-
const terminalNode = this.createTerminalNode(terminalKey, groupId, label);
|
|
331
|
-
if (this.root && browser_1.CompositeTreeNode.is(this.root)) {
|
|
332
|
-
this.activePageNode = tasksPage;
|
|
333
|
-
browser_1.CompositeTreeNode.addChild(groupNode, terminalNode);
|
|
334
|
-
browser_1.CompositeTreeNode.addChild(tasksPage, groupNode);
|
|
335
|
-
if (isNewlyCreated) {
|
|
336
|
-
this.onDidAddPageEmitter.fire({ pageId: tasksPage.id, terminalKey });
|
|
337
|
-
}
|
|
338
|
-
this.onDidAddTerminalGroupEmitter.fire({ groupId: groupNode.id, pageId: tasksPage.id, terminalKey });
|
|
339
|
-
this.refreshWithSelection(tasksPage, terminalNode);
|
|
340
|
-
}
|
|
341
360
|
}
|
|
342
361
|
};
|
|
343
362
|
exports.TerminalManagerTreeModel = TerminalManagerTreeModel;
|