@theia/toolbar 1.23.0-next.59

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 (89) hide show
  1. package/LICENSE +642 -0
  2. package/README.md +32 -0
  3. package/lib/browser/abstract-toolbar-contribution.d.ts +32 -0
  4. package/lib/browser/abstract-toolbar-contribution.d.ts.map +1 -0
  5. package/lib/browser/abstract-toolbar-contribution.js +69 -0
  6. package/lib/browser/abstract-toolbar-contribution.js.map +1 -0
  7. package/lib/browser/application-shell-with-toolbar-override.d.ts +30 -0
  8. package/lib/browser/application-shell-with-toolbar-override.d.ts.map +1 -0
  9. package/lib/browser/application-shell-with-toolbar-override.js +99 -0
  10. package/lib/browser/application-shell-with-toolbar-override.js.map +1 -0
  11. package/lib/browser/codicons.d.ts +17 -0
  12. package/lib/browser/codicons.d.ts.map +1 -0
  13. package/lib/browser/codicons.js +21 -0
  14. package/lib/browser/codicons.js.map +1 -0
  15. package/lib/browser/font-awesome-icons.d.ts +17 -0
  16. package/lib/browser/font-awesome-icons.d.ts.map +1 -0
  17. package/lib/browser/font-awesome-icons.js +21 -0
  18. package/lib/browser/font-awesome-icons.js.map +1 -0
  19. package/lib/browser/package.spec.d.ts +16 -0
  20. package/lib/browser/package.spec.d.ts.map +1 -0
  21. package/lib/browser/package.spec.js +19 -0
  22. package/lib/browser/package.spec.js.map +1 -0
  23. package/lib/browser/toolbar-command-contribution.d.ts +41 -0
  24. package/lib/browser/toolbar-command-contribution.d.ts.map +1 -0
  25. package/lib/browser/toolbar-command-contribution.js +212 -0
  26. package/lib/browser/toolbar-command-contribution.js.map +1 -0
  27. package/lib/browser/toolbar-command-quick-input-service.d.ts +35 -0
  28. package/lib/browser/toolbar-command-quick-input-service.d.ts.map +1 -0
  29. package/lib/browser/toolbar-command-quick-input-service.js +108 -0
  30. package/lib/browser/toolbar-command-quick-input-service.js.map +1 -0
  31. package/lib/browser/toolbar-constants.d.ts +39 -0
  32. package/lib/browser/toolbar-constants.d.ts.map +1 -0
  33. package/lib/browser/toolbar-constants.js +76 -0
  34. package/lib/browser/toolbar-constants.js.map +1 -0
  35. package/lib/browser/toolbar-controller.d.ts +49 -0
  36. package/lib/browser/toolbar-controller.d.ts.map +1 -0
  37. package/lib/browser/toolbar-controller.js +185 -0
  38. package/lib/browser/toolbar-controller.js.map +1 -0
  39. package/lib/browser/toolbar-defaults.d.ts +19 -0
  40. package/lib/browser/toolbar-defaults.d.ts.map +1 -0
  41. package/lib/browser/toolbar-defaults.js +61 -0
  42. package/lib/browser/toolbar-defaults.js.map +1 -0
  43. package/lib/browser/toolbar-frontend-module.d.ts +20 -0
  44. package/lib/browser/toolbar-frontend-module.d.ts.map +1 -0
  45. package/lib/browser/toolbar-frontend-module.js +26 -0
  46. package/lib/browser/toolbar-frontend-module.js.map +1 -0
  47. package/lib/browser/toolbar-icon-selector-dialog.d.ts +79 -0
  48. package/lib/browser/toolbar-icon-selector-dialog.d.ts.map +1 -0
  49. package/lib/browser/toolbar-icon-selector-dialog.js +237 -0
  50. package/lib/browser/toolbar-icon-selector-dialog.js.map +1 -0
  51. package/lib/browser/toolbar-interfaces.d.ts +61 -0
  52. package/lib/browser/toolbar-interfaces.d.ts.map +1 -0
  53. package/lib/browser/toolbar-interfaces.js +43 -0
  54. package/lib/browser/toolbar-interfaces.js.map +1 -0
  55. package/lib/browser/toolbar-preference-contribution.d.ts +25 -0
  56. package/lib/browser/toolbar-preference-contribution.d.ts.map +1 -0
  57. package/lib/browser/toolbar-preference-contribution.js +35 -0
  58. package/lib/browser/toolbar-preference-contribution.js.map +1 -0
  59. package/lib/browser/toolbar-preference-schema.d.ts +21 -0
  60. package/lib/browser/toolbar-preference-schema.d.ts.map +1 -0
  61. package/lib/browser/toolbar-preference-schema.js +73 -0
  62. package/lib/browser/toolbar-preference-schema.js.map +1 -0
  63. package/lib/browser/toolbar-storage-provider.d.ts +62 -0
  64. package/lib/browser/toolbar-storage-provider.d.ts.map +1 -0
  65. package/lib/browser/toolbar-storage-provider.js +354 -0
  66. package/lib/browser/toolbar-storage-provider.js.map +1 -0
  67. package/lib/browser/toolbar.d.ts +72 -0
  68. package/lib/browser/toolbar.d.ts.map +1 -0
  69. package/lib/browser/toolbar.js +381 -0
  70. package/lib/browser/toolbar.js.map +1 -0
  71. package/package.json +51 -0
  72. package/src/browser/abstract-toolbar-contribution.tsx +53 -0
  73. package/src/browser/application-shell-with-toolbar-override.ts +94 -0
  74. package/src/browser/codicons.ts +18 -0
  75. package/src/browser/font-awesome-icons.ts +18 -0
  76. package/src/browser/package.spec.ts +19 -0
  77. package/src/browser/style/toolbar.css +253 -0
  78. package/src/browser/toolbar-command-contribution.ts +211 -0
  79. package/src/browser/toolbar-command-quick-input-service.ts +86 -0
  80. package/src/browser/toolbar-constants.ts +79 -0
  81. package/src/browser/toolbar-controller.ts +182 -0
  82. package/src/browser/toolbar-defaults.ts +58 -0
  83. package/src/browser/toolbar-frontend-module.ts +30 -0
  84. package/src/browser/toolbar-icon-selector-dialog.tsx +296 -0
  85. package/src/browser/toolbar-interfaces.ts +76 -0
  86. package/src/browser/toolbar-preference-contribution.ts +38 -0
  87. package/src/browser/toolbar-preference-schema.ts +74 -0
  88. package/src/browser/toolbar-storage-provider.ts +347 -0
  89. package/src/browser/toolbar.tsx +420 -0
