@theia/core 1.17.2 → 1.18.0-next.05f289b3
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/README.md +2 -2
- package/lib/browser/breadcrumbs/breadcrumb-popup-container.d.ts +50 -0
- package/lib/browser/breadcrumbs/breadcrumb-popup-container.d.ts.map +1 -0
- package/lib/browser/breadcrumbs/breadcrumb-popup-container.js +115 -0
- package/lib/browser/breadcrumbs/breadcrumb-popup-container.js.map +1 -0
- package/lib/browser/breadcrumbs/breadcrumb-renderer.d.ts +28 -0
- package/lib/browser/breadcrumbs/breadcrumb-renderer.d.ts.map +1 -0
- package/lib/browser/breadcrumbs/breadcrumb-renderer.js +43 -0
- package/lib/browser/breadcrumbs/breadcrumb-renderer.js.map +1 -0
- package/lib/browser/breadcrumbs/breadcrumbs-constants.d.ts +65 -0
- package/lib/browser/breadcrumbs/breadcrumbs-constants.d.ts.map +1 -0
- package/lib/browser/breadcrumbs/breadcrumbs-constants.js +28 -0
- package/lib/browser/breadcrumbs/breadcrumbs-constants.js.map +1 -0
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.d.ts +61 -0
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.d.ts.map +1 -0
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.js +190 -0
- package/lib/browser/breadcrumbs/breadcrumbs-renderer.js.map +1 -0
- package/lib/browser/breadcrumbs/breadcrumbs-service.d.ts +48 -0
- package/lib/browser/breadcrumbs/breadcrumbs-service.d.ts.map +1 -0
- package/lib/browser/breadcrumbs/breadcrumbs-service.js +120 -0
- package/lib/browser/breadcrumbs/breadcrumbs-service.js.map +1 -0
- package/lib/browser/breadcrumbs/index.d.ts +21 -0
- package/lib/browser/breadcrumbs/index.d.ts.map +1 -0
- package/lib/browser/breadcrumbs/index.js +33 -0
- package/lib/browser/breadcrumbs/index.js.map +1 -0
- package/lib/browser/common-frontend-contribution.d.ts.map +1 -1
- package/lib/browser/common-frontend-contribution.js +40 -0
- package/lib/browser/common-frontend-contribution.js.map +1 -1
- package/lib/browser/context-menu-renderer.d.ts +6 -6
- package/lib/browser/context-menu-renderer.d.ts.map +1 -1
- package/lib/browser/context-menu-renderer.js +7 -1
- package/lib/browser/context-menu-renderer.js.map +1 -1
- package/lib/browser/core-preferences.d.ts +3 -2
- package/lib/browser/core-preferences.d.ts.map +1 -1
- package/lib/browser/core-preferences.js +49 -43
- package/lib/browser/core-preferences.js.map +1 -1
- package/lib/browser/dialogs.d.ts.map +1 -1
- package/lib/browser/dialogs.js +1 -2
- package/lib/browser/dialogs.js.map +1 -1
- package/lib/browser/diff-uris.d.ts.map +1 -1
- package/lib/browser/diff-uris.js +2 -1
- package/lib/browser/diff-uris.js.map +1 -1
- package/lib/browser/frontend-application-module.d.ts.map +1 -1
- package/lib/browser/frontend-application-module.js +25 -16
- package/lib/browser/frontend-application-module.js.map +1 -1
- package/lib/browser/index.d.ts +1 -0
- package/lib/browser/index.d.ts.map +1 -1
- package/lib/browser/index.js +1 -0
- package/lib/browser/index.js.map +1 -1
- package/lib/browser/label-provider.d.ts +2 -2
- package/lib/browser/label-provider.d.ts.map +1 -1
- package/lib/browser/label-provider.js +3 -2
- package/lib/browser/label-provider.js.map +1 -1
- package/lib/browser/menu/browser-context-menu-renderer.d.ts.map +1 -1
- package/lib/browser/menu/browser-context-menu-renderer.js +1 -1
- package/lib/browser/menu/browser-context-menu-renderer.js.map +1 -1
- package/lib/browser/navigatable-types.d.ts +49 -0
- package/lib/browser/navigatable-types.d.ts.map +1 -0
- package/lib/browser/navigatable-types.js +58 -0
- package/lib/browser/navigatable-types.js.map +1 -0
- package/lib/browser/navigatable.d.ts +2 -32
- package/lib/browser/navigatable.d.ts.map +1 -1
- package/lib/browser/navigatable.js +12 -40
- package/lib/browser/navigatable.js.map +1 -1
- package/lib/browser/progress-status-bar-item.js +1 -1
- package/lib/browser/progress-status-bar-item.js.map +1 -1
- package/lib/browser/quick-input/quick-command-service.d.ts.map +1 -1
- package/lib/browser/quick-input/quick-command-service.js +2 -1
- package/lib/browser/quick-input/quick-command-service.js.map +1 -1
- package/lib/browser/quick-input/quick-input-service.d.ts +4 -0
- package/lib/browser/quick-input/quick-input-service.d.ts.map +1 -1
- package/lib/browser/quick-input/quick-input-service.js.map +1 -1
- package/lib/browser/shell/application-shell.d.ts +7 -3
- package/lib/browser/shell/application-shell.d.ts.map +1 -1
- package/lib/browser/shell/application-shell.js +11 -8
- package/lib/browser/shell/application-shell.js.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar.d.ts.map +1 -1
- package/lib/browser/shell/tab-bar-toolbar.js +3 -2
- package/lib/browser/shell/tab-bar-toolbar.js.map +1 -1
- package/lib/browser/shell/tab-bars.d.ts +9 -3
- package/lib/browser/shell/tab-bars.d.ts.map +1 -1
- package/lib/browser/shell/tab-bars.js +38 -5
- package/lib/browser/shell/tab-bars.js.map +1 -1
- package/lib/browser/status-bar/status-bar.d.ts.map +1 -1
- package/lib/browser/status-bar/status-bar.js +4 -1
- package/lib/browser/status-bar/status-bar.js.map +1 -1
- package/lib/browser/tree/tree-widget.d.ts.map +1 -1
- package/lib/browser/tree/tree-widget.js +1 -1
- package/lib/browser/tree/tree-widget.js.map +1 -1
- package/lib/browser/view-container.d.ts +10 -0
- package/lib/browser/view-container.d.ts.map +1 -1
- package/lib/browser/view-container.js +26 -2
- package/lib/browser/view-container.js.map +1 -1
- package/lib/browser/widgets/alert-message.d.ts.map +1 -1
- package/lib/browser/widgets/alert-message.js +5 -4
- package/lib/browser/widgets/alert-message.js.map +1 -1
- package/lib/browser/widgets/react-renderer.d.ts +3 -1
- package/lib/browser/widgets/react-renderer.d.ts.map +1 -1
- package/lib/browser/widgets/react-renderer.js +7 -2
- package/lib/browser/widgets/react-renderer.js.map +1 -1
- package/lib/browser/widgets/widget.d.ts +4 -0
- package/lib/browser/widgets/widget.d.ts.map +1 -1
- package/lib/browser/widgets/widget.js +16 -2
- package/lib/browser/widgets/widget.js.map +1 -1
- package/lib/electron-browser/menu/electron-context-menu-renderer.d.ts.map +1 -1
- package/lib/electron-browser/menu/electron-context-menu-renderer.js +1 -1
- package/lib/electron-browser/menu/electron-context-menu-renderer.js.map +1 -1
- package/package.json +3 -3
- package/src/browser/breadcrumbs/breadcrumb-popup-container.ts +101 -0
- package/src/browser/breadcrumbs/breadcrumb-renderer.tsx +41 -0
- package/src/browser/breadcrumbs/breadcrumbs-constants.ts +79 -0
- package/src/browser/breadcrumbs/breadcrumbs-renderer.tsx +187 -0
- package/src/browser/breadcrumbs/breadcrumbs-service.ts +108 -0
- package/src/browser/breadcrumbs/index.ts +21 -0
- package/src/browser/common-frontend-contribution.ts +45 -0
- package/src/browser/context-menu-renderer.ts +10 -2
- package/src/browser/core-preferences.ts +52 -45
- package/src/browser/dialogs.ts +2 -3
- package/src/browser/diff-uris.ts +2 -1
- package/src/browser/frontend-application-module.ts +36 -12
- package/src/browser/index.ts +1 -0
- package/src/browser/label-provider.ts +3 -2
- package/src/browser/menu/browser-context-menu-renderer.ts +2 -2
- package/src/browser/navigatable-types.ts +78 -0
- package/src/browser/navigatable.ts +2 -61
- package/src/browser/progress-status-bar-item.ts +1 -1
- package/src/browser/quick-input/quick-command-service.ts +2 -1
- package/src/browser/quick-input/quick-input-service.ts +4 -0
- package/src/browser/shell/application-shell.ts +23 -15
- package/src/browser/shell/tab-bar-toolbar.tsx +4 -3
- package/src/browser/shell/tab-bars.ts +43 -9
- package/src/browser/status-bar/status-bar.tsx +3 -1
- package/src/browser/style/breadcrumbs.css +131 -0
- package/src/browser/style/index.css +11 -0
- package/src/browser/style/menus.css +14 -4
- package/src/browser/style/scrollbars.css +33 -14
- package/src/browser/style/sidepanel.css +11 -4
- package/src/browser/style/status-bar.css +6 -1
- package/src/browser/style/tabs.css +59 -34
- package/src/browser/style/tree.css +0 -1
- package/src/browser/style/view-container.css +9 -0
- package/src/browser/tree/tree-widget.tsx +4 -2
- package/src/browser/view-container.ts +35 -1
- package/src/browser/widgets/alert-message.tsx +5 -4
- package/src/browser/widgets/react-renderer.tsx +5 -2
- package/src/browser/widgets/widget.ts +16 -1
- package/src/electron-browser/menu/electron-context-menu-renderer.ts +2 -2
|
@@ -75,10 +75,19 @@
|
|
|
75
75
|
}
|
|
76
76
|
|
|
77
77
|
.theia-view-container .part > .header .label {
|
|
78
|
+
flex: 0;
|
|
79
|
+
white-space: nowrap;
|
|
80
|
+
text-overflow: ellipsis;
|
|
81
|
+
}
|
|
82
|
+
|
|
83
|
+
.theia-view-container .part > .header .description {
|
|
78
84
|
flex: 1;
|
|
79
85
|
overflow: hidden;
|
|
80
86
|
white-space: nowrap;
|
|
81
87
|
text-overflow: ellipsis;
|
|
88
|
+
padding-left: var(--theia-ui-padding);
|
|
89
|
+
text-transform: none;
|
|
90
|
+
opacity: 0.6;
|
|
82
91
|
}
|
|
83
92
|
|
|
84
93
|
.theia-view-container .part > .body {
|
|
@@ -20,7 +20,9 @@ import { Disposable, MenuPath, SelectionService } from '../../common';
|
|
|
20
20
|
import { Key, KeyCode, KeyModifier } from '../keyboard/keys';
|
|
21
21
|
import { ContextMenuRenderer } from '../context-menu-renderer';
|
|
22
22
|
import { StatefulWidget } from '../shell';
|
|
23
|
-
import {
|
|
23
|
+
import {
|
|
24
|
+
EXPANSION_TOGGLE_CLASS, SELECTED_CLASS, COLLAPSED_CLASS, FOCUS_CLASS, BUSY_CLASS, CODICON_TREE_ITEM_CLASSES, CODICON_LOADING_CLASSES, Widget, UnsafeWidgetUtilities
|
|
25
|
+
} from '../widgets';
|
|
24
26
|
import { TreeNode, CompositeTreeNode } from './tree';
|
|
25
27
|
import { TreeModel } from './tree-model';
|
|
26
28
|
import { ExpandableTreeNode } from './tree-expansion';
|
|
@@ -564,7 +566,7 @@ export class TreeWidget extends ReactWidget implements StatefulWidget {
|
|
|
564
566
|
classes.push(COLLAPSED_CLASS);
|
|
565
567
|
}
|
|
566
568
|
if (node.busy) {
|
|
567
|
-
classes.push(BUSY_CLASS);
|
|
569
|
+
classes.push(BUSY_CLASS, ...CODICON_LOADING_CLASSES);
|
|
568
570
|
} else {
|
|
569
571
|
classes.push(...CODICON_TREE_ITEM_CLASSES);
|
|
570
572
|
}
|
|
@@ -47,6 +47,17 @@ export class ViewContainerIdentifier {
|
|
|
47
47
|
progressLocationId?: string;
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
+
export interface DescriptionWidget {
|
|
51
|
+
description: string;
|
|
52
|
+
onDidChangeDescription: Emitter<void>;
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
export namespace DescriptionWidget {
|
|
56
|
+
export function is(arg: Object | undefined): arg is DescriptionWidget {
|
|
57
|
+
return !!arg && typeof arg === 'object' && 'onDidChangeDescription' in arg;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
50
61
|
/**
|
|
51
62
|
* A view container holds an arbitrary number of widgets inside a split panel.
|
|
52
63
|
* Each widget is wrapped in a _part_ that displays the widget title and toolbar
|
|
@@ -704,6 +715,8 @@ export class ViewContainerPart extends BaseWidget {
|
|
|
704
715
|
readonly onTitleChanged = this.onTitleChangedEmitter.event;
|
|
705
716
|
protected readonly onDidFocusEmitter = new Emitter<this>();
|
|
706
717
|
readonly onDidFocus = this.onDidFocusEmitter.event;
|
|
718
|
+
protected readonly onDidChangeDescriptionEmitter = new Emitter<void>();
|
|
719
|
+
readonly onDidChangeDescription = this.onDidChangeDescriptionEmitter.event;
|
|
707
720
|
|
|
708
721
|
protected readonly toolbar: TabBarToolbar;
|
|
709
722
|
|
|
@@ -732,6 +745,11 @@ export class ViewContainerPart extends BaseWidget {
|
|
|
732
745
|
this.wrapped.title.changed.connect(fireTitleChanged);
|
|
733
746
|
this.toDispose.push(Disposable.create(() => this.wrapped.title.changed.disconnect(fireTitleChanged)));
|
|
734
747
|
|
|
748
|
+
if (DescriptionWidget.is(this.wrapped)) {
|
|
749
|
+
const fireDescriptionChanged = () => this.onDidChangeDescriptionEmitter.fire(undefined);
|
|
750
|
+
this.toDispose.push(this.wrapped?.onDidChangeDescription.event(fireDescriptionChanged));
|
|
751
|
+
}
|
|
752
|
+
|
|
735
753
|
const { header, body, disposable } = this.createContent();
|
|
736
754
|
this.header = header;
|
|
737
755
|
this.body = body;
|
|
@@ -747,6 +765,7 @@ export class ViewContainerPart extends BaseWidget {
|
|
|
747
765
|
this.collapsedEmitter,
|
|
748
766
|
this.contextMenuEmitter,
|
|
749
767
|
this.onTitleChangedEmitter,
|
|
768
|
+
this.onDidChangeDescriptionEmitter,
|
|
750
769
|
this.registerContextMenu(),
|
|
751
770
|
this.onDidFocusEmitter,
|
|
752
771
|
// focus event does not bubble, capture it
|
|
@@ -892,15 +911,29 @@ export class ViewContainerPart extends BaseWidget {
|
|
|
892
911
|
|
|
893
912
|
const title = document.createElement('span');
|
|
894
913
|
title.classList.add('label', 'noselect');
|
|
914
|
+
|
|
915
|
+
const description = document.createElement('span');
|
|
916
|
+
description.classList.add('description');
|
|
917
|
+
|
|
895
918
|
const updateTitle = () => title.innerText = this.wrapped.title.label;
|
|
896
919
|
const updateCaption = () => title.title = this.wrapped.title.caption || this.wrapped.title.label;
|
|
920
|
+
const updateDescription = () => {
|
|
921
|
+
description.innerText = DescriptionWidget.is(this.wrapped) && !this.collapsed && this.wrapped.description || '';
|
|
922
|
+
};
|
|
923
|
+
|
|
897
924
|
updateTitle();
|
|
898
925
|
updateCaption();
|
|
926
|
+
updateDescription();
|
|
927
|
+
|
|
899
928
|
disposable.pushAll([
|
|
900
929
|
this.onTitleChanged(updateTitle),
|
|
901
|
-
this.onTitleChanged(updateCaption)
|
|
930
|
+
this.onTitleChanged(updateCaption),
|
|
931
|
+
this.onDidChangeDescription(updateDescription),
|
|
932
|
+
this.onCollapsed(updateDescription),
|
|
902
933
|
]);
|
|
903
934
|
header.appendChild(title);
|
|
935
|
+
header.appendChild(description);
|
|
936
|
+
|
|
904
937
|
return {
|
|
905
938
|
header,
|
|
906
939
|
disposable
|
|
@@ -998,6 +1031,7 @@ export namespace ViewContainerPart {
|
|
|
998
1031
|
collapsed: boolean;
|
|
999
1032
|
hidden: boolean;
|
|
1000
1033
|
relativeSize?: number;
|
|
1034
|
+
description?: string;
|
|
1001
1035
|
}
|
|
1002
1036
|
|
|
1003
1037
|
export function closestPart(element: Element | EventTarget | null, selector: string = 'div.part'): Element | undefined {
|
|
@@ -15,6 +15,7 @@
|
|
|
15
15
|
********************************************************************************/
|
|
16
16
|
|
|
17
17
|
import React = require('react');
|
|
18
|
+
import { codicon } from './widget';
|
|
18
19
|
|
|
19
20
|
export type MessageType = keyof AlertMessageIcon;
|
|
20
21
|
|
|
@@ -26,10 +27,10 @@ interface AlertMessageIcon {
|
|
|
26
27
|
}
|
|
27
28
|
|
|
28
29
|
const AlertMessageIcon = {
|
|
29
|
-
INFO: '
|
|
30
|
-
SUCCESS: '
|
|
31
|
-
WARNING: '
|
|
32
|
-
ERROR: '
|
|
30
|
+
INFO: codicon('info'),
|
|
31
|
+
SUCCESS: codicon('pass'),
|
|
32
|
+
WARNING: codicon('warning'),
|
|
33
|
+
ERROR: codicon('error')
|
|
33
34
|
};
|
|
34
35
|
|
|
35
36
|
export interface AlertMessageProps {
|
|
@@ -14,16 +14,19 @@
|
|
|
14
14
|
* SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
|
|
15
15
|
********************************************************************************/
|
|
16
16
|
|
|
17
|
-
import { injectable } from 'inversify';
|
|
17
|
+
import { inject, injectable, optional } from 'inversify';
|
|
18
18
|
import * as React from 'react';
|
|
19
19
|
import * as ReactDOM from 'react-dom';
|
|
20
20
|
import { Disposable } from '../../common';
|
|
21
21
|
|
|
22
|
+
export type RendererHost = HTMLElement;
|
|
23
|
+
export const RendererHost = Symbol('RendererHost');
|
|
24
|
+
|
|
22
25
|
@injectable()
|
|
23
26
|
export class ReactRenderer implements Disposable {
|
|
24
27
|
readonly host: HTMLElement;
|
|
25
28
|
constructor(
|
|
26
|
-
host?:
|
|
29
|
+
@inject(RendererHost) @optional() host?: RendererHost
|
|
27
30
|
) {
|
|
28
31
|
this.host = host || document.createElement('div');
|
|
29
32
|
}
|
|
@@ -30,11 +30,26 @@ decorate(unmanaged(), Widget, 0);
|
|
|
30
30
|
export * from '@phosphor/widgets';
|
|
31
31
|
export * from '@phosphor/messaging';
|
|
32
32
|
|
|
33
|
+
export const ACTION_ITEM = 'action-item';
|
|
34
|
+
|
|
35
|
+
export function codiconArray(name: string, actionItem = false): string[] {
|
|
36
|
+
const array = ['codicon', `codicon-${name}`];
|
|
37
|
+
if (actionItem) {
|
|
38
|
+
array.push(ACTION_ITEM);
|
|
39
|
+
}
|
|
40
|
+
return array;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
export function codicon(name: string, actionItem = false): string {
|
|
44
|
+
return `codicon codicon-${name}${actionItem ? ` ${ACTION_ITEM}` : ''}`;
|
|
45
|
+
}
|
|
46
|
+
|
|
33
47
|
export const DISABLED_CLASS = 'theia-mod-disabled';
|
|
34
48
|
export const EXPANSION_TOGGLE_CLASS = 'theia-ExpansionToggle';
|
|
35
|
-
export const CODICON_TREE_ITEM_CLASSES =
|
|
49
|
+
export const CODICON_TREE_ITEM_CLASSES = codiconArray('chevron-down');
|
|
36
50
|
export const COLLAPSED_CLASS = 'theia-mod-collapsed';
|
|
37
51
|
export const BUSY_CLASS = 'theia-mod-busy';
|
|
52
|
+
export const CODICON_LOADING_CLASSES = codiconArray('loading');
|
|
38
53
|
export const SELECTED_CLASS = 'theia-mod-selected';
|
|
39
54
|
export const FOCUS_CLASS = 'theia-mod-focus';
|
|
40
55
|
export const DEFAULT_SCROLL_OPTIONS: PerfectScrollbar.Options = {
|
|
@@ -18,7 +18,7 @@
|
|
|
18
18
|
|
|
19
19
|
import * as electron from '../../../shared/electron';
|
|
20
20
|
import { inject, injectable } from 'inversify';
|
|
21
|
-
import { ContextMenuRenderer, RenderContextMenuOptions, ContextMenuAccess, FrontendApplicationContribution, CommonCommands } from '../../browser';
|
|
21
|
+
import { ContextMenuRenderer, RenderContextMenuOptions, ContextMenuAccess, FrontendApplicationContribution, CommonCommands, coordinateFromAnchor } from '../../browser';
|
|
22
22
|
import { ElectronMainMenuFactory } from './electron-main-menu-factory';
|
|
23
23
|
import { ContextMenuContext } from '../../browser/menu/context-menu-context';
|
|
24
24
|
import { MenuPath, MenuContribution, MenuModelRegistry } from '../../common';
|
|
@@ -84,7 +84,7 @@ export class ElectronContextMenuRenderer extends ContextMenuRenderer {
|
|
|
84
84
|
|
|
85
85
|
protected doRender({ menuPath, anchor, args, onHide }: RenderContextMenuOptions): ElectronContextMenuAccess {
|
|
86
86
|
const menu = this.menuFactory.createContextMenu(menuPath, args);
|
|
87
|
-
const { x, y } = anchor
|
|
87
|
+
const { x, y } = coordinateFromAnchor(anchor);
|
|
88
88
|
const zoom = electron.webFrame.getZoomFactor();
|
|
89
89
|
// x and y values must be Ints or else there is a conversion error
|
|
90
90
|
menu.popup({ x: Math.round(x * zoom), y: Math.round(y * zoom) });
|