src/vs/workbench/contrib/codeEditor/browser/untitledTextEditorHint.ts/UntitledTextEditorHintContentWidget/getDomNode
class UntitledTextEditorHintContentWidget:	getDomNode(): HTMLElement {
		if (!this.domNode) {
			this.domNode = $('.untitled-hint');
			this.domNode.style.width = 'max-content';

			const language = $('a.language-mode');
			language.style.cursor = 'pointer';
			language.innerText = localize('selectAlanguage2', "Select a language");
			const languageKeyBinding = this.keybindingService.lookupKeybinding(ChangeLanguageAction.ID);
			const languageKeybindingLabel = languageKeyBinding?.getLabel();
			if (languageKeybindingLabel) {
				language.title = localize('keyboardBindingTooltip', "{0}", languageKeybindingLabel);
			}
			this.domNode.appendChild(language);

			const or = $('span');
			or.innerText = localize('or', " or ",);
			this.domNode.appendChild(or);

			const editorType = $('a.editor-type');
			editorType.style.cursor = 'pointer';
			editorType.innerText = localize('openADifferentEditor', "open a different editor");
			const selectEditorTypeKeyBinding = this.keybindingService.lookupKeybinding('welcome.showNewFileEntries');
			const selectEditorTypeKeybindingLabel = selectEditorTypeKeyBinding?.getLabel();
			if (selectEditorTypeKeybindingLabel) {
				editorType.title = localize('keyboardBindingTooltip', "{0}", selectEditorTypeKeybindingLabel);
			}
			this.domNode.appendChild(editorType);

			const toGetStarted = $('span');
			toGetStarted.innerText = localize('toGetStarted', " to get started.");
			this.domNode.appendChild(toGetStarted);

			this.domNode.appendChild($('br'));

			const startTyping = $('span');
			startTyping.innerText = localize('startTyping', "Start typing to dismiss or ");
			this.domNode.appendChild(startTyping);

			const dontShow = $('a');
			dontShow.style.cursor = 'pointer';
			dontShow.innerText = localize('dontshow', "don't show");
			this.domNode.appendChild(dontShow);

			const thisAgain = $('span');
			thisAgain.innerText = localize('thisAgain', " this again.");
			this.domNode.appendChild(thisAgain);
			this.toDispose.push(Gesture.addTarget(this.domNode));
			const languageOnClickOrTap = async (e: MouseEvent) => {
				e.stopPropagation();
				// Need to focus editor before so current editor becomes active and the command is properly executed
				this.editor.focus();
				await this.commandService.executeCommand(ChangeLanguageAction.ID, { from: 'hint' });
				this.editor.focus();
			};
			this.toDispose.push(dom.addDisposableListener(language, 'click', languageOnClickOrTap));
			this.toDispose.push(dom.addDisposableListener(language, GestureEventType.Tap, languageOnClickOrTap));
			this.toDispose.push(Gesture.addTarget(language));

			const chooseEditorOnClickOrTap = async (e: MouseEvent) => {
				e.stopPropagation();

				const activeEditorInput = this.editorGroupsService.activeGroup.activeEditor;
				const newEditorSelected = await this.commandService.executeCommand('welcome.showNewFileEntries', { from: 'hint' });

				// Close the active editor as long as it is untitled (swap the editors out)
				if (newEditorSelected && activeEditorInput !== null && activeEditorInput.resource?.scheme === Schemas.untitled) {
					this.editorGroupsService.activeGroup.closeEditor(activeEditorInput, { preserveFocus: true });
				}
			};
			this.toDispose.push(dom.addDisposableListener(editorType, 'click', chooseEditorOnClickOrTap));
			this.toDispose.push(dom.addDisposableListener(editorType, GestureEventType.Tap, chooseEditorOnClickOrTap));
			this.toDispose.push(Gesture.addTarget(editorType));

			const dontShowOnClickOrTap = () => {
				this.configurationService.updateValue(untitledTextEditorHintSetting, 'hidden');
				this.dispose();
				this.editor.focus();
			};
			this.toDispose.push(dom.addDisposableListener(dontShow, 'click', dontShowOnClickOrTap));
			this.toDispose.push(dom.addDisposableListener(dontShow, GestureEventType.Tap, dontShowOnClickOrTap));
			this.toDispose.push(Gesture.addTarget(dontShow));

			this.toDispose.push(dom.addDisposableListener(this.domNode, 'click', () => {
				this.editor.focus();
			}));

			this.domNode.style.fontStyle = 'italic';
			this.domNode.style.paddingLeft = '4px';
			this.editor.applyFontInfo(this.domNode);
		}

		return this.domNode;
	}