@@ -0,0 +1,381 @@
1
+ "use strict";
2
+ /********************************************************************************
3
+ * Copyright (C) 2022 Ericsson 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 WITH Classpath-exception-2.0
16
+ ********************************************************************************/
17
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
18
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
19
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
20
+ 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;
21
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
22
+ };
23
+ var __metadata = (this && this.__metadata) || function (k, v) {
24
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ exports.ToolbarImpl = exports.TOOLBAR_PROGRESSBAR_ID = void 0;
28
+ const React = require("@theia/core/shared/react");
29
+ const browser_1 = require("@theia/core/lib/browser");
30
+ const label_parser_1 = require("@theia/core/lib/browser/label-parser");
31
+ const tab_bar_toolbar_1 = require("@theia/core/lib/browser/shell/tab-bar-toolbar");
32
+ const inversify_1 = require("@theia/core/shared/inversify");
33
+ const core_1 = require("@theia/core");
34
+ const frontend_application_state_1 = require("@theia/core/lib/browser/frontend-application-state");
35
+ const progress_bar_factory_1 = require("@theia/core/lib/browser/progress-bar-factory");
36
+ const promise_util_1 = require("@theia/core/lib/common/promise-util");
37
+ const toolbar_interfaces_1 = require("./toolbar-interfaces");
38
+ const toolbar_controller_1 = require("./toolbar-controller");
39
+ const toolbar_constants_1 = require("./toolbar-constants");
40
+ const TOOLBAR_BACKGROUND_DATA_ID = 'toolbar-wrapper';
41
+ exports.TOOLBAR_PROGRESSBAR_ID = 'main-toolbar-progress';
42
+ let ToolbarImpl = class ToolbarImpl extends tab_bar_toolbar_1.TabBarToolbar {
43
+ constructor() {
44
+ super(...arguments);
45
+ this.deferredRef = new promise_util_1.Deferred();
46
+ this.isBusyDeferred = new promise_util_1.Deferred();
47
+ this.handleContextMenu = (e) => this.doHandleContextMenu(e);
48
+ this.assignRef = (element) => this.doAssignRef(element);
49
+ this.handleOnDragStart = (e) => this.doHandleOnDragStart(e);
50
+ this.handleOnDragEnter = (e) => this.doHandleItemOnDragEnter(e);
51
+ this.handleOnDragLeave = (e) => this.doHandleOnDragLeave(e);
52
+ this.handleOnDrop = (e) => this.doHandleOnDrop(e);
53
+ this.handleOnDragEnd = (e) => this.doHandleOnDragEnd(e);
54
+ }
55
+ async init() {
56
+ this.hide();
57
+ await this.model.ready.promise;
58
+ this.updateInlineItems();
59
+ this.update();
60
+ this.model.onToolbarModelDidUpdate(() => {
61
+ this.updateInlineItems();
62
+ this.update();
63
+ });
64
+ this.model.onToolbarDidChangeBusyState(isBusy => {
65
+ if (isBusy) {
66
+ this.isBusyDeferred = new promise_util_1.Deferred();
67
+ this.progressService.withProgress('', exports.TOOLBAR_PROGRESSBAR_ID, async () => this.isBusyDeferred.promise);
68
+ }
69
+ else {
70
+ this.isBusyDeferred.resolve();
71
+ }
72
+ });
73
+ await this.deferredRef.promise;
74
+ this.progressFactory({ container: this.node, insertMode: 'append', locationId: exports.TOOLBAR_PROGRESSBAR_ID });
75
+ }
76
+ updateInlineItems() {
77
+ this.inline.clear();
78
+ const { items } = this.model.toolbarItems;
79
+ for (const column of Object.keys(items)) {
80
+ for (const group of items[column]) {
81
+ for (const item of group) {
82
+ this.inline.set(item.id, item);
83
+ }
84
+ }
85
+ }
86
+ }
87
+ doHandleContextMenu(event) {
88
+ event.preventDefault();
89
+ event.stopPropagation();
90
+ const contextMenuArgs = this.getContextMenuArgs(event);
91
+ const { menuPath, anchor } = this.getMenuDetailsForClick(event);
92
+ return this.contextMenuRenderer.render({
93
+ args: contextMenuArgs,
94
+ menuPath,
95
+ anchor,
96
+ });
97
+ }
98
+ getMenuDetailsForClick(event) {
99
+ const clickId = event.currentTarget.getAttribute('data-id');
100
+ let menuPath;
101
+ let anchor;
102
+ if (clickId === TOOLBAR_BACKGROUND_DATA_ID) {
103
+ menuPath = toolbar_constants_1.ToolbarMenus.TOOLBAR_BACKGROUND_CONTEXT_MENU;
104
+ const { clientX, clientY } = event;
105
+ anchor = { x: clientX, y: clientY };
106
+ }
107
+ else {
108
+ menuPath = toolbar_constants_1.ToolbarMenus.TOOLBAR_ITEM_CONTEXT_MENU;
109
+ const { left, bottom } = event.currentTarget.getBoundingClientRect();
110
+ anchor = { x: left, y: bottom };
111
+ }
112
+ return { menuPath, anchor };
113
+ }
114
+ getContextMenuArgs(event) {
115
+ const args = [this];
116
+ // data-position is the stringified position of a given toolbar item, this allows
117
+ // the model to be aware of start/stop positions during drag & drop and CRUD operations
118
+ const position = event.currentTarget.getAttribute('data-position');
119
+ const id = event.currentTarget.getAttribute('data-id');
120
+ if (position) {
121
+ args.push(JSON.parse(position));
122
+ }
123
+ else if (id) {
124
+ args.push(id);
125
+ }
126
+ return args;
127
+ }
128
+ renderGroupsInColumn(groups, alignment) {
129
+ const nodes = [];
130
+ groups.forEach((group, groupIndex) => {
131
+ if (nodes.length && group.length) {
132
+ nodes.push(React.createElement("div", { className: 'separator' }));
133
+ }
134
+ group.forEach((item, itemIndex) => {
135
+ const position = { alignment, groupIndex, itemIndex };
136
+ nodes.push(this.renderItemWithDraggableWrapper(item, position));
137
+ });
138
+ });
139
+ return nodes;
140
+ }
141
+ doAssignRef(element) {
142
+ this.deferredRef.resolve(element);
143
+ }
144
+ render() {
145
+ var _a, _b, _c;
146
+ const leftGroups = (_a = this.model.toolbarItems) === null || _a === void 0 ? void 0 : _a.items[toolbar_interfaces_1.ToolbarAlignment.LEFT];
147
+ const centerGroups = (_b = this.model.toolbarItems) === null || _b === void 0 ? void 0 : _b.items[toolbar_interfaces_1.ToolbarAlignment.CENTER];
148
+ const rightGroups = (_c = this.model.toolbarItems) === null || _c === void 0 ? void 0 : _c.items[toolbar_interfaces_1.ToolbarAlignment.RIGHT];
149
+ return (React.createElement("div", { className: 'toolbar-wrapper', onContextMenu: this.handleContextMenu, "data-id": TOOLBAR_BACKGROUND_DATA_ID, role: 'menu', tabIndex: 0, ref: this.assignRef },
150
+ this.renderColumnWrapper(toolbar_interfaces_1.ToolbarAlignment.LEFT, leftGroups),
151
+ this.renderColumnWrapper(toolbar_interfaces_1.ToolbarAlignment.CENTER, centerGroups),
152
+ this.renderColumnWrapper(toolbar_interfaces_1.ToolbarAlignment.RIGHT, rightGroups)));
153
+ }
154
+ renderColumnWrapper(alignment, columnGroup) {
155
+ let children;
156
+ if (alignment === toolbar_interfaces_1.ToolbarAlignment.LEFT) {
157
+ children = (React.createElement(React.Fragment, null,
158
+ this.renderGroupsInColumn(columnGroup, alignment),
159
+ this.renderColumnSpace(alignment)));
160
+ }
161
+ else if (alignment === toolbar_interfaces_1.ToolbarAlignment.CENTER) {
162
+ const isCenterColumnEmpty = !columnGroup.length;
163
+ if (isCenterColumnEmpty) {
164
+ children = this.renderColumnSpace(alignment, 'left');
165
+ }
166
+ else {
167
+ children = (React.createElement(React.Fragment, null,
168
+ this.renderColumnSpace(alignment, 'left'),
169
+ this.renderGroupsInColumn(columnGroup, alignment),
170
+ this.renderColumnSpace(alignment, 'right')));
171
+ }
172
+ }
173
+ else if (alignment === toolbar_interfaces_1.ToolbarAlignment.RIGHT) {
174
+ children = (React.createElement(React.Fragment, null,
175
+ this.renderColumnSpace(alignment),
176
+ this.renderGroupsInColumn(columnGroup, alignment)));
177
+ }
178
+ return (React.createElement("div", { role: 'group', className: `toolbar-column ${alignment}` }, children));
179
+ }
180
+ renderColumnSpace(alignment, position) {
181
+ return (React.createElement("div", { className: 'empty-column-space', "data-column": `${alignment}`, "data-center-position": position, onDrop: this.handleOnDrop, onDragEnter: this.handleOnDragEnter, onDragLeave: this.handleOnDragLeave }));
182
+ }
183
+ renderItemWithDraggableWrapper(item, position) {
184
+ const stringifiedPosition = JSON.stringify(position);
185
+ let toolbarItemClassNames = '';
186
+ let renderBody;
187
+ if (tab_bar_toolbar_1.TabBarToolbarItem.is(item)) {
188
+ toolbarItemClassNames = [tab_bar_toolbar_1.TabBarToolbar.Styles.TAB_BAR_TOOLBAR_ITEM, 'enabled'].join(' ');
189
+ renderBody = this.renderItem(item);
190
+ }
191
+ else {
192
+ const contribution = this.model.getContributionByID(item.id);
193
+ if (contribution) {
194
+ renderBody = contribution.render();
195
+ }
196
+ }
197
+ return (React.createElement("div", { role: 'button', tabIndex: 0, "data-id": item.id, id: item.id, "data-position": stringifiedPosition, key: `${item.id}-${stringifiedPosition}`, className: `${toolbarItemClassNames} toolbar-item action-item`, onMouseDown: this.onMouseDownEvent, onMouseUp: this.onMouseUpEvent, onMouseOut: this.onMouseUpEvent, draggable: true, onDragStart: this.handleOnDragStart, onClick: this.executeCommand, onDragOver: this.handleOnDragEnter, onDragLeave: this.handleOnDragLeave, onContextMenu: this.handleContextMenu, onDragEnd: this.handleOnDragEnd, onDrop: this.handleOnDrop },
198
+ renderBody,
199
+ React.createElement("div", { className: 'hover-overlay' })));
200
+ }
201
+ renderItem(item) {
202
+ const classNames = [];
203
+ if (item.text) {
204
+ for (const labelPart of this.labelParser.parse(item.text)) {
205
+ if (typeof labelPart !== 'string' && label_parser_1.LabelIcon.is(labelPart)) {
206
+ const className = `fa fa-${labelPart.name}${labelPart.animation ? ' fa-' + labelPart.animation : ''}`;
207
+ classNames.push(...className.split(' '));
208
+ }
209
+ }
210
+ }
211
+ const command = this.commands.getCommand(item.command);
212
+ const iconClass = (typeof item.icon === 'function' && item.icon()) || item.icon || (command === null || command === void 0 ? void 0 : command.iconClass);
213
+ if (iconClass) {
214
+ classNames.push(iconClass);
215
+ }
216
+ let itemTooltip = '';
217
+ if (item.tooltip) {
218
+ itemTooltip = item.tooltip;
219
+ }
220
+ else if (command === null || command === void 0 ? void 0 : command.label) {
221
+ itemTooltip = command.label;
222
+ }
223
+ const keybindingString = this.resolveKeybindingForCommand(command === null || command === void 0 ? void 0 : command.id);
224
+ itemTooltip = `${itemTooltip}${keybindingString}`;
225
+ return (React.createElement("div", { id: item.id, className: classNames.join(' '), title: itemTooltip }));
226
+ }
227
+ resolveKeybindingForCommand(commandID) {
228
+ if (!commandID) {
229
+ return '';
230
+ }
231
+ const keybindings = this.keybindingRegistry.getKeybindingsForCommand(commandID);
232
+ if (keybindings.length > 0) {
233
+ const binding = keybindings[0];
234
+ const bindingKeySequence = this.keybindingRegistry.resolveKeybinding(binding);
235
+ const keyCode = bindingKeySequence[0];
236
+ return ` (${this.keybindingRegistry.acceleratorForKeyCode(keyCode, '+')})`;
237
+ }
238
+ return '';
239
+ }
240
+ doHandleOnDragStart(e) {
241
+ var _a;
242
+ const draggedElement = e.currentTarget;
243
+ draggedElement.classList.add('dragging');
244
+ e.dataTransfer.setDragImage(draggedElement, 0, 0);
245
+ const position = JSON.parse((_a = e.currentTarget.getAttribute('data-position')) !== null && _a !== void 0 ? _a : '');
246
+ this.currentlyDraggedItem = e.currentTarget;
247
+ this.draggedStartingPosition = position;
248
+ }
249
+ doHandleItemOnDragEnter(e) {
250
+ var _a;
251
+ e.preventDefault();
252
+ e.stopPropagation();
253
+ const targetItemDOMElement = e.currentTarget;
254
+ const targetItemHoverOverlay = targetItemDOMElement.querySelector('.hover-overlay');
255
+ const targetItemId = e.currentTarget.getAttribute('data-id');
256
+ if (targetItemDOMElement.classList.contains('empty-column-space')) {
257
+ targetItemDOMElement.classList.add('drag-over');
258
+ }
259
+ else if (targetItemDOMElement.classList.contains('toolbar-item') && targetItemHoverOverlay) {
260
+ const { clientX } = e;
261
+ const { left, right } = e.currentTarget.getBoundingClientRect();
262
+ const targetMiddleX = (left + right) / 2;
263
+ if (targetItemId !== ((_a = this.currentlyDraggedItem) === null || _a === void 0 ? void 0 : _a.getAttribute('data-id'))) {
264
+ targetItemHoverOverlay.classList.add('drag-over');
265
+ if (clientX <= targetMiddleX) {
266
+ targetItemHoverOverlay.classList.add('location-left');
267
+ targetItemHoverOverlay.classList.remove('location-right');
268
+ }
269
+ else {
270
+ targetItemHoverOverlay.classList.add('location-right');
271
+ targetItemHoverOverlay.classList.remove('location-left');
272
+ }
273
+ }
274
+ }
275
+ }
276
+ doHandleOnDragLeave(e) {
277
+ e.preventDefault();
278
+ e.stopPropagation();
279
+ const targetItemDOMElement = e.currentTarget;
280
+ const targetItemHoverOverlay = targetItemDOMElement.querySelector('.hover-overlay');
281
+ if (targetItemDOMElement.classList.contains('empty-column-space')) {
282
+ targetItemDOMElement.classList.remove('drag-over');
283
+ }
284
+ else if (targetItemHoverOverlay && targetItemDOMElement.classList.contains('toolbar-item')) {
285
+ targetItemHoverOverlay === null || targetItemHoverOverlay === void 0 ? void 0 : targetItemHoverOverlay.classList.remove('drag-over', 'location-left', 'location-right');
286
+ }
287
+ }
288
+ doHandleOnDrop(e) {
289
+ e.preventDefault();
290
+ e.stopPropagation();
291
+ const targetItemDOMElement = e.currentTarget;
292
+ const targetItemHoverOverlay = targetItemDOMElement.querySelector('.hover-overlay');
293
+ if (targetItemDOMElement.classList.contains('empty-column-space')) {
294
+ this.handleDropInEmptySpace(targetItemDOMElement);
295
+ targetItemDOMElement.classList.remove('drag-over');
296
+ }
297
+ else if (targetItemHoverOverlay && targetItemDOMElement.classList.contains('toolbar-item')) {
298
+ this.handleDropInExistingGroup(targetItemDOMElement);
299
+ targetItemHoverOverlay.classList.remove('drag-over', 'location-left', 'location-right');
300
+ }
301
+ this.currentlyDraggedItem = undefined;
302
+ this.draggedStartingPosition = undefined;
303
+ }
304
+ handleDropInExistingGroup(element) {
305
+ var _a;
306
+ const position = element.getAttribute('data-position');
307
+ const targetDirection = (_a = element.querySelector('.hover-overlay')) === null || _a === void 0 ? void 0 : _a.classList.toString().split(' ').find(className => className.includes('location'));
308
+ const dropPosition = JSON.parse(position !== null && position !== void 0 ? position : '');
309
+ if (this.currentlyDraggedItem && targetDirection
310
+ && this.draggedStartingPosition && !this.arePositionsEquivalent(this.draggedStartingPosition, dropPosition)) {
311
+ this.model.swapValues(this.draggedStartingPosition, dropPosition, targetDirection);
312
+ }
313
+ }
314
+ handleDropInEmptySpace(element) {
315
+ const column = element.getAttribute('data-column');
316
+ if (toolbar_interfaces_1.ToolbarAlignmentString.is(column) && this.draggedStartingPosition) {
317
+ if (column === toolbar_interfaces_1.ToolbarAlignment.CENTER) {
318
+ const centerPosition = element.getAttribute('data-center-position');
319
+ this.model.moveItemToEmptySpace(this.draggedStartingPosition, column, centerPosition);
320
+ }
321
+ else {
322
+ this.model.moveItemToEmptySpace(this.draggedStartingPosition, column);
323
+ }
324
+ }
325
+ }
326
+ arePositionsEquivalent(start, end) {
327
+ return start.alignment === end.alignment
328
+ && start.groupIndex === end.groupIndex
329
+ && start.itemIndex === end.itemIndex;
330
+ }
331
+ doHandleOnDragEnd(e) {
332
+ e.preventDefault();
333
+ e.stopPropagation();
334
+ this.currentlyDraggedItem = undefined;
335
+ this.draggedStartingPosition = undefined;
336
+ e.currentTarget.classList.remove('dragging');
337
+ }
338
+ };
339
+ __decorate([
340
+ (0, inversify_1.inject)(tab_bar_toolbar_1.TabBarToolbarFactory),
341
+ __metadata("design:type", Function)
342
+ ], ToolbarImpl.prototype, "tabbarToolbarFactory", void 0);
343
+ __decorate([
344
+ (0, inversify_1.inject)(browser_1.WidgetManager),
345
+ __metadata("design:type", browser_1.WidgetManager)
346
+ ], ToolbarImpl.prototype, "widgetManager", void 0);
347
+ __decorate([
348
+ (0, inversify_1.inject)(frontend_application_state_1.FrontendApplicationStateService),
349
+ __metadata("design:type", frontend_application_state_1.FrontendApplicationStateService)
350
+ ], ToolbarImpl.prototype, "appState", void 0);
351
+ __decorate([
352
+ (0, inversify_1.inject)(toolbar_controller_1.ToolbarController),
353
+ __metadata("design:type", toolbar_controller_1.ToolbarController)
354
+ ], ToolbarImpl.prototype, "model", void 0);
355
+ __decorate([
356
+ (0, inversify_1.inject)(browser_1.PreferenceService),
357
+ __metadata("design:type", Object)
358
+ ], ToolbarImpl.prototype, "preferenceService", void 0);
359
+ __decorate([
360
+ (0, inversify_1.inject)(browser_1.KeybindingRegistry),
361
+ __metadata("design:type", browser_1.KeybindingRegistry)
362
+ ], ToolbarImpl.prototype, "keybindingRegistry", void 0);
363
+ __decorate([
364
+ (0, inversify_1.inject)(progress_bar_factory_1.ProgressBarFactory),
365
+ __metadata("design:type", Function)
366
+ ], ToolbarImpl.prototype, "progressFactory", void 0);
367
+ __decorate([
368
+ (0, inversify_1.inject)(core_1.ProgressService),
369
+ __metadata("design:type", core_1.ProgressService)
370
+ ], ToolbarImpl.prototype, "progressService", void 0);
371
+ __decorate([
372
+ (0, inversify_1.postConstruct)(),
373
+ __metadata("design:type", Function),
374
+ __metadata("design:paramtypes", []),
375
+ __metadata("design:returntype", Promise)
376
+ ], ToolbarImpl.prototype, "init", null);
377
+ ToolbarImpl = __decorate([
378
+ (0, inversify_1.injectable)()
379
+ ], ToolbarImpl);
380
+ exports.ToolbarImpl = ToolbarImpl;
381
+ //# sourceMappingURL=toolbar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolbar.js","sourceRoot":"","sources":["../../src/browser/toolbar.tsx"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,51 @@
1
+ {
2
+ "name": "@theia/toolbar",
3
+ "version": "1.23.0-next.59+307b279a097",
4
+ "description": "Theia - Toolbar",
5
+ "keywords": [
6
+ "theia-extension"
7
+ ],
8
+ "homepage": "https://github.com/eclipse-theia/theia",
9
+ "license": "EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0",
10
+ "repository": {
11
+ "type": "git",
12
+ "url": "https://github.com/eclipse-theia/theia.git"
13
+ },
14
+ "bugs": {
15
+ "url": "https://github.com/eclipse-theia/theia/issues"
16
+ },
17
+ "files": [
18
+ "lib",
19
+ "src"
20
+ ],
21
+ "scripts": {
22
+ "build": "theiaext build",
23
+ "clean": "theiaext clean",
24
+ "compile": "theiaext compile",
25
+ "lint": "theiaext lint",
26
+ "test": "theiaext test",
27
+ "watch": "theiaext watch"
28
+ },
29
+ "dependencies": {
30
+ "@theia/core": "1.23.0-next.59+307b279a097",
31
+ "@theia/editor": "1.23.0-next.59+307b279a097",
32
+ "@theia/file-search": "1.23.0-next.59+307b279a097",
33
+ "@theia/filesystem": "1.23.0-next.59+307b279a097",
34
+ "@theia/monaco": "1.23.0-next.59+307b279a097",
35
+ "@theia/search-in-workspace": "1.23.0-next.59+307b279a097",
36
+ "@theia/userstorage": "1.23.0-next.59+307b279a097",
37
+ "@theia/workspace": "1.23.0-next.59+307b279a097",
38
+ "ajv": "^6.5.3",
39
+ "jsonc-parser": "^2.2.0",
40
+ "perfect-scrollbar": "^1.3.0"
41
+ },
42
+ "theiaExtensions": [
43
+ {
44
+ "frontend": "lib/browser/toolbar-frontend-module"
45
+ }
46
+ ],
47
+ "publishConfig": {
48
+ "access": "public"
49
+ },
50
+ "gitHead": "307b279a097a7a8fad92bb90a7470d6d5670aa3b"
51
+ }
@@ -0,0 +1,53 @@
1
+ /********************************************************************************
2
+ * Copyright (C) 2022 Ericsson and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+
17
+ import * as React from '@theia/core/shared/react';
18
+ import { CommandService, Emitter } from '@theia/core';
19
+ import { injectable, inject } from '@theia/core/shared/inversify';
20
+ import { ContextMenuRenderer, KeybindingRegistry } from '@theia/core/lib/browser';
21
+ import { DeflatedContributedToolbarItem, ToolbarContribution } from './toolbar-interfaces';
22
+
23
+ @injectable()
24
+ export abstract class AbstractToolbarContribution implements ToolbarContribution {
25
+ @inject(KeybindingRegistry) protected readonly keybindingRegistry: KeybindingRegistry;
26
+ @inject(ContextMenuRenderer) protected readonly contextMenuRenderer: ContextMenuRenderer;
27
+ @inject(CommandService) protected readonly commandService: CommandService;
28
+
29
+ abstract id: string;
30
+
31
+ protected didChangeEmitter = new Emitter<void>();
32
+ readonly onDidChange = this.didChangeEmitter.event;
33
+
34
+ abstract render(): React.ReactNode;
35
+
36
+ toJSON(): DeflatedContributedToolbarItem {
37
+ return { id: this.id, group: 'contributed' };
38
+ }
39
+
40
+ protected resolveKeybindingForCommand(commandID: string | undefined): string {
41
+ if (!commandID) {
42
+ return '';
43
+ }
44
+ const keybindings = this.keybindingRegistry.getKeybindingsForCommand(commandID);
45
+ if (keybindings.length > 0) {
46
+ const binding = keybindings[0];
47
+ const bindingKeySequence = this.keybindingRegistry.resolveKeybinding(binding);
48
+ const keyCode = bindingKeySequence[0];
49
+ return ` (${this.keybindingRegistry.acceleratorForKeyCode(keyCode, '+')})`;
50
+ }
51
+ return '';
52
+ }
53
+ }
@@ -0,0 +1,94 @@
1
+ /********************************************************************************
2
+ * Copyright (C) 2022 Ericsson and others.
3
+ *
4
+ * This program and the accompanying materials are made available under the
5
+ * terms of the Eclipse Public License v. 2.0 which is available at
6
+ * http://www.eclipse.org/legal/epl-2.0.
7
+ *
8
+ * This Source Code may also be made available under the following Secondary
9
+ * Licenses when the conditions for such availability set forth in the Eclipse
10
+ * Public License v. 2.0 are satisfied: GNU General Public License, version 2
11
+ * with the GNU Classpath Exception which is available at
12
+ * https://www.gnu.org/software/classpath/license.html.
13
+ *
14
+ * SPDX-License-Identifier: EPL-2.0 OR GPL-2.0 WITH Classpath-exception-2.0
15
+ ********************************************************************************/
16
+
17
+ import {
18
+ ApplicationShell,
19
+ Layout,
20
+ PreferenceService,
21
+ SplitPanel,
22
+ } from '@theia/core/lib/browser';
23
+ import { inject, injectable, interfaces, postConstruct } from '@theia/core/shared/inversify';
24
+ import { MAXIMIZED_CLASS } from '@theia/core/lib/browser/shell/theia-dock-panel';
25
+ import { Toolbar, ToolbarFactory } from './toolbar-interfaces';
26
+ import { ToolbarPreferences, TOOLBAR_ENABLE_PREFERENCE_ID } from './toolbar-preference-contribution';
27
+
28
+ @injectable()
29
+ export class ApplicationShellWithToolbarOverride extends ApplicationShell {
30
+ @inject(ToolbarPreferences) protected toolbarPreferences: ToolbarPreferences;
31
+ @inject(PreferenceService) protected readonly preferenceService: PreferenceService;
32
+ @inject(ToolbarFactory) protected readonly toolbarFactory: () => Toolbar;
33
+
34
+ protected toolbar: Toolbar;
35
+
36
+ @postConstruct()
37
+ protected override async init(): Promise<void> {
38
+ this.toolbar = this.toolbarFactory();
39
+ this.toolbar.id = 'main-toolbar';
40
+ super.init();
41
+ await this.toolbarPreferences.ready;
42
+ this.tryShowToolbar();
43
+ this.mainPanel.onDidToggleMaximized(() => {
44
+ this.tryShowToolbar();
45
+ });
46
+ this.bottomPanel.onDidToggleMaximized(() => {
47
+ this.tryShowToolbar();
48
+ });
49
+ this.preferenceService.onPreferenceChanged(event => {
50
+ if (event.preferenceName === TOOLBAR_ENABLE_PREFERENCE_ID) {
51
+ this.tryShowToolbar();
52
+ }
53
+ });
54
+ }
55
+
56
+ protected tryShowToolbar(): boolean {
57
+ const doShowToolbarFromPreference = this.toolbarPreferences[TOOLBAR_ENABLE_PREFERENCE_ID];
58
+ const isShellMaximized = this.mainPanel.hasClass(MAXIMIZED_CLASS) || this.bottomPanel.hasClass(MAXIMIZED_CLASS);
59
+ if (doShowToolbarFromPreference && !isShellMaximized) {
60
+ this.toolbar.show();
61
+ return true;
62
+ }
63
+ this.toolbar.hide();
64
+ return false;
65
+ }
66
+
67
+ protected override createLayout(): Layout {
68
+ const bottomSplitLayout = this.createSplitLayout(
69
+ [this.mainPanel, this.bottomPanel],
70
+ [1, 0],
71
+ { orientation: 'vertical', spacing: 0 },
72
+ );
73
+ const panelForBottomArea = new SplitPanel({ layout: bottomSplitLayout });
74
+ panelForBottomArea.id = 'theia-bottom-split-panel';
75
+
76
+ const leftRightSplitLayout = this.createSplitLayout(
77
+ [this.leftPanelHandler.container, panelForBottomArea, this.rightPanelHandler.container],
78
+ [0, 1, 0],
79
+ { orientation: 'horizontal', spacing: 0 },
80
+ );
81
+ const panelForSideAreas = new SplitPanel({ layout: leftRightSplitLayout });
82
+ panelForSideAreas.id = 'theia-left-right-split-panel';
83
+ return this.createBoxLayout(
84
+ [this.topPanel, this.toolbar, panelForSideAreas, this.statusBar],
85
+ [0, 0, 1, 0],
86
+ { direction: 'top-to-bottom', spacing: 0 },
87
+ );
88
+ }
89
+ }
90
+
91
+ export const bindToolbarApplicationShell = (bind: interfaces.Bind, rebind: interfaces.Rebind, unbind: interfaces.Unbind): void => {
92
+ bind(ApplicationShellWithToolbarOverride).toSelf().inSingletonScope();
93
+ rebind(ApplicationShell).toService(ApplicationShellWithToolbarOverride);
94
+ };