UNPKG

129 kBJavaScriptView Raw
1"use strict";
2// *****************************************************************************
3// Copyright (C) 2017 TypeFox 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// *****************************************************************************
17Object.defineProperty(exports, "__esModule", { value: true });
18exports.CommonFrontendContribution = exports.CLASSNAME_OS_LINUX = exports.CLASSNAME_OS_WINDOWS = exports.CLASSNAME_OS_MAC = exports.RECENT_COMMANDS_STORAGE_KEY = exports.supportPaste = exports.supportCopy = exports.supportCut = exports.CommonCommands = exports.CommonMenus = void 0;
19const tslib_1 = require("tslib");
20/* eslint-disable max-len, @typescript-eslint/indent */
21const debounce = require("lodash.debounce");
22const inversify_1 = require("inversify");
23const menu_1 = require("../common/menu");
24const command_1 = require("../common/command");
25const uri_command_handler_1 = require("../common/uri-command-handler");
26const selection_service_1 = require("../common/selection-service");
27const message_service_1 = require("../common/message-service");
28const opener_service_1 = require("../browser/opener-service");
29const application_shell_1 = require("./shell/application-shell");
30const tab_bars_1 = require("./shell/tab-bars");
31const about_dialog_1 = require("./about-dialog");
32const browser = require("./browser");
33const uri_1 = require("../common/uri");
34const context_key_service_1 = require("./context-key-service");
35const os_1 = require("../common/os");
36const resource_context_key_1 = require("./resource-context-key");
37const selection_1 = require("../common/selection");
38const storage_service_1 = require("./storage-service");
39const navigatable_1 = require("./navigatable");
40const quick_view_service_1 = require("./quick-input/quick-view-service");
41const environment_1 = require("@theia/application-package/lib/environment");
42const icon_theme_service_1 = require("./icon-theme-service");
43const color_1 = require("../common/color");
44const core_preferences_1 = require("./core-preferences");
45const theming_1 = require("./theming");
46const preferences_1 = require("./preferences");
47const clipboard_service_1 = require("./clipboard-service");
48const encoding_registry_1 = require("./encoding-registry");
49const encodings_1 = require("../common/encodings");
50const env_variables_1 = require("../common/env-variables");
51const authentication_service_1 = require("./authentication-service");
52const saveable_1 = require("./saveable");
53const quick_input_1 = require("./quick-input");
54const localization_1 = require("../common/i18n/localization");
55const nls_1 = require("../common/nls");
56const current_widget_command_adapter_1 = require("./shell/current-widget-command-adapter");
57const dialogs_1 = require("./dialogs");
58const window_service_1 = require("./window/window-service");
59const frontend_application_config_provider_1 = require("./frontend-application-config-provider");
60const decoration_style_1 = require("./decoration-style");
61const widgets_1 = require("./widgets");
62const save_resource_service_1 = require("./save-resource-service");
63const user_working_directory_provider_1 = require("./user-working-directory-provider");
64const common_1 = require("../common");
65const language_quick_pick_service_1 = require("./i18n/language-quick-pick-service");
66var CommonMenus;
67(function (CommonMenus) {
68 CommonMenus.FILE = [...menu_1.MAIN_MENU_BAR, '1_file'];
69 CommonMenus.FILE_NEW_TEXT = [...CommonMenus.FILE, '1_new_text'];
70 CommonMenus.FILE_NEW = [...CommonMenus.FILE, '1_new'];
71 CommonMenus.FILE_OPEN = [...CommonMenus.FILE, '2_open'];
72 CommonMenus.FILE_SAVE = [...CommonMenus.FILE, '3_save'];
73 CommonMenus.FILE_AUTOSAVE = [...CommonMenus.FILE, '4_autosave'];
74 CommonMenus.FILE_SETTINGS = [...CommonMenus.FILE, '5_settings'];
75 CommonMenus.FILE_SETTINGS_SUBMENU = [...CommonMenus.FILE_SETTINGS, '1_settings_submenu'];
76 CommonMenus.FILE_SETTINGS_SUBMENU_OPEN = [...CommonMenus.FILE_SETTINGS_SUBMENU, '1_settings_submenu_open'];
77 CommonMenus.FILE_SETTINGS_SUBMENU_THEME = [...CommonMenus.FILE_SETTINGS_SUBMENU, '2_settings_submenu_theme'];
78 CommonMenus.FILE_CLOSE = [...CommonMenus.FILE, '6_close'];
79 CommonMenus.FILE_NEW_CONTRIBUTIONS = 'file/newFile';
80 CommonMenus.EDIT = [...menu_1.MAIN_MENU_BAR, '2_edit'];
81 CommonMenus.EDIT_UNDO = [...CommonMenus.EDIT, '1_undo'];
82 CommonMenus.EDIT_CLIPBOARD = [...CommonMenus.EDIT, '2_clipboard'];
83 CommonMenus.EDIT_FIND = [...CommonMenus.EDIT, '3_find'];
84 CommonMenus.VIEW = [...menu_1.MAIN_MENU_BAR, '4_view'];
85 CommonMenus.VIEW_PRIMARY = [...CommonMenus.VIEW, '0_primary'];
86 CommonMenus.VIEW_APPEARANCE = [...CommonMenus.VIEW, '1_appearance'];
87 CommonMenus.VIEW_APPEARANCE_SUBMENU = [...CommonMenus.VIEW_APPEARANCE, '1_appearance_submenu'];
88 CommonMenus.VIEW_APPEARANCE_SUBMENU_SCREEN = [...CommonMenus.VIEW_APPEARANCE_SUBMENU, '2_appearance_submenu_screen'];
89 CommonMenus.VIEW_APPEARANCE_SUBMENU_BAR = [...CommonMenus.VIEW_APPEARANCE_SUBMENU, '3_appearance_submenu_bar'];
90 CommonMenus.VIEW_EDITOR_SUBMENU = [...CommonMenus.VIEW_APPEARANCE, '2_editor_submenu'];
91 CommonMenus.VIEW_EDITOR_SUBMENU_SPLIT = [...CommonMenus.VIEW_EDITOR_SUBMENU, '1_editor_submenu_split'];
92 CommonMenus.VIEW_EDITOR_SUBMENU_ORTHO = [...CommonMenus.VIEW_EDITOR_SUBMENU, '2_editor_submenu_ortho'];
93 CommonMenus.VIEW_VIEWS = [...CommonMenus.VIEW, '2_views'];
94 CommonMenus.VIEW_LAYOUT = [...CommonMenus.VIEW, '3_layout'];
95 CommonMenus.VIEW_TOGGLE = [...CommonMenus.VIEW, '4_toggle'];
96 CommonMenus.MANAGE_GENERAL = [...menu_1.MANAGE_MENU, '1_manage_general'];
97 CommonMenus.MANAGE_SETTINGS = [...menu_1.MANAGE_MENU, '2_manage_settings'];
98 CommonMenus.MANAGE_SETTINGS_THEMES = [...CommonMenus.MANAGE_SETTINGS, '1_manage_settings_themes'];
99 // last menu item
100 CommonMenus.HELP = [...menu_1.MAIN_MENU_BAR, '9_help'];
101})(CommonMenus = exports.CommonMenus || (exports.CommonMenus = {}));
102var CommonCommands;
103(function (CommonCommands) {
104 CommonCommands.FILE_CATEGORY = 'File';
105 CommonCommands.VIEW_CATEGORY = 'View';
106 CommonCommands.CREATE_CATEGORY = 'Create';
107 CommonCommands.PREFERENCES_CATEGORY = 'Preferences';
108 CommonCommands.MANAGE_CATEGORY = 'Manage';
109 CommonCommands.FILE_CATEGORY_KEY = nls_1.nls.getDefaultKey(CommonCommands.FILE_CATEGORY);
110 CommonCommands.VIEW_CATEGORY_KEY = nls_1.nls.getDefaultKey(CommonCommands.VIEW_CATEGORY);
111 CommonCommands.PREFERENCES_CATEGORY_KEY = nls_1.nls.getDefaultKey(CommonCommands.PREFERENCES_CATEGORY);
112 CommonCommands.OPEN = {
113 id: 'core.open',
114 };
115 CommonCommands.CUT = command_1.Command.toDefaultLocalizedCommand({
116 id: 'core.cut',
117 label: 'Cut'
118 });
119 CommonCommands.COPY = command_1.Command.toDefaultLocalizedCommand({
120 id: 'core.copy',
121 label: 'Copy'
122 });
123 CommonCommands.PASTE = command_1.Command.toDefaultLocalizedCommand({
124 id: 'core.paste',
125 label: 'Paste'
126 });
127 CommonCommands.COPY_PATH = command_1.Command.toDefaultLocalizedCommand({
128 id: 'core.copy.path',
129 label: 'Copy Path'
130 });
131 CommonCommands.UNDO = command_1.Command.toDefaultLocalizedCommand({
132 id: 'core.undo',
133 label: 'Undo'
134 });
135 CommonCommands.REDO = command_1.Command.toDefaultLocalizedCommand({
136 id: 'core.redo',
137 label: 'Redo'
138 });
139 CommonCommands.SELECT_ALL = command_1.Command.toDefaultLocalizedCommand({
140 id: 'core.selectAll',
141 label: 'Select All'
142 });
143 CommonCommands.FIND = command_1.Command.toDefaultLocalizedCommand({
144 id: 'core.find',
145 label: 'Find'
146 });
147 CommonCommands.REPLACE = command_1.Command.toDefaultLocalizedCommand({
148 id: 'core.replace',
149 label: 'Replace'
150 });
151 CommonCommands.NEXT_TAB = command_1.Command.toDefaultLocalizedCommand({
152 id: 'core.nextTab',
153 category: CommonCommands.VIEW_CATEGORY,
154 label: 'Show Next Tab'
155 });
156 CommonCommands.PREVIOUS_TAB = command_1.Command.toDefaultLocalizedCommand({
157 id: 'core.previousTab',
158 category: CommonCommands.VIEW_CATEGORY,
159 label: 'Show Previous Tab'
160 });
161 CommonCommands.NEXT_TAB_IN_GROUP = command_1.Command.toLocalizedCommand({
162 id: 'core.nextTabInGroup',
163 category: CommonCommands.VIEW_CATEGORY,
164 label: 'Switch to Next Tab in Group'
165 }, 'theia/core/common/showNextTabInGroup', CommonCommands.VIEW_CATEGORY_KEY);
166 CommonCommands.PREVIOUS_TAB_IN_GROUP = command_1.Command.toLocalizedCommand({
167 id: 'core.previousTabInGroup',
168 category: CommonCommands.VIEW_CATEGORY,
169 label: 'Switch to Previous Tab in Group'
170 }, 'theia/core/common/showPreviousTabInGroup', CommonCommands.VIEW_CATEGORY_KEY);
171 CommonCommands.NEXT_TAB_GROUP = command_1.Command.toLocalizedCommand({
172 id: 'core.nextTabGroup',
173 category: CommonCommands.VIEW_CATEGORY,
174 label: 'Switch to Next Tab Group'
175 }, 'theia/core/common/showNextTabGroup', CommonCommands.VIEW_CATEGORY_KEY);
176 CommonCommands.PREVIOUS_TAB_GROUP = command_1.Command.toLocalizedCommand({
177 id: 'core.previousTabBar',
178 category: CommonCommands.VIEW_CATEGORY,
179 label: 'Switch to Previous Tab Group'
180 }, 'theia/core/common/showPreviousTabGroup', CommonCommands.VIEW_CATEGORY_KEY);
181 CommonCommands.CLOSE_TAB = command_1.Command.toLocalizedCommand({
182 id: 'core.close.tab',
183 category: CommonCommands.VIEW_CATEGORY,
184 label: 'Close Tab'
185 }, 'theia/core/common/closeTab', CommonCommands.VIEW_CATEGORY_KEY);
186 CommonCommands.CLOSE_OTHER_TABS = command_1.Command.toLocalizedCommand({
187 id: 'core.close.other.tabs',
188 category: CommonCommands.VIEW_CATEGORY,
189 label: 'Close Other Tabs'
190 }, 'theia/core/common/closeOthers', CommonCommands.VIEW_CATEGORY_KEY);
191 CommonCommands.CLOSE_SAVED_TABS = command_1.Command.toDefaultLocalizedCommand({
192 id: 'workbench.action.closeUnmodifiedEditors',
193 category: CommonCommands.VIEW_CATEGORY,
194 label: 'Close Saved Editors in Group',
195 });
196 CommonCommands.CLOSE_RIGHT_TABS = command_1.Command.toLocalizedCommand({
197 id: 'core.close.right.tabs',
198 category: CommonCommands.VIEW_CATEGORY,
199 label: 'Close Tabs to the Right'
200 }, 'theia/core/common/closeRight', CommonCommands.VIEW_CATEGORY_KEY);
201 CommonCommands.CLOSE_ALL_TABS = command_1.Command.toLocalizedCommand({
202 id: 'core.close.all.tabs',
203 category: CommonCommands.VIEW_CATEGORY,
204 label: 'Close All Tabs'
205 }, 'theia/core/common/closeAll', CommonCommands.VIEW_CATEGORY_KEY);
206 CommonCommands.CLOSE_MAIN_TAB = command_1.Command.toLocalizedCommand({
207 id: 'core.close.main.tab',
208 category: CommonCommands.VIEW_CATEGORY,
209 label: 'Close Tab in Main Area'
210 }, 'theia/core/common/closeTabMain', CommonCommands.VIEW_CATEGORY_KEY);
211 CommonCommands.CLOSE_OTHER_MAIN_TABS = command_1.Command.toLocalizedCommand({
212 id: 'core.close.other.main.tabs',
213 category: CommonCommands.VIEW_CATEGORY,
214 label: 'Close Other Tabs in Main Area'
215 }, 'theia/core/common/closeOtherTabMain', CommonCommands.VIEW_CATEGORY_KEY);
216 CommonCommands.CLOSE_ALL_MAIN_TABS = command_1.Command.toLocalizedCommand({
217 id: 'core.close.all.main.tabs',
218 category: CommonCommands.VIEW_CATEGORY,
219 label: 'Close All Tabs in Main Area'
220 }, 'theia/core/common/closeAllTabMain', CommonCommands.VIEW_CATEGORY_KEY);
221 CommonCommands.COLLAPSE_PANEL = command_1.Command.toLocalizedCommand({
222 id: 'core.collapse.tab',
223 category: CommonCommands.VIEW_CATEGORY,
224 label: 'Collapse Side Panel'
225 }, 'theia/core/common/collapseTab', CommonCommands.VIEW_CATEGORY_KEY);
226 CommonCommands.COLLAPSE_ALL_PANELS = command_1.Command.toLocalizedCommand({
227 id: 'core.collapse.all.tabs',
228 category: CommonCommands.VIEW_CATEGORY,
229 label: 'Collapse All Side Panels'
230 }, 'theia/core/common/collapseAllTabs', CommonCommands.VIEW_CATEGORY_KEY);
231 CommonCommands.TOGGLE_BOTTOM_PANEL = command_1.Command.toLocalizedCommand({
232 id: 'core.toggle.bottom.panel',
233 category: CommonCommands.VIEW_CATEGORY,
234 label: 'Toggle Bottom Panel'
235 }, 'theia/core/common/collapseBottomPanel', CommonCommands.VIEW_CATEGORY_KEY);
236 CommonCommands.TOGGLE_STATUS_BAR = command_1.Command.toDefaultLocalizedCommand({
237 id: 'workbench.action.toggleStatusbarVisibility',
238 category: CommonCommands.VIEW_CATEGORY,
239 label: 'Toggle Status Bar Visibility'
240 });
241 CommonCommands.PIN_TAB = command_1.Command.toDefaultLocalizedCommand({
242 id: 'workbench.action.pinEditor',
243 category: CommonCommands.VIEW_CATEGORY,
244 label: 'Pin Editor'
245 });
246 CommonCommands.UNPIN_TAB = command_1.Command.toDefaultLocalizedCommand({
247 id: 'workbench.action.unpinEditor',
248 category: CommonCommands.VIEW_CATEGORY,
249 label: 'Unpin Editor'
250 });
251 CommonCommands.TOGGLE_MAXIMIZED = command_1.Command.toLocalizedCommand({
252 id: 'core.toggleMaximized',
253 category: CommonCommands.VIEW_CATEGORY,
254 label: 'Toggle Maximized'
255 }, 'theia/core/common/toggleMaximized', CommonCommands.VIEW_CATEGORY_KEY);
256 CommonCommands.OPEN_VIEW = command_1.Command.toDefaultLocalizedCommand({
257 id: 'core.openView',
258 category: CommonCommands.VIEW_CATEGORY,
259 label: 'Open View...'
260 });
261 CommonCommands.SHOW_MENU_BAR = command_1.Command.toDefaultLocalizedCommand({
262 id: 'window.menuBarVisibility',
263 category: CommonCommands.VIEW_CATEGORY,
264 label: 'Toggle Menu Bar'
265 });
266 /**
267 * Command Parameters:
268 * - `fileName`: string
269 * - `directory`: URI
270 */
271 CommonCommands.NEW_FILE = command_1.Command.toDefaultLocalizedCommand({
272 id: 'workbench.action.files.newFile',
273 category: CommonCommands.FILE_CATEGORY
274 });
275 CommonCommands.NEW_UNTITLED_TEXT_FILE = command_1.Command.toDefaultLocalizedCommand({
276 id: 'workbench.action.files.newUntitledTextFile',
277 category: CommonCommands.FILE_CATEGORY,
278 label: 'New Untitled Text File'
279 });
280 CommonCommands.NEW_UNTITLED_FILE = command_1.Command.toDefaultLocalizedCommand({
281 id: 'workbench.action.files.newUntitledFile',
282 category: CommonCommands.CREATE_CATEGORY,
283 label: 'New File...'
284 });
285 CommonCommands.SAVE = command_1.Command.toDefaultLocalizedCommand({
286 id: 'core.save',
287 category: CommonCommands.FILE_CATEGORY,
288 label: 'Save',
289 });
290 CommonCommands.SAVE_AS = command_1.Command.toDefaultLocalizedCommand({
291 id: 'file.saveAs',
292 category: CommonCommands.FILE_CATEGORY,
293 label: 'Save As...',
294 });
295 CommonCommands.SAVE_WITHOUT_FORMATTING = command_1.Command.toDefaultLocalizedCommand({
296 id: 'core.saveWithoutFormatting',
297 category: CommonCommands.FILE_CATEGORY,
298 label: 'Save without Formatting',
299 });
300 CommonCommands.SAVE_ALL = command_1.Command.toDefaultLocalizedCommand({
301 id: 'core.saveAll',
302 category: CommonCommands.FILE_CATEGORY,
303 label: 'Save All',
304 });
305 CommonCommands.AUTO_SAVE = command_1.Command.toDefaultLocalizedCommand({
306 id: 'textEditor.commands.autosave',
307 category: CommonCommands.FILE_CATEGORY,
308 label: 'Auto Save',
309 });
310 CommonCommands.ABOUT_COMMAND = command_1.Command.toDefaultLocalizedCommand({
311 id: 'core.about',
312 label: 'About'
313 });
314 CommonCommands.OPEN_PREFERENCES = command_1.Command.toDefaultLocalizedCommand({
315 id: 'preferences:open',
316 category: CommonCommands.PREFERENCES_CATEGORY,
317 label: 'Open Settings (UI)',
318 });
319 CommonCommands.SELECT_COLOR_THEME = command_1.Command.toDefaultLocalizedCommand({
320 id: 'workbench.action.selectTheme',
321 label: 'Color Theme',
322 category: CommonCommands.PREFERENCES_CATEGORY
323 });
324 CommonCommands.SELECT_ICON_THEME = command_1.Command.toDefaultLocalizedCommand({
325 id: 'workbench.action.selectIconTheme',
326 label: 'File Icon Theme',
327 category: CommonCommands.PREFERENCES_CATEGORY
328 });
329 CommonCommands.CONFIGURE_DISPLAY_LANGUAGE = command_1.Command.toDefaultLocalizedCommand({
330 id: 'workbench.action.configureLanguage',
331 label: 'Configure Display Language'
332 });
333 CommonCommands.TOGGLE_BREADCRUMBS = command_1.Command.toDefaultLocalizedCommand({
334 id: 'breadcrumbs.toggle',
335 label: 'Toggle Breadcrumbs',
336 category: CommonCommands.VIEW_CATEGORY
337 });
338})(CommonCommands = exports.CommonCommands || (exports.CommonCommands = {}));
339exports.supportCut = environment_1.environment.electron.is() || document.queryCommandSupported('cut');
340exports.supportCopy = environment_1.environment.electron.is() || document.queryCommandSupported('copy');
341// Chrome incorrectly returns true for document.queryCommandSupported('paste')
342// when the paste feature is available but the calling script has insufficient
343// privileges to actually perform the action
344exports.supportPaste = environment_1.environment.electron.is() || (!browser.isChrome && document.queryCommandSupported('paste'));
345exports.RECENT_COMMANDS_STORAGE_KEY = 'commands';
346exports.CLASSNAME_OS_MAC = 'mac';
347exports.CLASSNAME_OS_WINDOWS = 'windows';
348exports.CLASSNAME_OS_LINUX = 'linux';
349let CommonFrontendContribution = class CommonFrontendContribution {
350 constructor(shell, selectionService, messageService, openerService, aboutDialog, localizationProvider, saveResourceService) {
351 this.shell = shell;
352 this.selectionService = selectionService;
353 this.messageService = messageService;
354 this.openerService = openerService;
355 this.aboutDialog = aboutDialog;
356 this.localizationProvider = localizationProvider;
357 this.saveResourceService = saveResourceService;
358 this.commonDecorationsStyleSheet = decoration_style_1.DecorationStyle.createStyleSheet('coreCommonDecorationsStyle');
359 this.shouldPreventClose = false;
360 }
361 async configure(app) {
362 // FIXME: This request blocks valuable startup time (~200ms).
363 const configDirUri = await this.environments.getConfigDirUri();
364 // Global settings
365 this.encodingRegistry.registerOverride({
366 encoding: encodings_1.UTF8,
367 parent: new uri_1.default(configDirUri)
368 });
369 this.contextKeyService.createKey('isLinux', os_1.OS.type() === os_1.OS.Type.Linux);
370 this.contextKeyService.createKey('isMac', os_1.OS.type() === os_1.OS.Type.OSX);
371 this.contextKeyService.createKey('isWindows', os_1.OS.type() === os_1.OS.Type.Windows);
372 this.contextKeyService.createKey('isWeb', !this.isElectron());
373 this.pinnedKey = this.contextKeyService.createKey('activeEditorIsPinned', false);
374 this.updatePinnedKey();
375 this.shell.onDidChangeActiveWidget(() => this.updatePinnedKey());
376 this.initResourceContextKeys();
377 this.registerCtrlWHandling();
378 this.setOsClass();
379 this.updateStyles();
380 this.preferences.ready.then(() => this.setSashProperties());
381 this.preferences.onPreferenceChanged(e => this.handlePreferenceChange(e, app));
382 app.shell.leftPanelHandler.addBottomMenu({
383 id: 'settings-menu',
384 iconClass: 'codicon codicon-settings-gear',
385 title: nls_1.nls.localizeByDefault(CommonCommands.MANAGE_CATEGORY),
386 menuPath: menu_1.MANAGE_MENU,
387 order: 1,
388 });
389 const accountsMenu = {
390 id: 'accounts-menu',
391 iconClass: 'codicon codicon-person',
392 title: nls_1.nls.localizeByDefault('Accounts'),
393 menuPath: menu_1.ACCOUNTS_MENU,
394 order: 0,
395 };
396 this.authenticationService.onDidRegisterAuthenticationProvider(() => {
397 app.shell.leftPanelHandler.addBottomMenu(accountsMenu);
398 });
399 this.authenticationService.onDidUnregisterAuthenticationProvider(() => {
400 if (this.authenticationService.getProviderIds().length === 0) {
401 app.shell.leftPanelHandler.removeBottomMenu(accountsMenu.id);
402 }
403 });
404 }
405 setOsClass() {
406 if (os_1.isOSX) {
407 document.body.classList.add(exports.CLASSNAME_OS_MAC);
408 }
409 else if (os_1.isWindows) {
410 document.body.classList.add(exports.CLASSNAME_OS_WINDOWS);
411 }
412 else {
413 document.body.classList.add(exports.CLASSNAME_OS_LINUX);
414 }
415 }
416 updateStyles() {
417 document.body.classList.remove('theia-editor-highlightModifiedTabs');
418 if (this.preferences['workbench.editor.highlightModifiedTabs']) {
419 document.body.classList.add('theia-editor-highlightModifiedTabs');
420 }
421 }
422 updatePinnedKey() {
423 const activeTab = this.shell.findTabBar();
424 const pinningTarget = activeTab && this.shell.findTitle(activeTab);
425 const value = pinningTarget && (0, widgets_1.isPinned)(pinningTarget);
426 this.pinnedKey.set(value);
427 }
428 handlePreferenceChange(e, app) {
429 switch (e.preferenceName) {
430 case 'workbench.editor.highlightModifiedTabs': {
431 this.updateStyles();
432 break;
433 }
434 case 'window.menuBarVisibility': {
435 const { newValue } = e;
436 const mainMenuId = 'main-menu';
437 if (newValue === 'compact') {
438 this.shell.leftPanelHandler.addTopMenu({
439 id: mainMenuId,
440 iconClass: 'codicon codicon-menu',
441 title: nls_1.nls.localizeByDefault('Application Menu'),
442 menuPath: menu_1.MAIN_MENU_BAR,
443 order: 0,
444 });
445 }
446 else {
447 app.shell.leftPanelHandler.removeTopMenu(mainMenuId);
448 }
449 break;
450 }
451 case 'workbench.sash.hoverDelay':
452 case 'workbench.sash.size': {
453 this.setSashProperties();
454 break;
455 }
456 }
457 }
458 setSashProperties() {
459 const sashRule = `:root {
460 --theia-sash-hoverDelay: ${this.preferences['workbench.sash.hoverDelay']}ms;
461 --theia-sash-width: ${this.preferences['workbench.sash.size']}px;
462 }`;
463 decoration_style_1.DecorationStyle.deleteStyleRule(':root', this.commonDecorationsStyleSheet);
464 this.commonDecorationsStyleSheet.insertRule(sashRule);
465 }
466 onStart() {
467 this.storageService.getData(exports.RECENT_COMMANDS_STORAGE_KEY, { recent: [] })
468 .then(tasks => this.commandRegistry.recent = tasks.recent);
469 }
470 onStop() {
471 const recent = this.commandRegistry.recent;
472 this.storageService.setData(exports.RECENT_COMMANDS_STORAGE_KEY, { recent });
473 window.localStorage.setItem(icon_theme_service_1.IconThemeService.STORAGE_KEY, this.iconThemes.current);
474 window.localStorage.setItem(theming_1.ThemeService.STORAGE_KEY, this.themeService.getCurrentTheme().id);
475 }
476 initResourceContextKeys() {
477 const updateContextKeys = () => {
478 const selection = this.selectionService.selection;
479 const resourceUri = navigatable_1.Navigatable.is(selection) && selection.getResourceUri() || selection_1.UriSelection.getUri(selection);
480 this.resourceContextKey.set(resourceUri);
481 };
482 updateContextKeys();
483 this.selectionService.onSelectionChanged(updateContextKeys);
484 }
485 registerMenus(registry) {
486 registry.registerSubmenu(CommonMenus.FILE, nls_1.nls.localizeByDefault('File'));
487 registry.registerSubmenu(CommonMenus.EDIT, nls_1.nls.localizeByDefault('Edit'));
488 registry.registerSubmenu(CommonMenus.VIEW, nls_1.nls.localizeByDefault('View'));
489 registry.registerSubmenu(CommonMenus.HELP, nls_1.nls.localizeByDefault('Help'));
490 // For plugins contributing create new file commands/menu-actions
491 registry.registerIndependentSubmenu(CommonMenus.FILE_NEW_CONTRIBUTIONS, nls_1.nls.localizeByDefault('New File...'));
492 registry.registerMenuAction(CommonMenus.FILE_SAVE, {
493 commandId: CommonCommands.SAVE.id
494 });
495 registry.registerMenuAction(CommonMenus.FILE_SAVE, {
496 commandId: CommonCommands.SAVE_ALL.id
497 });
498 registry.registerMenuAction(CommonMenus.FILE_AUTOSAVE, {
499 commandId: CommonCommands.AUTO_SAVE.id
500 });
501 registry.registerSubmenu(CommonMenus.FILE_SETTINGS_SUBMENU, nls_1.nls.localizeByDefault(CommonCommands.PREFERENCES_CATEGORY));
502 registry.registerMenuAction(CommonMenus.EDIT_UNDO, {
503 commandId: CommonCommands.UNDO.id,
504 order: '0'
505 });
506 registry.registerMenuAction(CommonMenus.EDIT_UNDO, {
507 commandId: CommonCommands.REDO.id,
508 order: '1'
509 });
510 registry.registerMenuAction(CommonMenus.EDIT_FIND, {
511 commandId: CommonCommands.FIND.id,
512 order: '0'
513 });
514 registry.registerMenuAction(CommonMenus.EDIT_FIND, {
515 commandId: CommonCommands.REPLACE.id,
516 order: '1'
517 });
518 registry.registerMenuAction(CommonMenus.EDIT_CLIPBOARD, {
519 commandId: CommonCommands.CUT.id,
520 order: '0'
521 });
522 registry.registerMenuAction(CommonMenus.EDIT_CLIPBOARD, {
523 commandId: CommonCommands.COPY.id,
524 order: '1'
525 });
526 registry.registerMenuAction(CommonMenus.EDIT_CLIPBOARD, {
527 commandId: CommonCommands.PASTE.id,
528 order: '2'
529 });
530 registry.registerMenuAction(CommonMenus.EDIT_CLIPBOARD, {
531 commandId: CommonCommands.COPY_PATH.id,
532 order: '3'
533 });
534 registry.registerMenuAction(CommonMenus.VIEW_APPEARANCE_SUBMENU_BAR, {
535 commandId: CommonCommands.TOGGLE_BOTTOM_PANEL.id,
536 order: '1'
537 });
538 registry.registerMenuAction(CommonMenus.VIEW_APPEARANCE_SUBMENU_BAR, {
539 commandId: CommonCommands.TOGGLE_STATUS_BAR.id,
540 order: '2',
541 label: nls_1.nls.localizeByDefault('Toggle Status Bar Visibility')
542 });
543 registry.registerMenuAction(CommonMenus.VIEW_APPEARANCE_SUBMENU_BAR, {
544 commandId: CommonCommands.COLLAPSE_ALL_PANELS.id,
545 order: '3'
546 });
547 registry.registerMenuAction(tab_bars_1.SHELL_TABBAR_CONTEXT_CLOSE, {
548 commandId: CommonCommands.CLOSE_TAB.id,
549 label: nls_1.nls.localizeByDefault('Close'),
550 order: '0'
551 });
552 registry.registerMenuAction(tab_bars_1.SHELL_TABBAR_CONTEXT_CLOSE, {
553 commandId: CommonCommands.CLOSE_OTHER_TABS.id,
554 label: nls_1.nls.localizeByDefault('Close Others'),
555 order: '1'
556 });
557 registry.registerMenuAction(tab_bars_1.SHELL_TABBAR_CONTEXT_CLOSE, {
558 commandId: CommonCommands.CLOSE_RIGHT_TABS.id,
559 label: nls_1.nls.localizeByDefault('Close to the Right'),
560 order: '2'
561 });
562 registry.registerMenuAction(tab_bars_1.SHELL_TABBAR_CONTEXT_CLOSE, {
563 commandId: CommonCommands.CLOSE_SAVED_TABS.id,
564 label: nls_1.nls.localizeByDefault('Close Saved'),
565 order: '3',
566 });
567 registry.registerMenuAction(tab_bars_1.SHELL_TABBAR_CONTEXT_CLOSE, {
568 commandId: CommonCommands.CLOSE_ALL_TABS.id,
569 label: nls_1.nls.localizeByDefault('Close All'),
570 order: '4'
571 });
572 registry.registerMenuAction(tab_bars_1.SHELL_TABBAR_CONTEXT_SPLIT, {
573 commandId: CommonCommands.COLLAPSE_PANEL.id,
574 label: CommonCommands.COLLAPSE_PANEL.label,
575 order: '5'
576 });
577 registry.registerMenuAction(tab_bars_1.SHELL_TABBAR_CONTEXT_SPLIT, {
578 commandId: CommonCommands.TOGGLE_MAXIMIZED.id,
579 label: CommonCommands.TOGGLE_MAXIMIZED.label,
580 order: '6'
581 });
582 registry.registerMenuAction(CommonMenus.VIEW_APPEARANCE_SUBMENU_SCREEN, {
583 commandId: CommonCommands.TOGGLE_MAXIMIZED.id,
584 label: CommonCommands.TOGGLE_MAXIMIZED.label,
585 order: '6'
586 });
587 registry.registerMenuAction(tab_bars_1.SHELL_TABBAR_CONTEXT_COPY, {
588 commandId: CommonCommands.COPY_PATH.id,
589 label: CommonCommands.COPY_PATH.label,
590 order: '1',
591 });
592 registry.registerMenuAction(CommonMenus.VIEW_APPEARANCE_SUBMENU_BAR, {
593 commandId: CommonCommands.SHOW_MENU_BAR.id,
594 label: nls_1.nls.localizeByDefault('Toggle Menu Bar'),
595 order: '0'
596 });
597 registry.registerMenuAction(tab_bars_1.SHELL_TABBAR_CONTEXT_PIN, {
598 commandId: CommonCommands.PIN_TAB.id,
599 label: nls_1.nls.localizeByDefault('Pin'),
600 order: '7'
601 });
602 registry.registerMenuAction(tab_bars_1.SHELL_TABBAR_CONTEXT_PIN, {
603 commandId: CommonCommands.UNPIN_TAB.id,
604 label: nls_1.nls.localizeByDefault('Unpin'),
605 order: '8'
606 });
607 registry.registerMenuAction(CommonMenus.HELP, {
608 commandId: CommonCommands.ABOUT_COMMAND.id,
609 label: CommonCommands.ABOUT_COMMAND.label,
610 order: '9'
611 });
612 registry.registerMenuAction(CommonMenus.VIEW_PRIMARY, {
613 commandId: CommonCommands.OPEN_VIEW.id
614 });
615 registry.registerMenuAction(CommonMenus.FILE_SETTINGS_SUBMENU_THEME, {
616 commandId: CommonCommands.SELECT_COLOR_THEME.id
617 });
618 registry.registerMenuAction(CommonMenus.FILE_SETTINGS_SUBMENU_THEME, {
619 commandId: CommonCommands.SELECT_ICON_THEME.id
620 });
621 registry.registerSubmenu(CommonMenus.MANAGE_SETTINGS_THEMES, nls_1.nls.localizeByDefault('Themes'), { order: 'a50' });
622 registry.registerMenuAction(CommonMenus.MANAGE_SETTINGS_THEMES, {
623 commandId: CommonCommands.SELECT_COLOR_THEME.id,
624 order: '0'
625 });
626 registry.registerMenuAction(CommonMenus.MANAGE_SETTINGS_THEMES, {
627 commandId: CommonCommands.SELECT_ICON_THEME.id,
628 order: '1'
629 });
630 registry.registerSubmenu(CommonMenus.VIEW_APPEARANCE_SUBMENU, nls_1.nls.localizeByDefault('Appearance'));
631 registry.registerMenuAction(CommonMenus.FILE_NEW_TEXT, {
632 commandId: CommonCommands.NEW_UNTITLED_TEXT_FILE.id,
633 label: nls_1.nls.localizeByDefault('New Text File'),
634 order: 'a'
635 });
636 registry.registerMenuAction(CommonMenus.FILE_NEW_TEXT, {
637 commandId: CommonCommands.NEW_UNTITLED_FILE.id,
638 label: nls_1.nls.localizeByDefault('New File...'),
639 order: 'a1'
640 });
641 }
642 registerCommands(commandRegistry) {
643 commandRegistry.registerCommand(CommonCommands.OPEN, uri_command_handler_1.UriAwareCommandHandler.MultiSelect(this.selectionService, {
644 execute: uris => uris.map(uri => (0, opener_service_1.open)(this.openerService, uri)),
645 }));
646 commandRegistry.registerCommand(CommonCommands.CUT, {
647 execute: () => {
648 if (exports.supportCut) {
649 document.execCommand('cut');
650 }
651 else {
652 this.messageService.warn(nls_1.nls.localize('theia/core/cutWarn', "Please use the browser's cut command or shortcut."));
653 }
654 }
655 });
656 commandRegistry.registerCommand(CommonCommands.COPY, {
657 execute: () => {
658 if (exports.supportCopy) {
659 document.execCommand('copy');
660 }
661 else {
662 this.messageService.warn(nls_1.nls.localize('theia/core/copyWarn', "Please use the browser's copy command or shortcut."));
663 }
664 }
665 });
666 commandRegistry.registerCommand(CommonCommands.PASTE, {
667 execute: () => {
668 if (exports.supportPaste) {
669 document.execCommand('paste');
670 }
671 else {
672 this.messageService.warn(nls_1.nls.localize('theia/core/pasteWarn', "Please use the browser's paste command or shortcut."));
673 }
674 }
675 });
676 commandRegistry.registerCommand(CommonCommands.COPY_PATH, uri_command_handler_1.UriAwareCommandHandler.MultiSelect(this.selectionService, {
677 isVisible: uris => Array.isArray(uris) && uris.some(uri => uri instanceof uri_1.default),
678 isEnabled: uris => Array.isArray(uris) && uris.some(uri => uri instanceof uri_1.default),
679 execute: async (uris) => {
680 if (uris.length) {
681 const lineDelimiter = os_1.EOL;
682 const text = uris.map(resource => resource.path.fsPath()).join(lineDelimiter);
683 await this.clipboardService.writeText(text);
684 }
685 else {
686 await this.messageService.info(nls_1.nls.localize('theia/core/copyInfo', 'Open a file first to copy its path'));
687 }
688 }
689 }));
690 commandRegistry.registerCommand(CommonCommands.UNDO, {
691 execute: () => document.execCommand('undo')
692 });
693 commandRegistry.registerCommand(CommonCommands.REDO, {
694 execute: () => document.execCommand('redo')
695 });
696 commandRegistry.registerCommand(CommonCommands.SELECT_ALL, {
697 execute: () => document.execCommand('selectAll')
698 });
699 commandRegistry.registerCommand(CommonCommands.FIND, {
700 execute: () => { }
701 });
702 commandRegistry.registerCommand(CommonCommands.REPLACE, {
703 execute: () => { }
704 });
705 commandRegistry.registerCommand(CommonCommands.NEXT_TAB, {
706 isEnabled: () => this.shell.currentTabBar !== undefined,
707 execute: () => this.shell.activateNextTab()
708 });
709 commandRegistry.registerCommand(CommonCommands.PREVIOUS_TAB, {
710 isEnabled: () => this.shell.currentTabBar !== undefined,
711 execute: () => this.shell.activatePreviousTab()
712 });
713 commandRegistry.registerCommand(CommonCommands.NEXT_TAB_IN_GROUP, {
714 isEnabled: () => this.shell.nextTabIndexInTabBar() !== -1,
715 execute: () => this.shell.activateNextTabInTabBar()
716 });
717 commandRegistry.registerCommand(CommonCommands.PREVIOUS_TAB_IN_GROUP, {
718 isEnabled: () => this.shell.previousTabIndexInTabBar() !== -1,
719 execute: () => this.shell.activatePreviousTabInTabBar()
720 });
721 commandRegistry.registerCommand(CommonCommands.NEXT_TAB_GROUP, {
722 isEnabled: () => this.shell.nextTabBar() !== undefined,
723 execute: () => this.shell.activateNextTabBar()
724 });
725 commandRegistry.registerCommand(CommonCommands.PREVIOUS_TAB_GROUP, {
726 isEnabled: () => this.shell.previousTabBar() !== undefined,
727 execute: () => this.shell.activatePreviousTabBar()
728 });
729 commandRegistry.registerCommand(CommonCommands.CLOSE_TAB, new current_widget_command_adapter_1.CurrentWidgetCommandAdapter(this.shell, {
730 isEnabled: title => Boolean(title === null || title === void 0 ? void 0 : title.closable),
731 execute: (title, tabBar) => tabBar && this.shell.closeTabs(tabBar, candidate => candidate === title),
732 }));
733 commandRegistry.registerCommand(CommonCommands.CLOSE_OTHER_TABS, new current_widget_command_adapter_1.CurrentWidgetCommandAdapter(this.shell, {
734 isEnabled: (title, tabbar) => Boolean(tabbar === null || tabbar === void 0 ? void 0 : tabbar.titles.some(candidate => candidate !== title && candidate.closable)),
735 execute: (title, tabbar) => tabbar && this.shell.closeTabs(tabbar, candidate => candidate !== title && candidate.closable),
736 }));
737 commandRegistry.registerCommand(CommonCommands.CLOSE_SAVED_TABS, new current_widget_command_adapter_1.CurrentWidgetCommandAdapter(this.shell, {
738 isEnabled: (_title, tabbar) => Boolean(tabbar === null || tabbar === void 0 ? void 0 : tabbar.titles.some(candidate => candidate.closable && !saveable_1.Saveable.isDirty(candidate.owner))),
739 execute: (_title, tabbar) => tabbar && this.shell.closeTabs(tabbar, candidate => candidate.closable && !saveable_1.Saveable.isDirty(candidate.owner)),
740 }));
741 commandRegistry.registerCommand(CommonCommands.CLOSE_RIGHT_TABS, new current_widget_command_adapter_1.CurrentWidgetCommandAdapter(this.shell, {
742 isEnabled: (title, tabbar) => {
743 let targetSeen = false;
744 return Boolean(tabbar === null || tabbar === void 0 ? void 0 : tabbar.titles.some(candidate => {
745 if (targetSeen && candidate.closable) {
746 return true;
747 }
748 ;
749 if (candidate === title) {
750 targetSeen = true;
751 }
752 ;
753 }));
754 },
755 isVisible: (_title, tabbar) => {
756 var _a;
757 const area = (_a = (tabbar && this.shell.getAreaFor(tabbar))) !== null && _a !== void 0 ? _a : this.shell.currentTabArea;
758 return area !== undefined && area !== 'left' && area !== 'right';
759 },
760 execute: (title, tabbar) => {
761 if (tabbar) {
762 let targetSeen = false;
763 this.shell.closeTabs(tabbar, candidate => {
764 if (targetSeen && candidate.closable) {
765 return true;
766 }
767 ;
768 if (candidate === title) {
769 targetSeen = true;
770 }
771 ;
772 return false;
773 });
774 }
775 }
776 }));
777 commandRegistry.registerCommand(CommonCommands.CLOSE_ALL_TABS, new current_widget_command_adapter_1.CurrentWidgetCommandAdapter(this.shell, {
778 isEnabled: (_title, tabbar) => Boolean(tabbar === null || tabbar === void 0 ? void 0 : tabbar.titles.some(title => title.closable)),
779 execute: (_title, tabbar) => tabbar && this.shell.closeTabs(tabbar, candidate => candidate.closable),
780 }));
781 commandRegistry.registerCommand(CommonCommands.CLOSE_MAIN_TAB, {
782 isEnabled: () => {
783 const currentWidget = this.shell.getCurrentWidget('main');
784 return currentWidget !== undefined && currentWidget.title.closable;
785 },
786 execute: () => this.shell.getCurrentWidget('main').close()
787 });
788 commandRegistry.registerCommand(CommonCommands.CLOSE_OTHER_MAIN_TABS, {
789 isEnabled: () => {
790 const currentWidget = this.shell.getCurrentWidget('main');
791 return currentWidget !== undefined &&
792 this.shell.mainAreaTabBars.some(tb => tb.titles.some(title => title.owner !== currentWidget && title.closable));
793 },
794 execute: () => {
795 const currentWidget = this.shell.getCurrentWidget('main');
796 this.shell.closeTabs('main', title => title.owner !== currentWidget && title.closable);
797 }
798 });
799 commandRegistry.registerCommand(CommonCommands.CLOSE_ALL_MAIN_TABS, {
800 isEnabled: () => this.shell.mainAreaTabBars.some(tb => tb.titles.some(title => title.closable)),
801 execute: () => this.shell.closeTabs('main', title => title.closable)
802 });
803 commandRegistry.registerCommand(CommonCommands.COLLAPSE_PANEL, new current_widget_command_adapter_1.CurrentWidgetCommandAdapter(this.shell, {
804 isEnabled: (_title, tabbar) => Boolean(tabbar && application_shell_1.ApplicationShell.isSideArea(this.shell.getAreaFor(tabbar))),
805 isVisible: (_title, tabbar) => Boolean(tabbar && application_shell_1.ApplicationShell.isSideArea(this.shell.getAreaFor(tabbar))),
806 execute: (_title, tabbar) => tabbar && this.shell.collapsePanel(this.shell.getAreaFor(tabbar))
807 }));
808 commandRegistry.registerCommand(CommonCommands.COLLAPSE_ALL_PANELS, {
809 execute: () => {
810 this.shell.collapsePanel('left');
811 this.shell.collapsePanel('right');
812 this.shell.collapsePanel('bottom');
813 }
814 });
815 commandRegistry.registerCommand(CommonCommands.TOGGLE_BOTTOM_PANEL, {
816 isEnabled: () => this.shell.getWidgets('bottom').length > 0,
817 execute: () => {
818 if (this.shell.isExpanded('bottom')) {
819 this.shell.collapsePanel('bottom');
820 }
821 else {
822 this.shell.expandPanel('bottom');
823 }
824 }
825 });
826 commandRegistry.registerCommand(CommonCommands.TOGGLE_STATUS_BAR, {
827 execute: () => this.preferenceService.updateValue('workbench.statusBar.visible', !this.preferences['workbench.statusBar.visible'])
828 });
829 commandRegistry.registerCommand(CommonCommands.TOGGLE_MAXIMIZED, new current_widget_command_adapter_1.CurrentWidgetCommandAdapter(this.shell, {
830 isEnabled: title => Boolean((title === null || title === void 0 ? void 0 : title.owner) && this.shell.canToggleMaximized(title === null || title === void 0 ? void 0 : title.owner)),
831 isVisible: title => Boolean((title === null || title === void 0 ? void 0 : title.owner) && this.shell.canToggleMaximized(title === null || title === void 0 ? void 0 : title.owner)),
832 execute: title => (title === null || title === void 0 ? void 0 : title.owner) && this.shell.toggleMaximized(title === null || title === void 0 ? void 0 : title.owner),
833 }));
834 commandRegistry.registerCommand(CommonCommands.SHOW_MENU_BAR, {
835 isEnabled: () => !os_1.isOSX,
836 isVisible: () => !os_1.isOSX,
837 execute: () => {
838 const menuBarVisibility = 'window.menuBarVisibility';
839 const visibility = this.preferences[menuBarVisibility];
840 if (visibility !== 'compact') {
841 this.preferenceService.updateValue(menuBarVisibility, 'compact');
842 }
843 else {
844 this.preferenceService.updateValue(menuBarVisibility, 'classic');
845 }
846 }
847 });
848 commandRegistry.registerCommand(CommonCommands.SAVE, {
849 execute: () => this.save({ formatType: 1 /* ON */ })
850 });
851 commandRegistry.registerCommand(CommonCommands.SAVE_AS, {
852 isEnabled: () => this.saveResourceService.canSaveAs(this.shell.currentWidget),
853 execute: () => {
854 const { currentWidget } = this.shell;
855 // No clue what could have happened between `isEnabled` and `execute`
856 // when fetching currentWidget, so better to double-check:
857 if (this.saveResourceService.canSaveAs(currentWidget)) {
858 this.saveResourceService.saveAs(currentWidget);
859 }
860 else {
861 this.messageService.error(nls_1.nls.localize('theia/workspace/failSaveAs', 'Cannot run "{0}" for the current widget.', CommonCommands.SAVE_AS.label));
862 }
863 },
864 });
865 commandRegistry.registerCommand(CommonCommands.SAVE_WITHOUT_FORMATTING, {
866 execute: () => this.save({ formatType: 2 /* OFF */ })
867 });
868 commandRegistry.registerCommand(CommonCommands.SAVE_ALL, {
869 execute: () => this.shell.saveAll({ formatType: 3 /* DIRTY */ })
870 });
871 commandRegistry.registerCommand(CommonCommands.ABOUT_COMMAND, {
872 execute: () => this.openAbout()
873 });
874 commandRegistry.registerCommand(CommonCommands.OPEN_VIEW, {
875 execute: () => { var _a; return (_a = this.quickInputService) === null || _a === void 0 ? void 0 : _a.open(quick_view_service_1.QuickViewService.PREFIX); }
876 });
877 commandRegistry.registerCommand(CommonCommands.SELECT_COLOR_THEME, {
878 execute: () => this.selectColorTheme()
879 });
880 commandRegistry.registerCommand(CommonCommands.SELECT_ICON_THEME, {
881 execute: () => this.selectIconTheme()
882 });
883 commandRegistry.registerCommand(CommonCommands.PIN_TAB, new current_widget_command_adapter_1.CurrentWidgetCommandAdapter(this.shell, {
884 isEnabled: title => Boolean(title && !(0, widgets_1.isPinned)(title)),
885 execute: title => this.togglePinned(title),
886 }));
887 commandRegistry.registerCommand(CommonCommands.UNPIN_TAB, new current_widget_command_adapter_1.CurrentWidgetCommandAdapter(this.shell, {
888 isEnabled: title => Boolean(title && (0, widgets_1.isPinned)(title)),
889 execute: title => this.togglePinned(title),
890 }));
891 commandRegistry.registerCommand(CommonCommands.CONFIGURE_DISPLAY_LANGUAGE, {
892 execute: () => this.configureDisplayLanguage()
893 });
894 commandRegistry.registerCommand(CommonCommands.TOGGLE_BREADCRUMBS, {
895 execute: () => this.toggleBreadcrumbs(),
896 isToggled: () => this.isBreadcrumbsEnabled(),
897 });
898 commandRegistry.registerCommand(CommonCommands.NEW_UNTITLED_TEXT_FILE, {
899 execute: async () => {
900 const untitledUri = this.untitledResourceResolver.createUntitledURI('', await this.workingDirProvider.getUserWorkingDir());
901 this.untitledResourceResolver.resolve(untitledUri);
902 return (0, opener_service_1.open)(this.openerService, untitledUri);
903 }
904 });
905 commandRegistry.registerCommand(CommonCommands.NEW_UNTITLED_FILE, {
906 execute: async () => this.showNewFilePicker()
907 });
908 for (const [index, ordinal] of this.getOrdinalNumbers().entries()) {
909 commandRegistry.registerCommand({ id: `workbench.action.focus${ordinal}EditorGroup`, label: index === 0 ? nls_1.nls.localizeByDefault('Focus First Editor Group') : '', category: nls_1.nls.localize(CommonCommands.VIEW_CATEGORY_KEY, CommonCommands.VIEW_CATEGORY) }, {
910 isEnabled: () => this.shell.mainAreaTabBars.length > index,
911 execute: () => {
912 var _a, _b;
913 const widget = (_b = (_a = this.shell.mainAreaTabBars[index]) === null || _a === void 0 ? void 0 : _a.currentTitle) === null || _b === void 0 ? void 0 : _b.owner;
914 if (widget) {
915 this.shell.activateWidget(widget.id);
916 }
917 }
918 });
919 }
920 }
921 getOrdinalNumbers() {
922 return ['First', 'Second', 'Third', 'Fourth', 'Fifth', 'Sixth', 'Seventh', 'Eighth', 'Ninth'];
923 }
924 isElectron() {
925 return environment_1.environment.electron.is();
926 }
927 togglePinned(title) {
928 if (title) {
929 (0, widgets_1.togglePinned)(title);
930 this.updatePinnedKey();
931 }
932 }
933 registerKeybindings(registry) {
934 if (exports.supportCut) {
935 registry.registerKeybinding({
936 command: CommonCommands.CUT.id,
937 keybinding: 'ctrlcmd+x'
938 });
939 }
940 if (exports.supportCopy) {
941 registry.registerKeybinding({
942 command: CommonCommands.COPY.id,
943 keybinding: 'ctrlcmd+c'
944 });
945 }
946 if (exports.supportPaste) {
947 registry.registerKeybinding({
948 command: CommonCommands.PASTE.id,
949 keybinding: 'ctrlcmd+v'
950 });
951 }
952 registry.registerKeybinding({
953 command: CommonCommands.COPY_PATH.id,
954 keybinding: os_1.isWindows ? 'shift+alt+c' : 'ctrlcmd+alt+c',
955 when: '!editorFocus'
956 });
957 registry.registerKeybindings(
958 // Edition
959 {
960 command: CommonCommands.UNDO.id,
961 keybinding: 'ctrlcmd+z'
962 }, {
963 command: CommonCommands.REDO.id,
964 keybinding: 'ctrlcmd+shift+z'
965 }, {
966 command: CommonCommands.SELECT_ALL.id,
967 keybinding: 'ctrlcmd+a'
968 }, {
969 command: CommonCommands.FIND.id,
970 keybinding: 'ctrlcmd+f'
971 }, {
972 command: CommonCommands.REPLACE.id,
973 keybinding: 'ctrlcmd+alt+f'
974 },
975 // Tabs
976 {
977 command: CommonCommands.NEXT_TAB.id,
978 keybinding: 'ctrlcmd+tab'
979 }, {
980 command: CommonCommands.NEXT_TAB.id,
981 keybinding: 'ctrlcmd+alt+d'
982 }, {
983 command: CommonCommands.PREVIOUS_TAB.id,
984 keybinding: 'ctrlcmd+shift+tab'
985 }, {
986 command: CommonCommands.PREVIOUS_TAB.id,
987 keybinding: 'ctrlcmd+alt+a'
988 }, {
989 command: CommonCommands.CLOSE_MAIN_TAB.id,
990 keybinding: this.isElectron() ? (os_1.isWindows ? 'ctrl+f4' : 'ctrlcmd+w') : 'alt+w'
991 }, {
992 command: CommonCommands.CLOSE_OTHER_MAIN_TABS.id,
993 keybinding: 'ctrlcmd+alt+t'
994 }, {
995 command: CommonCommands.CLOSE_ALL_MAIN_TABS.id,
996 keybinding: this.isElectron() ? 'ctrlCmd+k ctrlCmd+w' : 'alt+shift+w'
997 },
998 // Panels
999 {
1000 command: CommonCommands.COLLAPSE_PANEL.id,
1001 keybinding: 'alt+c'
1002 }, {
1003 command: CommonCommands.TOGGLE_BOTTOM_PANEL.id,
1004 keybinding: 'ctrlcmd+j',
1005 }, {
1006 command: CommonCommands.COLLAPSE_ALL_PANELS.id,
1007 keybinding: 'alt+shift+c',
1008 }, {
1009 command: CommonCommands.TOGGLE_MAXIMIZED.id,
1010 keybinding: 'alt+m',
1011 },
1012 // Saving
1013 {
1014 command: CommonCommands.SAVE.id,
1015 keybinding: 'ctrlcmd+s'
1016 }, {
1017 command: CommonCommands.SAVE_WITHOUT_FORMATTING.id,
1018 keybinding: 'ctrlcmd+k s'
1019 }, {
1020 command: CommonCommands.SAVE_ALL.id,
1021 keybinding: 'ctrlcmd+alt+s'
1022 },
1023 // Theming
1024 {
1025 command: CommonCommands.SELECT_COLOR_THEME.id,
1026 keybinding: 'ctrlcmd+k ctrlcmd+t'
1027 }, {
1028 command: CommonCommands.PIN_TAB.id,
1029 keybinding: 'ctrlcmd+k shift+enter',
1030 when: '!activeEditorIsPinned'
1031 }, {
1032 command: CommonCommands.UNPIN_TAB.id,
1033 keybinding: 'ctrlcmd+k shift+enter',
1034 when: 'activeEditorIsPinned'
1035 }, {
1036 command: CommonCommands.NEW_UNTITLED_TEXT_FILE.id,
1037 keybinding: this.isElectron() ? 'ctrlcmd+n' : 'alt+n',
1038 }, {
1039 command: CommonCommands.NEW_UNTITLED_FILE.id,
1040 keybinding: 'ctrlcmd+alt+n'
1041 });
1042 for (const [index, ordinal] of this.getOrdinalNumbers().entries()) {
1043 registry.registerKeybinding({
1044 command: `workbench.action.focus${ordinal}EditorGroup`,
1045 keybinding: `ctrlcmd+${(index + 1) % 10}`,
1046 });
1047 }
1048 }
1049 async save(options) {
1050 const widget = this.shell.currentWidget;
1051 this.saveResourceService.save(widget, options);
1052 }
1053 async openAbout() {
1054 this.aboutDialog.open();
1055 }
1056 /**
1057 * registers event listener which make sure that
1058 * window doesn't get closed if CMD/CTRL W is pressed.
1059 * Too many users have that in their muscle memory.
1060 * Chrome doesn't let us rebind or prevent default the keybinding, so this
1061 * at least doesn't close the window immediately.
1062 */
1063 registerCtrlWHandling() {
1064 function isCtrlCmd(event) {
1065 return (os_1.isOSX && event.metaKey) || (!os_1.isOSX && event.ctrlKey);
1066 }
1067 window.document.addEventListener('keydown', event => {
1068 this.shouldPreventClose = isCtrlCmd(event) && event.code === 'KeyW';
1069 });
1070 window.document.addEventListener('keyup', () => {
1071 this.shouldPreventClose = false;
1072 });
1073 }
1074 onWillStop() {
1075 if (this.shouldPreventClose || this.shell.canSaveAll()) {
1076 return {
1077 reason: 'Dirty editors present',
1078 action: async () => {
1079 const captionsToSave = this.unsavedTabsCaptions();
1080 const untitledCaptionsToSave = this.unsavedUntitledTabsCaptions();
1081 const shouldExit = await this.confirmExitWithOrWithoutSaving(captionsToSave, async () => {
1082 await this.saveDirty(untitledCaptionsToSave);
1083 await this.shell.saveAll();
1084 });
1085 const allSavedOrDoNotSave = (shouldExit === true && untitledCaptionsToSave.length === 0 // Should save and cancel if any captions failed to save
1086 ) || shouldExit === false; // Do not save
1087 this.shouldPreventClose = !allSavedOrDoNotSave;
1088 return allSavedOrDoNotSave;
1089 }
1090 };
1091 }
1092 }
1093 // Asks the user to confirm whether they want to exit with or without saving the changes
1094 async confirmExitWithOrWithoutSaving(captionsToSave, performSave) {
1095 const div = document.createElement('div');
1096 div.innerText = nls_1.nls.localizeByDefault("Your changes will be lost if you don't save them.");
1097 let result;
1098 if (captionsToSave.length > 0) {
1099 const span = document.createElement('span');
1100 span.appendChild(document.createElement('br'));
1101 captionsToSave.forEach(cap => {
1102 const b = document.createElement('b');
1103 b.innerText = cap;
1104 span.appendChild(b);
1105 span.appendChild(document.createElement('br'));
1106 });
1107 span.appendChild(document.createElement('br'));
1108 div.appendChild(span);
1109 result = await new dialogs_1.ConfirmSaveDialog({
1110 title: nls_1.nls.localizeByDefault('Do you want to save the changes to the following {0} files?', captionsToSave.length),
1111 msg: div,
1112 dontSave: nls_1.nls.localizeByDefault("Don't Save"),
1113 save: nls_1.nls.localizeByDefault('Save All'),
1114 cancel: dialogs_1.Dialog.CANCEL
1115 }).open();
1116 if (result) {
1117 await performSave();
1118 }
1119 }
1120 else {
1121 // fallback if not passed with an empty caption-list.
1122 result = (0, dialogs_1.confirmExit)();
1123 }
1124 if (result !== undefined) {
1125 return result === true;
1126 }
1127 else {
1128 return undefined;
1129 }
1130 ;
1131 }
1132 unsavedTabsCaptions() {
1133 return this.shell.widgets
1134 .filter(widget => this.saveResourceService.canSave(widget))
1135 .map(widget => widget.title.label);
1136 }
1137 unsavedUntitledTabsCaptions() {
1138 return this.shell.widgets.filter(widget => { var _a; return ((_a = navigatable_1.NavigatableWidget.getUri(widget)) === null || _a === void 0 ? void 0 : _a.scheme) === common_1.UNTITLED_SCHEME && this.saveResourceService.canSaveAs(widget); });
1139 }
1140 async configureDisplayLanguage() {
1141 var _a, _b;
1142 const languageInfo = await this.languageQuickPickService.pickDisplayLanguage();
1143 if (languageInfo && !nls_1.nls.isSelectedLocale(languageInfo.languageId) && await this.confirmRestart((_b = (_a = languageInfo.localizedLanguageName) !== null && _a !== void 0 ? _a : languageInfo.languageName) !== null && _b !== void 0 ? _b : languageInfo.languageId)) {
1144 nls_1.nls.setLocale(languageInfo.languageId);
1145 this.windowService.setSafeToShutDown();
1146 this.windowService.reload();
1147 }
1148 }
1149 /**
1150 * saves any dirty widget in toSave
1151 * side effect - will pop all widgets from toSave that was saved
1152 * @param toSave
1153 */
1154 async saveDirty(toSave) {
1155 for (const widget of toSave) {
1156 const saveable = saveable_1.Saveable.get(widget);
1157 if (saveable === null || saveable === void 0 ? void 0 : saveable.dirty) {
1158 await this.saveResourceService.save(widget);
1159 if (!this.saveResourceService.canSave(widget)) {
1160 toSave.pop();
1161 }
1162 }
1163 }
1164 }
1165 toggleBreadcrumbs() {
1166 const value = this.preferenceService.get('breadcrumbs.enabled');
1167 this.preferenceService.set('breadcrumbs.enabled', !value, preferences_1.PreferenceScope.User);
1168 }
1169 isBreadcrumbsEnabled() {
1170 return !!this.preferenceService.get('breadcrumbs.enabled');
1171 }
1172 async confirmRestart(languageName) {
1173 const appName = frontend_application_config_provider_1.FrontendApplicationConfigProvider.get().applicationName;
1174 const shouldRestart = await new dialogs_1.ConfirmDialog({
1175 title: nls_1.nls.localizeByDefault('Restart {0} to switch to {1}?', appName, languageName),
1176 msg: nls_1.nls.localizeByDefault('To change the display language to {0}, {1} needs to restart.', languageName, appName),
1177 ok: nls_1.nls.localizeByDefault('Restart'),
1178 cancel: dialogs_1.Dialog.CANCEL,
1179 }).open();
1180 return shouldRestart === true;
1181 }
1182 selectIconTheme() {
1183 var _a;
1184 let resetTo = this.iconThemes.getCurrent();
1185 const setTheme = (id, persist) => {
1186 const theme = this.iconThemes.getDefinition(id);
1187 if (theme) {
1188 this.iconThemes.setCurrent(theme, persist);
1189 }
1190 };
1191 const previewTheme = debounce(setTheme, 200);
1192 let items = [];
1193 for (const iconTheme of this.iconThemes.definitions) {
1194 items.push({
1195 id: iconTheme.id,
1196 label: iconTheme.label,
1197 description: iconTheme.description,
1198 });
1199 }
1200 items = items.sort((a, b) => {
1201 if (a.id === 'none') {
1202 return -1;
1203 }
1204 return a.label.localeCompare(b.label);
1205 });
1206 (_a = this.quickInputService) === null || _a === void 0 ? void 0 : _a.showQuickPick(items, {
1207 placeholder: nls_1.nls.localizeByDefault('Select File Icon Theme'),
1208 activeItem: items.find(item => item.id === (resetTo === null || resetTo === void 0 ? void 0 : resetTo.id)),
1209 onDidChangeSelection: (_, selectedItems) => {
1210 resetTo = undefined;
1211 setTheme(selectedItems[0].id, true);
1212 },
1213 onDidChangeActive: (_, activeItems) => {
1214 previewTheme(activeItems[0].id, false);
1215 },
1216 onDidHide: () => {
1217 if (resetTo) {
1218 this.iconThemes.setCurrent(resetTo, false);
1219 }
1220 }
1221 });
1222 }
1223 selectColorTheme() {
1224 var _a;
1225 let resetTo = this.themeService.getCurrentTheme().id;
1226 const setTheme = (id, persist) => this.themeService.setCurrentTheme(id, persist);
1227 const previewTheme = debounce(setTheme, 200);
1228 const itemsByTheme = { light: [], dark: [], hc: [], hcLight: [] };
1229 const lightThemesSeparator = nls_1.nls.localizeByDefault('light themes');
1230 const darkThemesSeparator = nls_1.nls.localizeByDefault('dark themes');
1231 const highContrastThemesSeparator = nls_1.nls.localizeByDefault('high contrast themes');
1232 for (const theme of this.themeService.getThemes().sort((a, b) => a.label.localeCompare(b.label))) {
1233 const themeItems = itemsByTheme[theme.type];
1234 // Add a separator for the first item in the respective group.
1235 // High Contrast Themes despite dark or light should be grouped together.
1236 if (themeItems.length === 0 && theme.type !== 'hcLight') {
1237 let label = '';
1238 if (theme.type === 'light') {
1239 label = lightThemesSeparator;
1240 }
1241 else if (theme.type === 'dark') {
1242 label = darkThemesSeparator;
1243 }
1244 else {
1245 label = highContrastThemesSeparator;
1246 }
1247 themeItems.push({
1248 type: 'separator',
1249 label
1250 });
1251 }
1252 themeItems.push({
1253 id: theme.id,
1254 label: theme.label,
1255 description: theme.description,
1256 });
1257 }
1258 const items = [...itemsByTheme.light, ...itemsByTheme.dark, ...itemsByTheme.hc, ...itemsByTheme.hcLight];
1259 (_a = this.quickInputService) === null || _a === void 0 ? void 0 : _a.showQuickPick(items, {
1260 placeholder: nls_1.nls.localizeByDefault('Select Color Theme (Up/Down Keys to Preview)'),
1261 activeItem: items.find(item => item.id === resetTo),
1262 onDidChangeSelection: (_, selectedItems) => {
1263 resetTo = undefined;
1264 setTheme(selectedItems[0].id, true);
1265 },
1266 onDidChangeActive: (_, activeItems) => {
1267 previewTheme(activeItems[0].id, false);
1268 },
1269 onDidHide: () => {
1270 if (resetTo) {
1271 setTheme(resetTo, false);
1272 }
1273 }
1274 });
1275 }
1276 /**
1277 * @todo https://github.com/eclipse-theia/theia/issues/12824
1278 */
1279 async showNewFilePicker() {
1280 const newFileContributions = this.menuRegistry.getMenuNode(CommonMenus.FILE_NEW_CONTRIBUTIONS); // Add menus
1281 const items = [
1282 {
1283 label: nls_1.nls.localizeByDefault('New Text File'),
1284 description: nls_1.nls.localizeByDefault('Built-in'),
1285 execute: async () => this.commandRegistry.executeCommand(CommonCommands.NEW_UNTITLED_TEXT_FILE.id)
1286 },
1287 ...newFileContributions.children
1288 .flatMap(node => {
1289 if (node.children && node.children.length > 0) {
1290 return node.children;
1291 }
1292 return node;
1293 })
1294 .filter(node => node.role || node.command)
1295 .map(node => {
1296 if (node.role) {
1297 return { type: 'separator' };
1298 }
1299 const command = this.commandRegistry.getCommand(node.command);
1300 return {
1301 label: command.label,
1302 execute: async () => this.commandRegistry.executeCommand(command.id)
1303 };
1304 })
1305 ];
1306 const CREATE_NEW_FILE_ITEM_ID = 'create-new-file';
1307 const hasNewFileHandler = this.commandRegistry.getActiveHandler(CommonCommands.NEW_FILE.id) !== undefined;
1308 // Create a "Create New File" item only if there is a NEW_FILE command handler.
1309 const createNewFileItem = hasNewFileHandler ? {
1310 id: CREATE_NEW_FILE_ITEM_ID,
1311 label: nls_1.nls.localizeByDefault('Create New File ({0})'),
1312 description: nls_1.nls.localizeByDefault('Built-in'),
1313 execute: async () => {
1314 if (createNewFileItem === null || createNewFileItem === void 0 ? void 0 : createNewFileItem.value) {
1315 const parent = await this.workingDirProvider.getUserWorkingDir();
1316 // Exec NEW_FILE command with the file name and parent dir as arguments
1317 return this.commandRegistry.executeCommand(CommonCommands.NEW_FILE.id, createNewFileItem.value, parent);
1318 }
1319 }
1320 } : undefined;
1321 this.quickInputService.showQuickPick(items, {
1322 title: nls_1.nls.localizeByDefault('New File...'),
1323 placeholder: nls_1.nls.localizeByDefault('Select File Type or Enter File Name...'),
1324 canSelectMany: false,
1325 onDidChangeValue: picker => {
1326 if (createNewFileItem === undefined) {
1327 return;
1328 }
1329 // Dynamically show or hide the "Create New File" item based on the input value.
1330 if (picker.value) {
1331 createNewFileItem.alwaysShow = true;
1332 createNewFileItem.value = picker.value;
1333 createNewFileItem.label = nls_1.nls.localizeByDefault('Create New File ({0})', picker.value);
1334 picker.items = [...items, createNewFileItem];
1335 }
1336 else {
1337 createNewFileItem.alwaysShow = false;
1338 createNewFileItem.value = undefined;
1339 picker.items = items.filter(item => item !== createNewFileItem);
1340 }
1341 }
1342 });
1343 }
1344 registerColors(colors) {
1345 colors.register(
1346 // Base Colors should be aligned with https://code.visualstudio.com/api/references/theme-color#base-colors
1347 // if not yet contributed by Monaco, check runtime css variables to learn
1348 { id: 'selection.background', defaults: { dark: '#217daf', light: '#c0dbf1' }, description: 'Overall border color for focused elements. This color is only used if not overridden by a component.' }, { id: 'icon.foreground', defaults: { dark: '#C5C5C5', light: '#424242', hcDark: '#FFFFFF', hcLight: '#292929' }, description: 'The default color for icons in the workbench.' }, { id: 'sash.hoverBorder', defaults: { dark: color_1.Color.transparent('focusBorder', 0.99), light: color_1.Color.transparent('focusBorder', 0.99), hcDark: 'focusBorder', hcLight: 'focusBorder' }, description: 'The hover border color for draggable sashes.' }, { id: 'sash.activeBorder', defaults: { dark: 'focusBorder', light: 'focusBorder', hcDark: 'focusBorder' }, description: 'The active border color for draggable sashes.' },
1349 // Window border colors should be aligned with https://code.visualstudio.com/api/references/theme-color#window-border
1350 {
1351 id: 'window.activeBorder', defaults: {
1352 hcDark: 'contrastBorder',
1353 hcLight: 'contrastBorder'
1354 }, description: 'The color used for the border of the window when it is active.'
1355 }, {
1356 id: 'window.inactiveBorder', defaults: {
1357 hcDark: 'contrastBorder',
1358 hcLight: 'contrastBorder'
1359 },
1360 description: 'The color used for the border of the window when it is inactive.'
1361 },
1362 // Buttons should be aligned with https://code.visualstudio.com/api/references/theme-color#button-control
1363 // if not yet contributed by Monaco, check runtime css variables to learn
1364 { id: 'button.foreground', defaults: { dark: color_1.Color.white, light: color_1.Color.white, hcDark: color_1.Color.white, hcLight: color_1.Color.white }, description: 'Button foreground color.' }, { id: 'button.background', defaults: { dark: '#0E639C', light: '#007ACC', hcDark: undefined, hcLight: '#0F4A85' }, description: 'Button background color.' }, { id: 'button.hoverBackground', defaults: { dark: color_1.Color.lighten('button.background', 0.2), light: color_1.Color.darken('button.background', 0.2) }, description: 'Button background color when hovering.' },
1365 // Activity Bar colors should be aligned with https://code.visualstudio.com/api/references/theme-color#activity-bar
1366 {
1367 id: 'activityBar.background', defaults: {
1368 dark: '#333333',
1369 light: '#2C2C2C',
1370 hcDark: '#000000',
1371 hcLight: '#FFFFFF'
1372 }, description: 'Activity bar background color. The activity bar is showing on the far left or right and allows to switch between views of the side bar.'
1373 }, {
1374 id: 'activityBar.foreground', defaults: {
1375 dark: color_1.Color.white,
1376 light: color_1.Color.white,
1377 hcDark: color_1.Color.white,
1378 hcLight: 'editor.foreground'
1379 }, description: 'Activity bar item foreground color when it is active. The activity bar is showing on the far left or right and allows to switch between views of the side bar.',
1380 }, {
1381 id: 'activityBar.inactiveForeground', defaults: {
1382 dark: color_1.Color.transparent('activityBar.foreground', 0.4),
1383 light: color_1.Color.transparent('activityBar.foreground', 0.4),
1384 hcDark: color_1.Color.white,
1385 hcLight: 'editor.foreground'
1386 }, description: 'Activity bar item foreground color when it is inactive. The activity bar is showing on the far left or right and allows to switch between views of the side bar.'
1387 }, {
1388 id: 'activityBar.border', defaults: {
1389 hcDark: 'contrastBorder',
1390 hcLight: 'contrastBorder'
1391 }, description: 'Activity bar border color separating to the side bar. The activity bar is showing on the far left or right and allows to switch between views of the side bar.'
1392 }, {
1393 id: 'activityBar.activeBorder', defaults: {
1394 dark: 'activityBar.foreground',
1395 light: 'activityBar.foreground',
1396 hcLight: 'contrastBorder'
1397 }, description: 'Activity bar border color for the active item. The activity bar is showing on the far left or right and allows to switch between views of the side bar.'
1398 }, {
1399 id: 'activityBar.activeFocusBorder', defaults: {
1400 hcLight: '#B5200D'
1401 }, description: 'Activity bar focus border color for the active item. The activity bar is showing on the far left or right and allows to switch between views of the side bar.'
1402 }, { id: 'activityBar.activeBackground', description: 'Activity bar background color for the active item. The activity bar is showing on the far left or right and allows to switch between views of the side bar.' }, {
1403 id: 'activityBar.dropBackground', defaults: {
1404 dark: color_1.Color.transparent('#ffffff', 0.12),
1405 light: color_1.Color.transparent('#ffffff', 0.12),
1406 hcDark: color_1.Color.transparent('#ffffff', 0.12),
1407 }, description: 'Drag and drop feedback color for the activity bar items. The color should have transparency so that the activity bar entries can still shine through. The activity bar is showing on the far left or right and allows to switch between views of the side bar.'
1408 }, {
1409 id: 'activityBarBadge.background', defaults: {
1410 dark: '#007ACC',
1411 light: '#007ACC',
1412 hcDark: '#000000',
1413 hcLight: '#0F4A85'
1414 }, description: 'Activity notification badge background color. The activity bar is showing on the far left or right and allows to switch between views of the side bar.'
1415 }, {
1416 id: 'activityBarBadge.foreground', defaults: {
1417 dark: color_1.Color.white,
1418 light: color_1.Color.white,
1419 hcDark: color_1.Color.white,
1420 hcLight: color_1.Color.white
1421 }, description: 'Activity notification badge foreground color. The activity bar is showing on the far left or right and allows to switch between views of the side bar.'
1422 },
1423 // Side Bar should be aligned with https://code.visualstudio.com/api/references/theme-color#side-bar
1424 // if not yet contributed by Monaco, check runtime css variables to learn
1425 { id: 'sideBar.background', defaults: { dark: '#252526', light: '#F3F3F3', hcDark: '#000000', hcLight: '#FFFFFF' }, description: 'Side bar background color. The side bar is the container for views like explorer and search.' }, { id: 'sideBar.foreground', description: 'Side bar foreground color. The side bar is the container for views like explorer and search.' }, { id: 'sideBarSectionHeader.background', defaults: { dark: '#80808033', light: '#80808033' }, description: 'Side bar section header background color. The side bar is the container for views like explorer and search.' }, { id: 'sideBarSectionHeader.foreground', description: 'Side bar foreground color. The side bar is the container for views like explorer and search.' }, { id: 'sideBarSectionHeader.border', defaults: { dark: 'contrastBorder', light: 'contrastBorder', hcDark: 'contrastBorder', hcLight: 'contrastBorder' }, description: 'Side bar section header border color. The side bar is the container for views like explorer and search.' },
1426 // Lists and Trees colors should be aligned with https://code.visualstudio.com/api/references/theme-color#lists-and-trees
1427 // if not yet contributed by Monaco, check runtime css variables to learn.
1428 // TODO: Following are not yet supported/no respective elements in theia:
1429 // list.focusBackground, list.focusForeground, list.inactiveFocusBackground, list.filterMatchBorder,
1430 // list.dropBackground, listFilterWidget.outline, listFilterWidget.noMatchesOutline
1431 // list.invalidItemForeground => tree node needs an respective class
1432 { id: 'list.activeSelectionBackground', defaults: { dark: '#094771', light: '#0074E8', hcLight: color_1.Color.transparent('#0F4A85', 0.1) }, description: 'List/Tree background color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.' }, { id: 'list.activeSelectionForeground', defaults: { dark: '#FFF', light: '#FFF' }, description: 'List/Tree foreground color for the selected item when the list/tree is active. An active list/tree has keyboard focus, an inactive does not.' }, { id: 'list.inactiveSelectionBackground', defaults: { dark: '#37373D', light: '#E4E6F1', hcLight: color_1.Color.transparent('#0F4A85', 0.1) }, description: 'List/Tree background color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.' }, { id: 'list.inactiveSelectionForeground', description: 'List/Tree foreground color for the selected item when the list/tree is inactive. An active list/tree has keyboard focus, an inactive does not.' }, { id: 'list.hoverBackground', defaults: { dark: '#2A2D2E', light: '#F0F0F0', hcLight: color_1.Color.transparent('#0F4A85', 0.1) }, description: 'List/Tree background when hovering over items using the mouse.' }, { id: 'list.hoverForeground', description: 'List/Tree foreground when hovering over items using the mouse.' }, { id: 'list.errorForeground', defaults: { dark: '#F88070', light: '#B01011' }, description: 'Foreground color of list items containing errors.' }, { id: 'list.warningForeground', defaults: { dark: '#CCA700', light: '#855F00' }, description: 'Foreground color of list items containing warnings.' }, { id: 'list.filterMatchBackground', defaults: { dark: 'editor.findMatchHighlightBackground', light: 'editor.findMatchHighlightBackground' }, description: 'Background color of the filtered match.' }, { id: 'list.highlightForeground', defaults: { dark: '#18A3FF', light: '#0066BF', hcDark: 'focusBorder', hcLight: 'focusBorder' }, description: 'List/Tree foreground color of the match highlights when searching inside the list/tree.' }, { id: 'list.focusHighlightForeground', defaults: { dark: 'list.highlightForeground', light: 'list.activeSelectionForeground', hcDark: 'list.highlightForeground', hcLight: 'list.highlightForeground' }, description: 'List/Tree foreground color of the match highlights on actively focused items when searching inside the list/tree.' }, { id: 'tree.inactiveIndentGuidesStroke', defaults: { dark: color_1.Color.transparent('tree.indentGuidesStroke', 0.4), light: color_1.Color.transparent('tree.indentGuidesStroke', 0.4), hcDark: color_1.Color.transparent('tree.indentGuidesStroke', 0.4) }, description: 'Tree stroke color for the inactive indentation guides.' },
1433 // Editor Group & Tabs colors should be aligned with https://code.visualstudio.com/api/references/theme-color#editor-groups-tabs
1434 {
1435 id: 'editorGroup.border',
1436 defaults: {
1437 dark: '#444444',
1438 light: '#E7E7E7',
1439 hcDark: 'contrastBorder',
1440 hcLight: 'contrastBorder'
1441 },
1442 description: 'Color to separate multiple editor groups from each other. Editor groups are the containers of editors.'
1443 }, {
1444 id: 'editorGroup.dropBackground',
1445 defaults: {
1446 dark: color_1.Color.transparent('#53595D', 0.5),
1447 light: color_1.Color.transparent('#2677CB', 0.18),
1448 hcLight: color_1.Color.transparent('#0F4A85', 0.50)
1449 },
1450 description: 'Background color when dragging editors around. The color should have transparency so that the editor contents can still shine through.'
1451 }, {
1452 id: 'editorGroupHeader.tabsBackground',
1453 defaults: {
1454 dark: '#252526',
1455 light: '#F3F3F3',
1456 },
1457 description: 'Background color of the editor group title header when tabs are enabled. Editor groups are the containers of editors.'
1458 }, {
1459 id: 'editorGroupHeader.tabsBorder',
1460 defaults: {
1461 hcDark: 'contrastBorder'
1462 },
1463 description: 'Border color of the editor group title header when tabs are enabled. Editor groups are the containers of editors.'
1464 }, {
1465 id: 'tab.activeBackground',
1466 defaults: {
1467 dark: 'editor.background',
1468 light: 'editor.background',
1469 hcDark: 'editor.background',
1470 hcLight: 'editor.background'
1471 },
1472 description: 'Active tab background color. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.'
1473 }, {
1474 id: 'tab.unfocusedActiveBackground',
1475 defaults: {
1476 dark: 'tab.activeBackground',
1477 light: 'tab.activeBackground',
1478 hcDark: 'tab.activeBackground',
1479 hcLight: 'tab.activeBackground'
1480 },
1481 description: 'Active tab background color in an unfocused group. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.'
1482 }, {
1483 id: 'tab.inactiveBackground',
1484 defaults: {
1485 dark: '#2D2D2D',
1486 light: '#ECECEC'
1487 },
1488 description: 'Inactive tab background color. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.'
1489 }, {
1490 id: 'tab.activeForeground',
1491 defaults: {
1492 dark: color_1.Color.white,
1493 light: '#333333',
1494 hcDark: color_1.Color.white,
1495 hcLight: '#292929'
1496 }, description: 'Active tab foreground color in an active group. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.'
1497 }, {
1498 id: 'tab.inactiveForeground', defaults: {
1499 dark: color_1.Color.transparent('tab.activeForeground', 0.5),
1500 light: color_1.Color.transparent('tab.activeForeground', 0.7),
1501 hcDark: color_1.Color.white,
1502 hcLight: '#292929'
1503 }, description: 'Inactive tab foreground color in an active group. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.'
1504 }, {
1505 id: 'tab.unfocusedActiveForeground', defaults: {
1506 dark: color_1.Color.transparent('tab.activeForeground', 0.5),
1507 light: color_1.Color.transparent('tab.activeForeground', 0.7),
1508 hcDark: color_1.Color.white,
1509 hcLight: '#292929'
1510 }, description: 'Active tab foreground color in an unfocused group. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.'
1511 }, {
1512 id: 'tab.unfocusedInactiveForeground', defaults: {
1513 dark: color_1.Color.transparent('tab.inactiveForeground', 0.5),
1514 light: color_1.Color.transparent('tab.inactiveForeground', 0.5),
1515 hcDark: color_1.Color.white,
1516 hcLight: '#292929'
1517 }, description: 'Inactive tab foreground color in an unfocused group. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.'
1518 }, {
1519 id: 'tab.border', defaults: {
1520 dark: '#252526',
1521 light: '#F3F3F3',
1522 hcDark: 'contrastBorder',
1523 hcLight: 'contrastBorder'
1524 }, description: 'Border to separate tabs from each other. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.'
1525 }, {
1526 id: 'tab.activeBorder',
1527 description: 'Border on the bottom of an active tab. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.'
1528 }, {
1529 id: 'tab.unfocusedActiveBorder',
1530 defaults: {
1531 dark: color_1.Color.transparent('tab.activeBorder', 0.5),
1532 light: color_1.Color.transparent('tab.activeBorder', 0.7)
1533 },
1534 description: 'Border on the bottom of an active tab in an unfocused group. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.'
1535 }, {
1536 id: 'tab.activeBorderTop',
1537 defaults: {
1538 hcLight: '#B5200D'
1539 },
1540 description: 'Border to the top of an active tab. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.'
1541 }, {
1542 id: 'tab.unfocusedActiveBorderTop', defaults: {
1543 dark: color_1.Color.transparent('tab.activeBorderTop', 0.5),
1544 light: color_1.Color.transparent('tab.activeBorderTop', 0.7),
1545 hcLight: '#B5200D'
1546 }, description: 'Border to the top of an active tab in an unfocused group. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.'
1547 }, {
1548 id: 'tab.hoverBackground',
1549 description: 'Tab background color when hovering. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.'
1550 }, {
1551 id: 'tab.unfocusedHoverBackground', defaults: {
1552 dark: color_1.Color.transparent('tab.hoverBackground', 0.5),
1553 light: color_1.Color.transparent('tab.hoverBackground', 0.7)
1554 }, description: 'Tab background color in an unfocused group when hovering. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.'
1555 }, {
1556 id: 'tab.hoverBorder',
1557 description: 'Border to highlight tabs when hovering. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.'
1558 }, {
1559 id: 'tab.unfocusedHoverBorder', defaults: {
1560 dark: color_1.Color.transparent('tab.hoverBorder', 0.5),
1561 light: color_1.Color.transparent('tab.hoverBorder', 0.7),
1562 hcLight: 'contrastBorder'
1563 }, description: 'Border to highlight tabs in an unfocused group when hovering. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.'
1564 }, {
1565 id: 'tab.activeModifiedBorder', defaults: {
1566 dark: '#3399CC',
1567 light: '#33AAEE',
1568 hcLight: 'contrastBorder'
1569 }, description: 'Border on the top of modified (dirty) active tabs in an active group. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.'
1570 }, {
1571 id: 'tab.inactiveModifiedBorder', defaults: {
1572 dark: color_1.Color.transparent('tab.activeModifiedBorder', 0.5),
1573 light: color_1.Color.transparent('tab.activeModifiedBorder', 0.5),
1574 hcDark: color_1.Color.white,
1575 hcLight: 'contrastBorder'
1576 }, description: 'Border on the top of modified (dirty) inactive tabs in an active group. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.'
1577 }, {
1578 id: 'tab.unfocusedActiveModifiedBorder', defaults: {
1579 dark: color_1.Color.transparent('tab.activeModifiedBorder', 0.5),
1580 light: color_1.Color.transparent('tab.activeModifiedBorder', 0.7),
1581 hcDark: color_1.Color.white,
1582 hcLight: 'contrastBorder'
1583 }, description: 'Border on the top of modified (dirty) active tabs in an unfocused group. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.'
1584 }, {
1585 id: 'tab.unfocusedInactiveModifiedBorder', defaults: {
1586 dark: color_1.Color.transparent('tab.inactiveModifiedBorder', 0.5),
1587 light: color_1.Color.transparent('tab.inactiveModifiedBorder', 0.5),
1588 hcDark: color_1.Color.white,
1589 hcLight: 'contrastBorder'
1590 }, description: 'Border on the top of modified (dirty) inactive tabs in an unfocused group. Tabs are the containers for editors in the editor area. Multiple tabs can be opened in one editor group. There can be multiple editor groups.'
1591 },
1592 // Status bar colors should be aligned with https://code.visualstudio.com/api/references/theme-color#status-bar-colors
1593 // Not yet supported:
1594 // statusBarItem.prominentForeground, statusBarItem.prominentBackground, statusBarItem.prominentHoverBackground
1595 {
1596 id: 'statusBar.foreground', defaults: {
1597 dark: '#FFFFFF',
1598 light: '#FFFFFF',
1599 hcDark: '#FFFFFF',
1600 hcLight: 'editor.foreground'
1601 }, description: 'Status bar foreground color when a workspace is opened. The status bar is shown in the bottom of the window.'
1602 }, {
1603 id: 'statusBar.background', defaults: {
1604 dark: '#007ACC',
1605 light: '#007ACC'
1606 }, description: 'Status bar background color when a workspace is opened. The status bar is shown in the bottom of the window.'
1607 }, {
1608 id: 'statusBar.noFolderForeground', defaults: {
1609 dark: 'statusBar.foreground',
1610 light: 'statusBar.foreground',
1611 hcDark: 'statusBar.foreground',
1612 hcLight: 'statusBar.foreground'
1613 }, description: 'Status bar foreground color when no folder is opened. The status bar is shown in the bottom of the window.'
1614 }, {
1615 id: 'statusBar.noFolderBackground', defaults: {
1616 dark: '#68217A',
1617 light: '#68217A'
1618 }, description: 'Status bar background color when no folder is opened. The status bar is shown in the bottom of the window.'
1619 }, {
1620 id: 'statusBar.border', defaults: {
1621 hcDark: 'contrastBorder',
1622 hcLight: 'contrastBorder'
1623 }, description: 'Status bar border color separating to the sidebar and editor. The status bar is shown in the bottom of the window.'
1624 }, {
1625 id: 'statusBar.noFolderBorder', defaults: {
1626 dark: 'statusBar.border',
1627 light: 'statusBar.border',
1628 hcDark: 'statusBar.border',
1629 hcLight: 'statusBar.border'
1630 }, description: 'Status bar border color separating to the sidebar and editor when no folder is opened. The status bar is shown in the bottom of the window.'
1631 }, {
1632 id: 'statusBarItem.activeBackground', defaults: {
1633 dark: color_1.Color.rgba(255, 255, 255, 0.18),
1634 light: color_1.Color.rgba(255, 255, 255, 0.18),
1635 hcDark: color_1.Color.rgba(255, 255, 255, 0.18),
1636 hcLight: color_1.Color.rgba(0, 0, 0, 0.18)
1637 }, description: 'Status bar item background color when clicking. The status bar is shown in the bottom of the window.'
1638 }, {
1639 id: 'statusBarItem.hoverBackground', defaults: {
1640 dark: color_1.Color.rgba(255, 255, 255, 0.12),
1641 light: color_1.Color.rgba(255, 255, 255, 0.12),
1642 hcDark: color_1.Color.rgba(255, 255, 255, 0.12),
1643 hcLight: color_1.Color.rgba(0, 0, 0, 0.12)
1644 }, description: 'Status bar item background color when hovering. The status bar is shown in the bottom of the window.'
1645 }, {
1646 id: 'statusBarItem.errorBackground', defaults: {
1647 dark: color_1.Color.darken('errorBackground', 0.4),
1648 light: color_1.Color.darken('errorBackground', 0.4),
1649 hcDark: undefined,
1650 hcLight: '#B5200D'
1651 }, description: 'Status bar error items background color. Error items stand out from other status bar entries to indicate error conditions. The status bar is shown in the bottom of the window.'
1652 }, {
1653 id: 'statusBarItem.errorForeground', defaults: {
1654 dark: color_1.Color.white,
1655 light: color_1.Color.white,
1656 hcDark: color_1.Color.white,
1657 hcLight: color_1.Color.white
1658 }, description: 'Status bar error items foreground color. Error items stand out from other status bar entries to indicate error conditions. The status bar is shown in the bottom of the window.'
1659 }, {
1660 id: 'statusBarItem.warningBackground', defaults: {
1661 dark: color_1.Color.darken('warningBackground', 0.4),
1662 light: color_1.Color.darken('warningBackground', 0.4),
1663 hcDark: undefined,
1664 hcLight: '#895503'
1665 }, description: 'Status bar warning items background color. Warning items stand out from other status bar entries to indicate warning conditions. The status bar is shown in the bottom of the window.'
1666 }, {
1667 id: 'statusBarItem.warningForeground', defaults: {
1668 dark: color_1.Color.white,
1669 light: color_1.Color.white,
1670 hcDark: color_1.Color.white,
1671 hcLight: color_1.Color.white
1672 }, description: 'Status bar warning items foreground color. Warning items stand out from other status bar entries to indicate warning conditions. The status bar is shown in the bottom of the window.'
1673 },
1674 // Quickinput colors should be aligned with https://code.visualstudio.com/api/references/theme-color#quick-picker
1675 // if not yet contributed by Monaco, check runtime css variables to learn.
1676 {
1677 id: 'quickInput.background', defaults: {
1678 dark: 'editorWidget.background',
1679 light: 'editorWidget.background',
1680 hcDark: 'editorWidget.background',
1681 hcLight: 'editorWidget.background'
1682 }, description: 'Quick Input background color. The Quick Input widget is the container for views like the color theme picker.'
1683 }, {
1684 id: 'quickInput.foreground', defaults: {
1685 dark: 'editorWidget.foreground',
1686 light: 'editorWidget.foreground',
1687 hcDark: 'editorWidget.foreground',
1688 hcLight: 'editorWidget.foreground'
1689 }, description: 'Quick Input foreground color. The Quick Input widget is the container for views like the color theme picker.'
1690 }, {
1691 id: 'quickInput.list.focusBackground', defaults: {
1692 dark: undefined,
1693 light: undefined,
1694 hcDark: undefined,
1695 hcLight: undefined
1696 }, description: 'quickInput.list.focusBackground deprecation. Please use quickInputList.focusBackground instead'
1697 }, {
1698 id: 'quickInputList.focusForeground', defaults: {
1699 dark: 'list.activeSelectionForeground',
1700 light: 'list.activeSelectionForeground',
1701 hcDark: 'list.activeSelectionForeground',
1702 hcLight: 'list.activeSelectionForeground'
1703 }, description: 'Quick picker foreground color for the focused item'
1704 }, {
1705 id: 'quickInputList.focusBackground', defaults: {
1706 dark: 'list.activeSelectionBackground',
1707 light: 'list.activeSelectionBackground',
1708 hcDark: undefined
1709 }, description: 'Quick picker background color for the focused item.'
1710 },
1711 // Panel colors should be aligned with https://code.visualstudio.com/api/references/theme-color#panel-colors
1712 {
1713 id: 'panel.background', defaults: {
1714 dark: 'editor.background', light: 'editor.background', hcDark: 'editor.background', hcLight: 'editor.background'
1715 }, description: 'Panel background color. Panels are shown below the editor area and contain views like output and integrated terminal.'
1716 }, {
1717 id: 'panel.border', defaults: {
1718 dark: color_1.Color.transparent('#808080', 0.35), light: color_1.Color.transparent('#808080', 0.35), hcDark: 'contrastBorder', hcLight: 'contrastBorder'
1719 }, description: 'Panel border color to separate the panel from the editor. Panels are shown below the editor area and contain views like output and integrated terminal.'
1720 }, {
1721 id: 'panel.dropBackground', defaults: {
1722 dark: color_1.Color.rgba(255, 255, 255, 0.12), light: color_1.Color.transparent('#2677CB', 0.18), hcDark: color_1.Color.rgba(255, 255, 255, 0.12)
1723 }, description: 'Drag and drop feedback color for the panel title items. The color should have transparency so that the panel entries can still shine through. Panels are shown below the editor area and contain views like output and integrated terminal.'
1724 }, {
1725 id: 'panelTitle.activeForeground', defaults: {
1726 dark: '#E7E7E7', light: '#424242', hcDark: color_1.Color.white, hcLight: 'editor.foreground'
1727 }, description: 'Title color for the active panel. Panels are shown below the editor area and contain views like output and integrated terminal.'
1728 }, {
1729 id: 'panelTitle.inactiveForeground', defaults: {
1730 dark: color_1.Color.transparent('panelTitle.activeForeground', 0.6), light: color_1.Color.transparent('panelTitle.activeForeground', 0.75), hcDark: color_1.Color.white, hcLight: 'editor.foreground'
1731 }, description: 'Title color for the inactive panel. Panels are shown below the editor area and contain views like output and integrated terminal.'
1732 }, {
1733 id: 'panelTitle.activeBorder', defaults: {
1734 dark: 'panelTitle.activeForeground', light: 'panelTitle.activeForeground', hcDark: 'contrastBorder', hcLight: '#B5200D'
1735 }, description: 'Border color for the active panel title. Panels are shown below the editor area and contain views like output and integrated terminal.'
1736 }, {
1737 id: 'panelInput.border', defaults: { light: '#ddd' },
1738 description: 'Input box border for inputs in the panel.'
1739 }, {
1740 id: 'imagePreview.border', defaults: {
1741 dark: color_1.Color.transparent('#808080', 0.35), light: color_1.Color.transparent('#808080', 0.35), hcDark: 'contrastBorder', hcLight: 'contrastBorder'
1742 }, description: 'Border color for image in image preview.'
1743 },
1744 // Title Bar colors should be aligned with https://code.visualstudio.com/api/references/theme-color#title-bar-colors
1745 {
1746 id: 'titleBar.activeForeground', defaults: {
1747 dark: '#CCCCCC',
1748 light: '#333333',
1749 hcDark: '#FFFFFF',
1750 hcLight: '#292929'
1751 }, description: 'Title bar foreground when the window is active. Note that this color is currently only supported on macOS.'
1752 }, {
1753 id: 'titleBar.inactiveForeground', defaults: {
1754 dark: color_1.Color.transparent('titleBar.activeForeground', 0.6),
1755 light: color_1.Color.transparent('titleBar.activeForeground', 0.6),
1756 hcLight: '#292929'
1757 }, description: 'Title bar foreground when the window is inactive. Note that this color is currently only supported on macOS.'
1758 }, {
1759 id: 'titleBar.activeBackground', defaults: {
1760 dark: '#3C3C3C',
1761 light: '#DDDDDD',
1762 hcDark: '#000000',
1763 hcLight: '#FFFFFF'
1764 }, description: 'Title bar background when the window is active. Note that this color is currently only supported on macOS.'
1765 }, {
1766 id: 'titleBar.inactiveBackground', defaults: {
1767 dark: color_1.Color.transparent('titleBar.activeBackground', 0.6),
1768 light: color_1.Color.transparent('titleBar.activeBackground', 0.6)
1769 }, description: 'Title bar background when the window is inactive. Note that this color is currently only supported on macOS.'
1770 }, {
1771 id: 'titleBar.border', defaults: {
1772 hcDark: 'contrastBorder',
1773 hcLight: 'contrastBorder'
1774 }, description: 'Title bar border color. Note that this color is currently only supported on macOS.'
1775 },
1776 // Menu Bar colors should be aligned with https://code.visualstudio.com/api/references/theme-color#menu-bar-colors
1777 {
1778 id: 'menubar.selectionForeground', defaults: {
1779 dark: 'titleBar.activeForeground',
1780 light: 'titleBar.activeForeground',
1781 hcDark: 'titleBar.activeForeground',
1782 hcLight: 'titleBar.activeForeground'
1783 }, description: 'Foreground color of the selected menu item in the menubar.'
1784 }, {
1785 id: 'menubar.selectionBackground', defaults: {
1786 dark: 'toolbar.hoverBackground',
1787 light: 'toolbar.hoverBackground'
1788 }, description: 'Background color of the selected menu item in the menubar.'
1789 }, {
1790 id: 'menubar.selectionBorder', defaults: {
1791 hcDark: 'activeContrastBorder', hcLight: 'activeContrastBorder'
1792 }, description: 'Border color of the selected menu item in the menubar.'
1793 }, {
1794 id: 'menu.border', defaults: {
1795 hcDark: 'contrastBorder', hcLight: 'contrastBorder'
1796 }, description: 'Border color of menus.'
1797 }, {
1798 id: 'menu.foreground', defaults: {
1799 dark: 'dropdown.foreground', light: 'foreground', hcDark: 'dropdown.foreground', hcLight: 'dropdown.foreground'
1800 },
1801 description: 'Foreground color of menu items.'
1802 }, {
1803 id: 'menu.background', defaults: {
1804 dark: 'dropdown.background', light: 'dropdown.background', hcDark: 'dropdown.background', hcLight: 'dropdown.background'
1805 }, description: 'Background color of menu items.'
1806 }, {
1807 id: 'menu.selectionForeground', defaults: {
1808 dark: 'list.activeSelectionForeground', light: 'list.activeSelectionForeground', hcDark: 'list.activeSelectionForeground', hcLight: 'list.activeSelectionForeground'
1809 }, description: 'Foreground color of the selected menu item in menus.'
1810 }, {
1811 id: 'menu.selectionBackground', defaults: {
1812 dark: 'list.activeSelectionBackground', light: 'list.activeSelectionBackground', hcDark: 'list.activeSelectionBackground', hcLight: 'list.activeSelectionBackground'
1813 },
1814 description: 'Background color of the selected menu item in menus.'
1815 }, {
1816 id: 'menu.selectionBorder', defaults: {
1817 hcDark: 'activeContrastBorder', hcLight: 'activeContrastBorder'
1818 }, description: 'Border color of the selected menu item in menus.'
1819 }, {
1820 id: 'menu.separatorBackground', defaults: {
1821 dark: '#BBBBBB', light: '#888888', hcDark: 'contrastBorder', hcLight: 'contrastBorder'
1822 },
1823 description: 'Color of a separator menu item in menus.'
1824 },
1825 // Welcome Page colors should be aligned with https://code.visualstudio.com/api/references/theme-color#welcome-page
1826 { id: 'welcomePage.background', description: 'Background color for the Welcome page.' }, { id: 'welcomePage.buttonBackground', defaults: { dark: color_1.Color.rgba(0, 0, 0, .2), light: color_1.Color.rgba(0, 0, 0, .04), hcDark: color_1.Color.black, hcLight: color_1.Color.white }, description: 'Background color for the buttons on the Welcome page.' }, { id: 'welcomePage.buttonHoverBackground', defaults: { dark: color_1.Color.rgba(200, 235, 255, .072), light: color_1.Color.rgba(0, 0, 0, .10) }, description: 'Hover background color for the buttons on the Welcome page.' }, { id: 'walkThrough.embeddedEditorBackground', defaults: { dark: color_1.Color.rgba(0, 0, 0, .4), light: '#f4f4f4' }, description: 'Background color for the embedded editors on the Interactive Playground.' },
1827 // Dropdown colors should be aligned with https://code.visualstudio.com/api/references/theme-color#dropdown-control
1828 {
1829 id: 'dropdown.background', defaults: {
1830 light: color_1.Color.white,
1831 dark: '#3C3C3C',
1832 hcDark: color_1.Color.black,
1833 hcLight: color_1.Color.white
1834 }, description: 'Dropdown background.'
1835 }, {
1836 id: 'dropdown.listBackground', defaults: {
1837 hcDark: color_1.Color.black,
1838 hcLight: color_1.Color.white
1839 }, description: 'Dropdown list background.'
1840 }, {
1841 id: 'dropdown.foreground', defaults: {
1842 dark: '#F0F0F0',
1843 hcDark: color_1.Color.white,
1844 hcLight: 'foreground'
1845 }, description: 'Dropdown foreground.'
1846 }, {
1847 id: 'dropdown.border', defaults: {
1848 light: '#CECECE',
1849 dark: 'dropdown.background',
1850 hcDark: 'contrastBorder',
1851 hcLight: 'contrastBorder'
1852 }, description: 'Dropdown border.'
1853 },
1854 // Settings Editor colors should be aligned with https://code.visualstudio.com/api/references/theme-color#settings-editor-colors
1855 {
1856 id: 'settings.headerForeground', defaults: {
1857 light: '#444444', dark: '#e7e7e7', hcDark: '#ffffff', hcLight: '#292929'
1858 }, description: 'The foreground color for a section header or active title.'
1859 }, {
1860 id: 'settings.modifiedItemIndicator', defaults: {
1861 light: color_1.Color.rgba(102, 175, 224),
1862 dark: color_1.Color.rgba(12, 125, 157),
1863 hcDark: color_1.Color.rgba(0, 73, 122),
1864 hcLight: color_1.Color.rgba(102, 175, 224)
1865 }, description: 'The color of the modified setting indicator.'
1866 }, {
1867 id: 'settings.dropdownBackground', defaults: {
1868 dark: 'dropdown.background', light: 'dropdown.background', hcDark: 'dropdown.background', hcLight: 'dropdown.background'
1869 },
1870 description: 'Settings editor dropdown background.'
1871 }, {
1872 id: 'settings.dropdownForeground', defaults: {
1873 dark: 'dropdown.foreground', light: 'dropdown.foreground', hcDark: 'dropdown.foreground', hcLight: 'dropdown.foreground'
1874 }, description: 'Settings editor dropdown foreground.'
1875 }, {
1876 id: 'settings.dropdownBorder', defaults: {
1877 dark: 'dropdown.border', light: 'dropdown.border', hcDark: 'dropdown.border', hcLight: 'dropdown.border'
1878 }, description: 'Settings editor dropdown border.'
1879 }, {
1880 id: 'settings.dropdownListBorder', defaults: {
1881 dark: 'editorWidget.border', light: 'editorWidget.border', hcDark: 'editorWidget.border', hcLight: 'editorWidget.border'
1882 }, description: 'Settings editor dropdown list border. This surrounds the options and separates the options from the description.'
1883 }, {
1884 id: 'settings.checkboxBackground', defaults: {
1885 dark: 'checkbox.background', light: 'checkbox.background', hcDark: 'checkbox.background', hcLight: 'checkbox.background'
1886 }, description: 'Settings editor checkbox background.'
1887 }, {
1888 id: 'settings.checkboxForeground', defaults: {
1889 dark: 'checkbox.foreground', light: 'checkbox.foreground', hcDark: 'checkbox.foreground', hcLight: 'checkbox.foreground'
1890 }, description: 'Settings editor checkbox foreground.'
1891 }, {
1892 id: 'settings.checkboxBorder', defaults: {
1893 dark: 'checkbox.border', light: 'checkbox.border', hcDark: 'checkbox.border', hcLight: 'checkbox.border'
1894 }, description: 'Settings editor checkbox border.'
1895 }, {
1896 id: 'settings.textInputBackground', defaults: {
1897 dark: 'input.background', light: 'input.background', hcDark: 'input.background', hcLight: 'input.background'
1898 }, description: 'Settings editor text input box background.'
1899 }, {
1900 id: 'settings.textInputForeground', defaults: {
1901 dark: 'input.foreground', light: 'input.foreground', hcDark: 'input.foreground', hcLight: 'input.foreground'
1902 }, description: 'Settings editor text input box foreground.'
1903 }, {
1904 id: 'settings.textInputBorder', defaults: {
1905 dark: 'input.border', light: 'input.border', hcDark: 'input.border', hcLight: 'input.background'
1906 }, description: 'Settings editor text input box border.'
1907 }, {
1908 id: 'settings.numberInputBackground', defaults: {
1909 dark: 'input.background', light: 'input.background', hcDark: 'input.background', hcLight: 'input.background'
1910 }, description: 'Settings editor number input box background.'
1911 }, {
1912 id: 'settings.numberInputForeground', defaults: {
1913 dark: 'input.foreground', light: 'input.foreground', hcDark: 'input.foreground', hcLight: 'input.foreground'
1914 }, description: 'Settings editor number input box foreground.'
1915 }, {
1916 id: 'settings.numberInputBorder', defaults: {
1917 dark: 'input.border', light: 'input.border', hcDark: 'input.border', hcLight: 'input.border'
1918 }, description: 'Settings editor number input box border.'
1919 }, {
1920 id: 'settings.focusedRowBackground', defaults: {
1921 dark: color_1.Color.transparent('#808080', 0.14),
1922 light: color_1.Color.transparent('#808080', 0.03),
1923 hcDark: undefined,
1924 hcLight: undefined
1925 }, description: 'The background color of a settings row when focused.'
1926 }, {
1927 id: 'settings.rowHoverBackground', defaults: {
1928 dark: color_1.Color.transparent('#808080', 0.07),
1929 light: color_1.Color.transparent('#808080', 0.05),
1930 hcDark: undefined,
1931 hcLight: undefined
1932 }, description: 'The background color of a settings row when hovered.'
1933 }, {
1934 id: 'settings.focusedRowBorder', defaults: {
1935 dark: color_1.Color.rgba(255, 255, 255, 0.12),
1936 light: color_1.Color.rgba(0, 0, 0, 0.12),
1937 hcDark: 'focusBorder',
1938 hcLight: 'focusBorder'
1939 }, description: "The color of the row's top and bottom border when the row is focused."
1940 },
1941 // Toolbar Action colors should be aligned with https://code.visualstudio.com/api/references/theme-color#action-colors
1942 {
1943 id: 'toolbar.hoverBackground', defaults: {
1944 dark: '#5a5d5e50', light: '#b8b8b850', hcDark: undefined, hcLight: undefined
1945 }, description: 'Toolbar background when hovering over actions using the mouse.'
1946 },
1947 // Theia Variable colors
1948 {
1949 id: 'variable.name.color', defaults: {
1950 dark: '#C586C0',
1951 light: '#9B46B0',
1952 hcDark: '#C586C0'
1953 },
1954 description: 'Color of a variable name.'
1955 }, {
1956 id: 'variable.value.color', defaults: {
1957 dark: color_1.Color.rgba(204, 204, 204, 0.6),
1958 light: color_1.Color.rgba(108, 108, 108, 0.8),
1959 hcDark: color_1.Color.rgba(204, 204, 204, 0.6)
1960 },
1961 description: 'Color of a variable value.'
1962 }, {
1963 id: 'variable.number.variable.color', defaults: {
1964 dark: '#B5CEA8',
1965 light: '#09885A',
1966 hcDark: '#B5CEA8'
1967 },
1968 description: 'Value color of a number variable'
1969 }, {
1970 id: 'variable.boolean.variable.color', defaults: {
1971 dark: '#4E94CE',
1972 light: '#0000FF',
1973 hcDark: '#4E94CE'
1974 },
1975 description: 'Value color of a boolean variable'
1976 }, {
1977 id: 'variable.string.variable.color', defaults: {
1978 dark: '#CE9178',
1979 light: '#A31515',
1980 hcDark: '#CE9178'
1981 },
1982 description: 'Value color of a string variable'
1983 },
1984 // Theia ANSI colors
1985 {
1986 id: 'ansi.black.color', defaults: {
1987 dark: '#A0A0A0',
1988 light: color_1.Color.rgba(128, 128, 128),
1989 hcDark: '#A0A0A0'
1990 },
1991 description: 'ANSI black color'
1992 }, {
1993 id: 'ansi.red.color', defaults: {
1994 dark: '#A74747',
1995 light: '#BE1717',
1996 hcDark: '#A74747'
1997 },
1998 description: 'ANSI red color'
1999 }, {
2000 id: 'ansi.green.color', defaults: {
2001 dark: '#348F34',
2002 light: '#338A2F',
2003 hcDark: '#348F34'
2004 },
2005 description: 'ANSI green color'
2006 }, {
2007 id: 'ansi.yellow.color', defaults: {
2008 dark: '#5F4C29',
2009 light: '#BEB817',
2010 hcDark: '#5F4C29'
2011 },
2012 description: 'ANSI yellow color'
2013 }, {
2014 id: 'ansi.blue.color', defaults: {
2015 dark: '#6286BB',
2016 light: color_1.Color.rgba(0, 0, 139),
2017 hcDark: '#6286BB'
2018 },
2019 description: 'ANSI blue color'
2020 }, {
2021 id: 'ansi.magenta.color', defaults: {
2022 dark: '#914191',
2023 light: color_1.Color.rgba(139, 0, 139),
2024 hcDark: '#914191'
2025 },
2026 description: 'ANSI magenta color'
2027 }, {
2028 id: 'ansi.cyan.color', defaults: {
2029 dark: '#218D8D',
2030 light: color_1.Color.rgba(0, 139, 139),
2031 hcDark: '#218D8D'
2032 },
2033 description: 'ANSI cyan color'
2034 }, {
2035 id: 'ansi.white.color', defaults: {
2036 dark: '#707070',
2037 light: '#BDBDBD',
2038 hcDark: '#707070'
2039 },
2040 description: 'ANSI white color'
2041 },
2042 // Theia defaults
2043 // Base
2044 {
2045 id: 'errorBackground',
2046 defaults: {
2047 dark: 'inputValidation.errorBackground',
2048 light: 'inputValidation.errorBackground',
2049 hcDark: 'inputValidation.errorBackground'
2050 }, description: 'Background color of error widgets (like alerts or notifications).'
2051 }, {
2052 id: 'successBackground',
2053 defaults: {
2054 dark: 'editorGutter.addedBackground',
2055 light: 'editorGutter.addedBackground',
2056 hcDark: 'editorGutter.addedBackground'
2057 }, description: 'Background color of success widgets (like alerts or notifications).'
2058 }, {
2059 id: 'warningBackground',
2060 defaults: {
2061 dark: 'editorWarning.foreground',
2062 light: 'editorWarning.foreground',
2063 hcDark: 'editorWarning.border'
2064 }, description: 'Background color of warning widgets (like alerts or notifications).'
2065 }, {
2066 id: 'warningForeground',
2067 defaults: {
2068 dark: 'inputValidation.warningBackground',
2069 light: 'inputValidation.warningBackground',
2070 hcDark: 'inputValidation.warningBackground'
2071 }, description: 'Foreground color of warning widgets (like alerts or notifications).'
2072 },
2073 // Statusbar
2074 {
2075 id: 'statusBar.offlineBackground',
2076 defaults: {
2077 dark: 'editorWarning.foreground',
2078 light: 'editorWarning.foreground',
2079 hcDark: 'editorWarning.foreground',
2080 hcLight: 'editorWarning.foreground'
2081 }, description: 'Background of hovered statusbar item in case the theia server is offline.'
2082 }, {
2083 id: 'statusBar.offlineForeground',
2084 defaults: {
2085 dark: 'editor.background',
2086 light: 'editor.background',
2087 hcDark: 'editor.background',
2088 hcLight: 'editor.background'
2089 }, description: 'Background of hovered statusbar item in case the theia server is offline.'
2090 }, {
2091 id: 'statusBarItem.offlineHoverBackground',
2092 defaults: {
2093 dark: color_1.Color.lighten('statusBar.offlineBackground', 0.4),
2094 light: color_1.Color.lighten('statusBar.offlineBackground', 0.4),
2095 hcDark: color_1.Color.lighten('statusBar.offlineBackground', 0.4),
2096 hcLight: color_1.Color.lighten('statusBar.offlineBackground', 0.4)
2097 }, description: 'Background of hovered statusbar item in case the theia server is offline.'
2098 }, {
2099 id: 'statusBarItem.offlineActiveBackground',
2100 defaults: {
2101 dark: color_1.Color.lighten('statusBar.offlineBackground', 0.6),
2102 light: color_1.Color.lighten('statusBar.offlineBackground', 0.6),
2103 hcDark: color_1.Color.lighten('statusBar.offlineBackground', 0.6),
2104 hcLight: color_1.Color.lighten('statusBar.offlineBackground', 0.6)
2105 }, description: 'Background of active statusbar item in case the theia server is offline.'
2106 }, {
2107 id: 'statusBarItem.remoteBackground',
2108 defaults: {
2109 dark: 'activityBarBadge.background',
2110 light: 'activityBarBadge.background',
2111 hcDark: 'activityBarBadge.background',
2112 hcLight: 'activityBarBadge.background'
2113 }, description: 'Background color for the remote indicator on the status bar.'
2114 }, {
2115 id: 'statusBarItem.remoteForeground',
2116 defaults: {
2117 dark: 'activityBarBadge.foreground',
2118 light: 'activityBarBadge.foreground',
2119 hcDark: 'activityBarBadge.foreground',
2120 hcLight: 'activityBarBadge.foreground'
2121 }, description: 'Foreground color for the remote indicator on the status bar.'
2122 },
2123 // Buttons
2124 {
2125 id: 'secondaryButton.foreground',
2126 defaults: {
2127 dark: 'dropdown.foreground',
2128 light: 'dropdown.foreground',
2129 hcDark: 'dropdown.foreground',
2130 hcLight: 'dropdown.foreground'
2131 }, description: 'Foreground color of secondary buttons.'
2132 }, {
2133 id: 'secondaryButton.disabledForeground',
2134 defaults: {
2135 dark: color_1.Color.transparent('secondaryButton.foreground', 0.5),
2136 light: color_1.Color.transparent('secondaryButton.foreground', 0.5),
2137 hcDark: color_1.Color.transparent('secondaryButton.foreground', 0.5),
2138 hcLight: color_1.Color.transparent('secondaryButton.foreground', 0.5),
2139 }, description: 'Foreground color of secondary buttons.'
2140 }, {
2141 id: 'secondaryButton.background',
2142 defaults: {
2143 dark: color_1.Color.lighten('dropdown.background', 0.5),
2144 light: color_1.Color.lighten('dropdown.background', 0.5)
2145 }, description: 'Background color of secondary buttons.'
2146 }, {
2147 id: 'secondaryButton.hoverBackground',
2148 defaults: {
2149 dark: color_1.Color.lighten('secondaryButton.background', 0.2),
2150 light: color_1.Color.lighten('secondaryButton.background', 0.2)
2151 }, description: 'Background color when hovering secondary buttons.'
2152 }, {
2153 id: 'secondaryButton.disabledBackground',
2154 defaults: {
2155 dark: color_1.Color.transparent('secondaryButton.background', 0.6),
2156 light: color_1.Color.transparent('secondaryButton.background', 0.6)
2157 }, description: 'Background color when hovering secondary buttons.'
2158 }, {
2159 id: 'button.disabledForeground',
2160 defaults: {
2161 dark: color_1.Color.transparent('button.foreground', 0.5),
2162 light: color_1.Color.transparent('button.foreground', 0.5),
2163 hcDark: color_1.Color.transparent('button.foreground', 0.5)
2164 }, description: 'Foreground color of secondary buttons.'
2165 }, {
2166 id: 'button.disabledBackground',
2167 defaults: {
2168 dark: color_1.Color.transparent('button.background', 0.5),
2169 light: color_1.Color.transparent('button.background', 0.5)
2170 }, description: 'Background color of secondary buttons.'
2171 }, {
2172 id: 'editorGutter.commentRangeForeground',
2173 defaults: {
2174 dark: '#c5c5c5',
2175 light: '#c5c5c5',
2176 hcDark: color_1.Color.white,
2177 hcLight: color_1.Color.white
2178 }, description: 'Editor gutter decoration color for commenting ranges.'
2179 }, {
2180 id: 'breadcrumb.foreground',
2181 defaults: {
2182 dark: color_1.Color.transparent('foreground', 0.8),
2183 light: color_1.Color.transparent('foreground', 0.8),
2184 hcDark: color_1.Color.transparent('foreground', 0.8),
2185 hcLight: color_1.Color.transparent('foreground', 0.8)
2186 },
2187 description: 'Color of breadcrumb item text'
2188 }, {
2189 id: 'breadcrumb.background',
2190 defaults: {
2191 dark: 'editor.background',
2192 light: 'editor.background',
2193 hcDark: 'editor.background',
2194 hcLight: 'editor.background'
2195 },
2196 description: 'Color of breadcrumb item background'
2197 }, {
2198 id: 'breadcrumb.focusForeground',
2199 defaults: {
2200 dark: color_1.Color.lighten('foreground', 0.1),
2201 light: color_1.Color.darken('foreground', 0.2),
2202 hcDark: color_1.Color.lighten('foreground', 0.1),
2203 hcLight: color_1.Color.lighten('foreground', 0.1)
2204 },
2205 description: 'Color of breadcrumb item text when focused'
2206 }, {
2207 id: 'breadcrumb.activeSelectionForeground',
2208 defaults: {
2209 dark: color_1.Color.lighten('foreground', 0.1),
2210 light: color_1.Color.darken('foreground', 0.2),
2211 hcDark: color_1.Color.lighten('foreground', 0.1),
2212 hcLight: color_1.Color.lighten('foreground', 0.1)
2213 },
2214 description: 'Color of selected breadcrumb item'
2215 }, {
2216 id: 'breadcrumbPicker.background',
2217 defaults: {
2218 dark: 'editorWidget.background',
2219 light: 'editorWidget.background',
2220 hcDark: 'editorWidget.background',
2221 hcLight: 'editorWidget.background'
2222 },
2223 description: 'Background color of breadcrumb item picker'
2224 }, {
2225 id: 'mainToolbar.background',
2226 defaults: {
2227 dark: color_1.Color.lighten('activityBar.background', 0.1),
2228 light: color_1.Color.darken('activityBar.background', 0.1),
2229 hcDark: color_1.Color.lighten('activityBar.background', 0.1),
2230 hcLight: color_1.Color.lighten('activityBar.background', 0.1)
2231 },
2232 description: 'Background color of shell\'s global toolbar'
2233 }, {
2234 id: 'mainToolbar.foreground', defaults: {
2235 dark: color_1.Color.darken('activityBar.foreground', 0.1),
2236 light: color_1.Color.lighten('activityBar.foreground', 0.1),
2237 hcDark: color_1.Color.lighten('activityBar.foreground', 0.1),
2238 hcLight: color_1.Color.lighten('activityBar.foreground', 0.1),
2239 }, description: 'Foreground color of active toolbar item',
2240 }, {
2241 id: 'editorHoverWidgetInternalBorder',
2242 defaults: {
2243 dark: color_1.Color.transparent('editorHoverWidget.border', 0.5),
2244 light: color_1.Color.transparent('editorHoverWidget.border', 0.5),
2245 hcDark: color_1.Color.transparent('editorHoverWidget.border', 0.5),
2246 hcLight: color_1.Color.transparent('editorHoverWidget.border', 0.5)
2247 },
2248 description: 'The border between subelements of a hover widget'
2249 });
2250 }
2251};
2252(0, tslib_1.__decorate)([
2253 (0, inversify_1.inject)(context_key_service_1.ContextKeyService),
2254 (0, tslib_1.__metadata)("design:type", Object)
2255], CommonFrontendContribution.prototype, "contextKeyService", void 0);
2256(0, tslib_1.__decorate)([
2257 (0, inversify_1.inject)(resource_context_key_1.ResourceContextKey),
2258 (0, tslib_1.__metadata)("design:type", resource_context_key_1.ResourceContextKey)
2259], CommonFrontendContribution.prototype, "resourceContextKey", void 0);
2260(0, tslib_1.__decorate)([
2261 (0, inversify_1.inject)(command_1.CommandRegistry),
2262 (0, tslib_1.__metadata)("design:type", command_1.CommandRegistry)
2263], CommonFrontendContribution.prototype, "commandRegistry", void 0);
2264(0, tslib_1.__decorate)([
2265 (0, inversify_1.inject)(menu_1.MenuModelRegistry),
2266 (0, tslib_1.__metadata)("design:type", menu_1.MenuModelRegistry)
2267], CommonFrontendContribution.prototype, "menuRegistry", void 0);
2268(0, tslib_1.__decorate)([
2269 (0, inversify_1.inject)(storage_service_1.StorageService),
2270 (0, tslib_1.__metadata)("design:type", Object)
2271], CommonFrontendContribution.prototype, "storageService", void 0);
2272(0, tslib_1.__decorate)([
2273 (0, inversify_1.inject)(quick_input_1.QuickInputService),
2274 (0, inversify_1.optional)(),
2275 (0, tslib_1.__metadata)("design:type", Object)
2276], CommonFrontendContribution.prototype, "quickInputService", void 0);
2277(0, tslib_1.__decorate)([
2278 (0, inversify_1.inject)(icon_theme_service_1.IconThemeService),
2279 (0, tslib_1.__metadata)("design:type", icon_theme_service_1.IconThemeService)
2280], CommonFrontendContribution.prototype, "iconThemes", void 0);
2281(0, tslib_1.__decorate)([
2282 (0, inversify_1.inject)(theming_1.ThemeService),
2283 (0, tslib_1.__metadata)("design:type", theming_1.ThemeService)
2284], CommonFrontendContribution.prototype, "themeService", void 0);
2285(0, tslib_1.__decorate)([
2286 (0, inversify_1.inject)(core_preferences_1.CorePreferences),
2287 (0, tslib_1.__metadata)("design:type", Object)
2288], CommonFrontendContribution.prototype, "preferences", void 0);
2289(0, tslib_1.__decorate)([
2290 (0, inversify_1.inject)(preferences_1.PreferenceService),
2291 (0, tslib_1.__metadata)("design:type", Object)
2292], CommonFrontendContribution.prototype, "preferenceService", void 0);
2293(0, tslib_1.__decorate)([
2294 (0, inversify_1.inject)(clipboard_service_1.ClipboardService),
2295 (0, tslib_1.__metadata)("design:type", Object)
2296], CommonFrontendContribution.prototype, "clipboardService", void 0);
2297(0, tslib_1.__decorate)([
2298 (0, inversify_1.inject)(encoding_registry_1.EncodingRegistry),
2299 (0, tslib_1.__metadata)("design:type", encoding_registry_1.EncodingRegistry)
2300], CommonFrontendContribution.prototype, "encodingRegistry", void 0);
2301(0, tslib_1.__decorate)([
2302 (0, inversify_1.inject)(env_variables_1.EnvVariablesServer),
2303 (0, tslib_1.__metadata)("design:type", Object)
2304], CommonFrontendContribution.prototype, "environments", void 0);
2305(0, tslib_1.__decorate)([
2306 (0, inversify_1.inject)(authentication_service_1.AuthenticationService),
2307 (0, tslib_1.__metadata)("design:type", Object)
2308], CommonFrontendContribution.prototype, "authenticationService", void 0);
2309(0, tslib_1.__decorate)([
2310 (0, inversify_1.inject)(window_service_1.WindowService),
2311 (0, tslib_1.__metadata)("design:type", Object)
2312], CommonFrontendContribution.prototype, "windowService", void 0);
2313(0, tslib_1.__decorate)([
2314 (0, inversify_1.inject)(user_working_directory_provider_1.UserWorkingDirectoryProvider),
2315 (0, tslib_1.__metadata)("design:type", user_working_directory_provider_1.UserWorkingDirectoryProvider)
2316], CommonFrontendContribution.prototype, "workingDirProvider", void 0);
2317(0, tslib_1.__decorate)([
2318 (0, inversify_1.inject)(language_quick_pick_service_1.LanguageQuickPickService),
2319 (0, tslib_1.__metadata)("design:type", language_quick_pick_service_1.LanguageQuickPickService)
2320], CommonFrontendContribution.prototype, "languageQuickPickService", void 0);
2321(0, tslib_1.__decorate)([
2322 (0, inversify_1.inject)(common_1.UntitledResourceResolver),
2323 (0, tslib_1.__metadata)("design:type", common_1.UntitledResourceResolver)
2324], CommonFrontendContribution.prototype, "untitledResourceResolver", void 0);
2325CommonFrontendContribution = (0, tslib_1.__decorate)([
2326 (0, inversify_1.injectable)(),
2327 (0, tslib_1.__param)(0, (0, inversify_1.inject)(application_shell_1.ApplicationShell)),
2328 (0, tslib_1.__param)(1, (0, inversify_1.inject)(selection_service_1.SelectionService)),
2329 (0, tslib_1.__param)(2, (0, inversify_1.inject)(message_service_1.MessageService)),
2330 (0, tslib_1.__param)(3, (0, inversify_1.inject)(opener_service_1.OpenerService)),
2331 (0, tslib_1.__param)(4, (0, inversify_1.inject)(about_dialog_1.AboutDialog)),
2332 (0, tslib_1.__param)(5, (0, inversify_1.inject)(localization_1.AsyncLocalizationProvider)),
2333 (0, tslib_1.__param)(6, (0, inversify_1.inject)(save_resource_service_1.SaveResourceService)),
2334 (0, tslib_1.__metadata)("design:paramtypes", [application_shell_1.ApplicationShell,
2335 selection_service_1.SelectionService,
2336 message_service_1.MessageService, Object, about_dialog_1.AboutDialog, Object, save_resource_service_1.SaveResourceService])
2337], CommonFrontendContribution);
2338exports.CommonFrontendContribution = CommonFrontendContribution;
2339//# sourceMappingURL=common-frontend-contribution.js.map
\No newline at end of file