@theia/core 1.24.0-next.21 → 1.24.0-next.22

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.
Files changed (36) hide show
  1. package/README.md +3 -3
  2. package/lib/browser/common-frontend-contribution.d.ts +8 -2
  3. package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
  4. package/lib/browser/common-frontend-contribution.js +52 -0
  5. package/lib/browser/common-frontend-contribution.js.map +1 -1
  6. package/lib/browser/frontend-application-module.d.ts.map +1 -1
  7. package/lib/browser/frontend-application-module.js +2 -1
  8. package/lib/browser/frontend-application-module.js.map +1 -1
  9. package/lib/browser/shell/application-shell.d.ts +4 -0
  10. package/lib/browser/shell/application-shell.d.ts.map +1 -1
  11. package/lib/browser/shell/application-shell.js +37 -1
  12. package/lib/browser/shell/application-shell.js.map +1 -1
  13. package/lib/browser/shell/side-panel-handler.d.ts +1 -0
  14. package/lib/browser/shell/side-panel-handler.d.ts.map +1 -1
  15. package/lib/browser/shell/side-panel-handler.js +7 -2
  16. package/lib/browser/shell/side-panel-handler.js.map +1 -1
  17. package/lib/browser/shell/tab-bars.d.ts +4 -2
  18. package/lib/browser/shell/tab-bars.d.ts.map +1 -1
  19. package/lib/browser/shell/tab-bars.js +16 -2
  20. package/lib/browser/shell/tab-bars.js.map +1 -1
  21. package/lib/browser/view-container.d.ts.map +1 -1
  22. package/lib/browser/view-container.js +5 -1
  23. package/lib/browser/view-container.js.map +1 -1
  24. package/lib/browser/widgets/widget.d.ts +6 -1
  25. package/lib/browser/widgets/widget.d.ts.map +1 -1
  26. package/lib/browser/widgets/widget.js +30 -1
  27. package/lib/browser/widgets/widget.js.map +1 -1
  28. package/package.json +3 -3
  29. package/src/browser/common-frontend-contribution.ts +62 -4
  30. package/src/browser/frontend-application-module.ts +2 -1
  31. package/src/browser/shell/application-shell.ts +45 -1
  32. package/src/browser/shell/side-panel-handler.ts +8 -2
  33. package/src/browser/shell/tab-bars.ts +17 -2
  34. package/src/browser/style/tabs.css +12 -2
  35. package/src/browser/view-container.ts +4 -2
  36. package/src/browser/widgets/widget.ts +29 -1
@@ -1 +1 @@
1
- {"version":3,"file":"widget.js","sourceRoot":"","sources":["../../../src/browser/widgets/widget.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"widget.js","sourceRoot":"","sources":["../../../src/browser/widgets/widget.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@theia/core",
3
- "version": "1.24.0-next.21+95383a9d823",
3
+ "version": "1.24.0-next.22+334b92eed8b",
4
4
  "description": "Theia is a cloud & desktop IDE framework implemented in TypeScript.",
5
5
  "main": "lib/common/index.js",
6
6
  "typings": "lib/common/index.d.ts",
@@ -17,7 +17,7 @@
17
17
  "@phosphor/virtualdom": "1",
18
18
  "@phosphor/widgets": "1",
19
19
  "@primer/octicons-react": "^9.0.0",
20
- "@theia/application-package": "1.24.0-next.21+95383a9d823",
20
+ "@theia/application-package": "1.24.0-next.22+334b92eed8b",
21
21
  "@types/body-parser": "^1.16.4",
22
22
  "@types/cookie": "^0.3.3",
23
23
  "@types/dompurify": "^2.2.2",
@@ -190,5 +190,5 @@
190
190
  "nyc": {
191
191
  "extends": "../../configs/nyc.json"
192
192
  },
193
- "gitHead": "95383a9d8234b59309225058d47c654e050c6741"
193
+ "gitHead": "334b92eed8b1c76f2c062a3891530e631107b7a5"
194
194
  }
@@ -27,11 +27,11 @@ import { SelectionService } from '../common/selection-service';
27
27
  import { MessageService } from '../common/message-service';
28
28
  import { OpenerService, open } from '../browser/opener-service';
29
29
  import { ApplicationShell } from './shell/application-shell';
30
- import { SHELL_TABBAR_CONTEXT_CLOSE, SHELL_TABBAR_CONTEXT_COPY, SHELL_TABBAR_CONTEXT_SPLIT } from './shell/tab-bars';
30
+ import { SHELL_TABBAR_CONTEXT_CLOSE, SHELL_TABBAR_CONTEXT_COPY, SHELL_TABBAR_CONTEXT_PIN, SHELL_TABBAR_CONTEXT_SPLIT } from './shell/tab-bars';
31
31
  import { AboutDialog } from './about-dialog';
32
32
  import * as browser from './browser';
33
33
  import URI from '../common/uri';
34
- import { ContextKeyService } from './context-key-service';
34
+ import { ContextKey, ContextKeyService } from './context-key-service';
35
35
  import { OS, isOSX, isWindows } from '../common/os';
36
36
  import { ResourceContextKey } from './resource-context-key';
37
37
  import { UriSelection } from '../common/selection';
@@ -59,6 +59,7 @@ import { ConfirmDialog, confirmExit, Dialog } from './dialogs';
59
59
  import { WindowService } from './window/window-service';
60
60
  import { FrontendApplicationConfigProvider } from './frontend-application-config-provider';
61
61
  import { DecorationStyle } from './decoration-style';
62
+ import { isPinned, Title, togglePinned, Widget } from './widgets';
62
63
 
63
64
  export namespace CommonMenus {
64
65
 
@@ -241,6 +242,16 @@ export namespace CommonCommands {
241
242
  category: VIEW_CATEGORY,
242
243
  label: 'Toggle Status Bar Visibility'
243
244
  });
245
+ export const PIN_TAB = Command.toDefaultLocalizedCommand({
246
+ id: 'workbench.action.pinEditor',
247
+ category: VIEW_CATEGORY,
248
+ label: 'Pin Editor'
249
+ });
250
+ export const UNPIN_TAB = Command.toDefaultLocalizedCommand({
251
+ id: 'workbench.action.unpinEditor',
252
+ category: VIEW_CATEGORY,
253
+ label: 'Unpin Editor'
254
+ });
244
255
  export const TOGGLE_MAXIMIZED = Command.toLocalizedCommand({
245
256
  id: 'core.toggleMaximized',
246
257
  category: VIEW_CATEGORY,
@@ -372,6 +383,8 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
372
383
  @inject(WindowService)
373
384
  protected readonly windowService: WindowService;
374
385
 
386
+ protected pinnedKey: ContextKey<boolean>;
387
+
375
388
  async configure(app: FrontendApplication): Promise<void> {
376
389
  const configDirUri = await this.environments.getConfigDirUri();
377
390
  // Global settings
@@ -385,6 +398,10 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
385
398
  this.contextKeyService.createKey<boolean>('isWindows', OS.type() === OS.Type.Windows);
386
399
  this.contextKeyService.createKey<boolean>('isWeb', !this.isElectron());
387
400
 
401
+ this.pinnedKey = this.contextKeyService.createKey<boolean>('activeEditorIsPinned', false);
402
+ this.updatePinnedKey();
403
+ this.shell.onDidChangeActiveWidget(() => this.updatePinnedKey());
404
+
388
405
  this.initResourceContextKeys();
389
406
  this.registerCtrlWHandling();
390
407
 
@@ -427,6 +444,13 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
427
444
  }
428
445
  }
429
446
 
447
+ protected updatePinnedKey(): void {
448
+ const activeTab = this.shell.findTabBar();
449
+ const pinningTarget = activeTab && this.shell.findTitle(activeTab);
450
+ const value = pinningTarget && isPinned(pinningTarget);
451
+ this.pinnedKey.set(value);
452
+ }
453
+
430
454
  protected updateThemePreference(preferenceName: 'workbench.colorTheme' | 'workbench.iconTheme'): void {
431
455
  const inspect = this.preferenceService.inspect<string | null>(preferenceName);
432
456
  const workspaceValue = inspect && inspect.workspaceValue;
@@ -636,6 +660,16 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
636
660
  label: nls.localizeByDefault('Toggle Menu Bar'),
637
661
  order: '0'
638
662
  });
663
+ registry.registerMenuAction(SHELL_TABBAR_CONTEXT_PIN, {
664
+ commandId: CommonCommands.PIN_TAB.id,
665
+ label: nls.localizeByDefault('Pin'),
666
+ order: '7'
667
+ });
668
+ registry.registerMenuAction(SHELL_TABBAR_CONTEXT_PIN, {
669
+ commandId: CommonCommands.UNPIN_TAB.id,
670
+ label: nls.localizeByDefault('Unpin'),
671
+ order: '8'
672
+ });
639
673
  registry.registerMenuAction(CommonMenus.HELP, {
640
674
  commandId: CommonCommands.ABOUT_COMMAND.id,
641
675
  label: CommonCommands.ABOUT_COMMAND.label,
@@ -877,16 +911,30 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
877
911
  commandRegistry.registerCommand(CommonCommands.SELECT_ICON_THEME, {
878
912
  execute: () => this.selectIconTheme()
879
913
  });
880
-
914
+ commandRegistry.registerCommand(CommonCommands.PIN_TAB, new CurrentWidgetCommandAdapter(this.shell, {
915
+ isEnabled: title => Boolean(title && !isPinned(title)),
916
+ execute: title => this.togglePinned(title),
917
+ }));
918
+ commandRegistry.registerCommand(CommonCommands.UNPIN_TAB, new CurrentWidgetCommandAdapter(this.shell, {
919
+ isEnabled: title => Boolean(title && isPinned(title)),
920
+ execute: title => this.togglePinned(title),
921
+ }));
881
922
  commandRegistry.registerCommand(CommonCommands.CONFIGURE_DISPLAY_LANGUAGE, {
882
923
  execute: () => this.configureDisplayLanguage()
883
924
  });
884
925
  }
885
926
 
886
- private isElectron(): boolean {
927
+ protected isElectron(): boolean {
887
928
  return environment.electron.is();
888
929
  }
889
930
 
931
+ protected togglePinned(title?: Title<Widget>): void {
932
+ if (title) {
933
+ togglePinned(title);
934
+ this.updatePinnedKey();
935
+ }
936
+ }
937
+
890
938
  registerKeybindings(registry: KeybindingRegistry): void {
891
939
  if (supportCut) {
892
940
  registry.registerKeybinding({
@@ -996,6 +1044,16 @@ export class CommonFrontendContribution implements FrontendApplicationContributi
996
1044
  {
997
1045
  command: CommonCommands.SELECT_COLOR_THEME.id,
998
1046
  keybinding: 'ctrlcmd+k ctrlcmd+t'
1047
+ },
1048
+ {
1049
+ command: CommonCommands.PIN_TAB.id,
1050
+ keybinding: 'ctrlcmd+k shift+enter',
1051
+ when: '!activeEditorIsPinned'
1052
+ },
1053
+ {
1054
+ command: CommonCommands.UNPIN_TAB.id,
1055
+ keybinding: 'ctrlcmd+k shift+enter',
1056
+ when: 'activeEditorIsPinned'
999
1057
  }
1000
1058
  );
1001
1059
  }
@@ -171,7 +171,8 @@ export const frontendApplicationModule = new ContainerModule((bind, unbind, isBo
171
171
  const tabBarDecoratorService = container.get(TabBarDecoratorService);
172
172
  const iconThemeService = container.get(IconThemeService);
173
173
  const selectionService = container.get(SelectionService);
174
- return new TabBarRenderer(contextMenuRenderer, tabBarDecoratorService, iconThemeService, selectionService);
174
+ const commandService = container.get<CommandService>(CommandService);
175
+ return new TabBarRenderer(contextMenuRenderer, tabBarDecoratorService, iconThemeService, selectionService, commandService);
175
176
  });
176
177
 
177
178
  bindContributionProvider(bind, TabBarDecorator);
@@ -596,8 +596,10 @@ export class ApplicationShell extends Widget {
596
596
  return {
597
597
  version: applicationShellLayoutVersion,
598
598
  mainPanel: this.mainPanel.saveLayout(),
599
+ mainPanelPinned: this.getPinnedMainWidgets(),
599
600
  bottomPanel: {
600
601
  config: this.bottomPanel.saveLayout(),
602
+ pinned: this.getPinnedBottomWidgets(),
601
603
  size: this.bottomPanel.isVisible ? this.getBottomPanelSize() : this.bottomPanelState.lastPanelSize,
602
604
  expanded: this.isExpanded('bottom')
603
605
  },
@@ -607,6 +609,28 @@ export class ApplicationShell extends Widget {
607
609
  };
608
610
  }
609
611
 
612
+ // Get an array corresponding to main panel widgets' pinned state.
613
+ getPinnedMainWidgets(): boolean[] {
614
+ const pinned: boolean[] = [];
615
+
616
+ toArray(this.mainPanel.widgets()).forEach((a, i) => {
617
+ pinned[i] = a.title.className.indexOf('theia-mod-pinned') >= 0;
618
+ });
619
+
620
+ return pinned;
621
+ }
622
+
623
+ // Get an array corresponding to bottom panel widgets' pinned state.
624
+ getPinnedBottomWidgets(): boolean[] {
625
+ const pinned: boolean[] = [];
626
+
627
+ toArray(this.bottomPanel.widgets()).forEach((a, i) => {
628
+ pinned[i] = a.title.className.indexOf('theia-mod-pinned') >= 0;
629
+ });
630
+
631
+ return pinned;
632
+ }
633
+
610
634
  /**
611
635
  * Compute the current height of the bottom panel. This implementation assumes that the container
612
636
  * of the bottom panel is a `SplitPanel`.
@@ -639,7 +663,7 @@ export class ApplicationShell extends Widget {
639
663
  * Apply a shell layout that has been previously created with `getLayoutData`.
640
664
  */
641
665
  async setLayoutData(layoutData: ApplicationShell.LayoutData): Promise<void> {
642
- const { mainPanel, bottomPanel, leftPanel, rightPanel, activeWidgetId } = layoutData;
666
+ const { mainPanel, mainPanelPinned, bottomPanel, leftPanel, rightPanel, activeWidgetId } = layoutData;
643
667
  if (leftPanel) {
644
668
  this.leftPanelHandler.setLayoutData(leftPanel);
645
669
  this.registerWithFocusTracker(leftPanel);
@@ -663,6 +687,15 @@ export class ApplicationShell extends Widget {
663
687
  } else {
664
688
  this.collapseBottomPanel();
665
689
  }
690
+ const widgets = toArray(this.bottomPanel.widgets());
691
+ if (bottomPanel.pinned && bottomPanel.pinned.length === widgets.length) {
692
+ widgets.forEach((a, i) => {
693
+ if (bottomPanel.pinned![i]) {
694
+ a.title.className += ' theia-mod-pinned';
695
+ a.title.closable = false;
696
+ }
697
+ });
698
+ }
666
699
  this.refreshBottomPanelToggleButton();
667
700
  }
668
701
  // Proceed with the main panel once all others are set up
@@ -670,6 +703,15 @@ export class ApplicationShell extends Widget {
670
703
  if (mainPanel) {
671
704
  this.mainPanel.restoreLayout(mainPanel);
672
705
  this.registerWithFocusTracker(mainPanel.main);
706
+ const widgets = toArray(this.mainPanel.widgets());
707
+ if (mainPanelPinned && mainPanelPinned.length === widgets.length) {
708
+ widgets.forEach((a, i) => {
709
+ if (mainPanelPinned[i]) {
710
+ a.title.className += ' theia-mod-pinned';
711
+ a.title.closable = false;
712
+ }
713
+ });
714
+ }
673
715
  }
674
716
  if (activeWidgetId) {
675
717
  this.activateWidget(activeWidgetId);
@@ -1954,6 +1996,7 @@ export namespace ApplicationShell {
1954
1996
  export interface LayoutData {
1955
1997
  version?: string | ApplicationShellLayoutVersion,
1956
1998
  mainPanel?: DockPanel.ILayoutConfig;
1999
+ mainPanelPinned?: boolean[];
1957
2000
  bottomPanel?: BottomPanelLayoutData;
1958
2001
  leftPanel?: SidePanel.LayoutData;
1959
2002
  rightPanel?: SidePanel.LayoutData;
@@ -1967,6 +2010,7 @@ export namespace ApplicationShell {
1967
2010
  config?: DockPanel.ILayoutConfig;
1968
2011
  size?: number;
1969
2012
  expanded?: boolean;
2013
+ pinned?: boolean[];
1970
2014
  }
1971
2015
 
1972
2016
  /**
@@ -272,7 +272,8 @@ export class SidePanelHandler {
272
272
  const items = toArray(map(this.tabBar.titles, title => <SidePanel.WidgetItem>{
273
273
  widget: title.owner,
274
274
  rank: SidePanelHandler.rankProperty.get(title.owner),
275
- expanded: title === currentTitle
275
+ expanded: title === currentTitle,
276
+ pinned: title.className.indexOf('theia-mod-pinned') >= 0
276
277
  }));
277
278
  // eslint-disable-next-line no-null/no-null
278
279
  const size = currentTitle !== null ? this.getPanelSize() : this.state.lastPanelSize;
@@ -288,7 +289,7 @@ export class SidePanelHandler {
288
289
 
289
290
  let currentTitle: Title<Widget> | undefined;
290
291
  if (layoutData.items) {
291
- for (const { widget, rank, expanded } of layoutData.items) {
292
+ for (const { widget, rank, expanded, pinned } of layoutData.items) {
292
293
  if (widget) {
293
294
  if (rank) {
294
295
  SidePanelHandler.rankProperty.set(widget, rank);
@@ -296,6 +297,10 @@ export class SidePanelHandler {
296
297
  if (expanded) {
297
298
  currentTitle = widget.title;
298
299
  }
300
+ if (pinned) {
301
+ widget.title.className += ' theia-mod-pinned';
302
+ widget.title.closable = false;
303
+ }
299
304
  // Add the widgets directly to the tab bar in the same order as they are stored
300
305
  this.tabBar.addTab(widget.title);
301
306
  }
@@ -725,6 +730,7 @@ export namespace SidePanel {
725
730
  /** Can be undefined in case the widget could not be restored. */
726
731
  widget?: Widget;
727
732
  expanded?: boolean;
733
+ pinned?: boolean;
728
734
  }
729
735
 
730
736
  export interface State {
@@ -17,7 +17,7 @@
17
17
  import PerfectScrollbar from 'perfect-scrollbar';
18
18
  import { TabBar, Title, Widget } from '@phosphor/widgets';
19
19
  import { VirtualElement, h, VirtualDOM, ElementInlineStyle } from '@phosphor/virtualdom';
20
- import { Disposable, DisposableCollection, MenuPath, notEmpty, SelectionService } from '../../common';
20
+ import { Disposable, DisposableCollection, MenuPath, notEmpty, SelectionService, CommandService } from '../../common';
21
21
  import { ContextMenuRenderer } from '../context-menu-renderer';
22
22
  import { Signal, Slot } from '@phosphor/signaling';
23
23
  import { Message, MessageLoop } from '@phosphor/messaging';
@@ -31,6 +31,7 @@ import { IconThemeService } from '../icon-theme-service';
31
31
  import { BreadcrumbsRenderer, BreadcrumbsRendererFactory } from '../breadcrumbs/breadcrumbs-renderer';
32
32
  import { NavigatableWidget } from '../navigatable-types';
33
33
  import { IDragEvent } from '@phosphor/dragdrop';
34
+ import { PINNED_CLASS } from '../widgets/widget';
34
35
 
35
36
  /** The class name added to hidden content nodes, which are required to render vertical side bars. */
36
37
  const HIDDEN_CONTENT_CLASS = 'theia-TabBar-hidden-content';
@@ -87,6 +88,7 @@ export class TabBarRenderer extends TabBar.Renderer {
87
88
  protected readonly decoratorService?: TabBarDecoratorService,
88
89
  protected readonly iconThemeService?: IconThemeService,
89
90
  protected readonly selectionService?: SelectionService,
91
+ protected readonly commandService?: CommandService
90
92
  ) {
91
93
  super();
92
94
  if (this.decoratorService) {
@@ -162,7 +164,10 @@ export class TabBarRenderer extends TabBar.Renderer {
162
164
  this.renderLabel(data, isInSidePanel),
163
165
  this.renderBadge(data, isInSidePanel)
164
166
  ),
165
- this.renderCloseIcon(data)
167
+ h.div({
168
+ className: 'p-TabBar-tabCloseIcon action-item',
169
+ onclick: this.handleCloseClickEvent
170
+ })
166
171
  );
167
172
  }
168
173
 
@@ -467,6 +472,16 @@ export class TabBarRenderer extends TabBar.Renderer {
467
472
  }
468
473
  };
469
474
 
475
+ protected handleCloseClickEvent = (event: MouseEvent) => {
476
+ if (this.tabBar && event.currentTarget instanceof HTMLElement) {
477
+ const id = event.currentTarget.parentElement!.id;
478
+ const title = this.tabBar.titles.find(t => this.createTabId(t) === id);
479
+ if (title?.closable === false && title?.className.includes(PINNED_CLASS) && this.commandService) {
480
+ this.commandService.executeCommand('workbench.action.unpinEditor', event);
481
+ }
482
+ }
483
+ };
484
+
470
485
  protected handleDblClickEvent = (event: MouseEvent) => {
471
486
  if (this.tabBar && event.currentTarget instanceof HTMLElement) {
472
487
  const id = event.currentTarget.id;
@@ -235,7 +235,8 @@ body.theia-editor-highlightModifiedTabs
235
235
  height: inherit;
236
236
  }
237
237
 
238
- .p-TabBar.theia-app-centers .p-TabBar-tab.p-mod-closable > .p-TabBar-tabCloseIcon {
238
+ .p-TabBar.theia-app-centers .p-TabBar-tab.p-mod-closable > .p-TabBar-tabCloseIcon,
239
+ .p-TabBar.theia-app-centers .p-TabBar-tab.theia-mod-pinned > .p-TabBar-tabCloseIcon {
239
240
  padding: 2px;
240
241
  margin-top: 2px;
241
242
  margin-left: 4px;
@@ -258,7 +259,8 @@ body.theia-editor-highlightModifiedTabs
258
259
  background-color: rgba(50%, 50%, 50%, 0.2);
259
260
  }
260
261
 
261
- .p-TabBar.theia-app-centers .p-TabBar-tab.p-mod-closable {
262
+ .p-TabBar.theia-app-centers .p-TabBar-tab.p-mod-closable,
263
+ .p-TabBar.theia-app-centers .p-TabBar-tab.theia-mod-pinned {
262
264
  padding-right: 4px;
263
265
  }
264
266
 
@@ -272,6 +274,14 @@ body.theia-editor-highlightModifiedTabs
272
274
  content: "\ea71";
273
275
  }
274
276
 
277
+ .p-TabBar.theia-app-centers .p-TabBar-tab.theia-mod-pinned > .p-TabBar-tabCloseIcon:before {
278
+ content: "\eba0";
279
+ }
280
+
281
+ .p-TabBar.theia-app-centers .p-TabBar-tab.theia-mod-pinned.theia-mod-dirty > .p-TabBar-tabCloseIcon:before {
282
+ content: "\ebb2";
283
+ }
284
+
275
285
  .p-TabBar-tabIcon.no-icon {
276
286
  display: none !important;
277
287
  }
@@ -18,7 +18,7 @@ import { interfaces, injectable, inject, postConstruct } from 'inversify';
18
18
  import { IIterator, toArray, find, some, every, map, ArrayExt } from '@phosphor/algorithm';
19
19
  import {
20
20
  Widget, EXPANSION_TOGGLE_CLASS, COLLAPSED_CLASS, CODICON_TREE_ITEM_CLASSES, MessageLoop, Message, SplitPanel,
21
- BaseWidget, addEventListener, SplitLayout, LayoutItem, PanelLayout, addKeyListener, waitForRevealed, UnsafeWidgetUtilities, DockPanel
21
+ BaseWidget, addEventListener, SplitLayout, LayoutItem, PanelLayout, addKeyListener, waitForRevealed, UnsafeWidgetUtilities, DockPanel, PINNED_CLASS
22
22
  } from './widgets';
23
23
  import { Event as CommonEvent, Emitter } from '../common/event';
24
24
  import { Disposable, DisposableCollection } from '../common/disposable';
@@ -276,7 +276,9 @@ export class ViewContainer extends BaseWidget implements StatefulWidget, Applica
276
276
  if (title.iconClass) {
277
277
  this.title.iconClass = title.iconClass;
278
278
  }
279
- if (title.closeable !== undefined) {
279
+ if (this.title.className.includes(PINNED_CLASS)) {
280
+ this.title.closable &&= false;
281
+ } else if (title.closeable !== undefined) {
280
282
  this.title.closable = title.closeable;
281
283
  }
282
284
  }
@@ -17,7 +17,7 @@
17
17
  /* eslint-disable @typescript-eslint/no-explicit-any */
18
18
 
19
19
  import { injectable, decorate, unmanaged } from 'inversify';
20
- import { Widget } from '@phosphor/widgets';
20
+ import { Title, Widget } from '@phosphor/widgets';
21
21
  import { Message, MessageLoop } from '@phosphor/messaging';
22
22
  import { Emitter, Event, Disposable, DisposableCollection, MaybePromise } from '../../common';
23
23
  import { KeyCode, KeysOrKeyCodes } from '../keyboard/keys';
@@ -52,6 +52,7 @@ export const BUSY_CLASS = 'theia-mod-busy';
52
52
  export const CODICON_LOADING_CLASSES = codiconArray('loading');
53
53
  export const SELECTED_CLASS = 'theia-mod-selected';
54
54
  export const FOCUS_CLASS = 'theia-mod-focus';
55
+ export const PINNED_CLASS = 'theia-mod-pinned';
55
56
  export const DEFAULT_SCROLL_OPTIONS: PerfectScrollbar.Options = {
56
57
  suppressScrollX: true,
57
58
  minScrollbarLength: 35,
@@ -353,3 +354,30 @@ function waitForVisible(widget: Widget, visible: boolean, attached?: boolean): P
353
354
  waitFor();
354
355
  });
355
356
  }
357
+
358
+ export function isPinned(title: Title<Widget>): boolean {
359
+ const pinnedState = !title.closable && title.className.includes(PINNED_CLASS);
360
+ return pinnedState;
361
+ }
362
+
363
+ export function unpin(title: Title<Widget>): void {
364
+ title.closable = true;
365
+ title.className = title.className.replace(PINNED_CLASS, '').trim();
366
+ }
367
+
368
+ export function pin(title: Title<Widget>): void {
369
+ title.closable = false;
370
+ if (!title.className.includes(PINNED_CLASS)) {
371
+ title.className += ` ${PINNED_CLASS}`;
372
+ }
373
+ }
374
+
375
+ export function togglePinned(title?: Title<Widget>): void {
376
+ if (title) {
377
+ if (isPinned(title)) {
378
+ unpin(title);
379
+ } else {
380
+ pin(title);
381
+ }
382
+ }
383
+ }