提交 e17a5f49 编写于 作者: H Hui Zhou

Set placeholder text in SourceControlInputBox

上级 8b942faa
...@@ -385,6 +385,7 @@ export class Repository implements Disposable { ...@@ -385,6 +385,7 @@ export class Repository implements Disposable {
const label = `${path.basename(repository.root)} (Git)`; const label = `${path.basename(repository.root)} (Git)`;
this._sourceControl = scm.createSourceControl('git', label); this._sourceControl = scm.createSourceControl('git', label);
this._sourceControl.inputBox.placeholder = localize('commitMessage', "Message (press {0} to commit)", process.platform === 'darwin' ? 'Cmd+Enter' : 'Ctrl+Enter');
this._sourceControl.acceptInputCommand = { command: 'git.commitWithInput', title: localize('commit', "Commit"), arguments: [this._sourceControl] }; this._sourceControl.acceptInputCommand = { command: 'git.commitWithInput', title: localize('commit', "Commit"), arguments: [this._sourceControl] };
this._sourceControl.quickDiffProvider = this; this._sourceControl.quickDiffProvider = this;
this.disposables.push(this._sourceControl); this.disposables.push(this._sourceControl);
......
...@@ -5326,6 +5326,11 @@ declare module 'vscode' { ...@@ -5326,6 +5326,11 @@ declare module 'vscode' {
* Setter and getter for the contents of the input box. * Setter and getter for the contents of the input box.
*/ */
value: string; value: string;
/**
* A string to show as place holder in the input box to guide the user.
*/
placeholder: string;
} }
interface QuickDiffProvider { interface QuickDiffProvider {
......
...@@ -343,4 +343,14 @@ export class MainThreadSCM implements MainThreadSCMShape { ...@@ -343,4 +343,14 @@ export class MainThreadSCM implements MainThreadSCMShape {
repository.input.value = value; repository.input.value = value;
} }
$setInputBoxPlaceholder(sourceControlHandle: number, placeholder: string): void {
const repository = this._repositories[sourceControlHandle];
if (!repository) {
return;
}
repository.input.placeholder = placeholder;
}
} }
...@@ -348,6 +348,7 @@ export interface MainThreadSCMShape extends IDisposable { ...@@ -348,6 +348,7 @@ export interface MainThreadSCMShape extends IDisposable {
$unregisterGroup(sourceControlHandle: number, handle: number): void; $unregisterGroup(sourceControlHandle: number, handle: number): void;
$setInputBoxValue(sourceControlHandle: number, value: string): void; $setInputBoxValue(sourceControlHandle: number, value: string): void;
$setInputBoxPlaceholder(sourceControlHandle: number, placeholder: string): void;
} }
export type DebugSessionUUID = string; export type DebugSessionUUID = string;
......
...@@ -43,6 +43,17 @@ export class ExtHostSCMInputBox { ...@@ -43,6 +43,17 @@ export class ExtHostSCMInputBox {
return this._onDidChange.event; return this._onDidChange.event;
} }
private _placeholder: string = '';
get placeholder(): string {
return this._placeholder;
}
set placeholder(placeholder: string) {
this._proxy.$setInputBoxPlaceholder(this._sourceControlHandle, placeholder);
this._placeholder = placeholder;
}
constructor(private _proxy: MainThreadSCMShape, private _sourceControlHandle: number) { constructor(private _proxy: MainThreadSCMShape, private _sourceControlHandle: number) {
// noop // noop
} }
......
...@@ -48,7 +48,6 @@ import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet'; ...@@ -48,7 +48,6 @@ import { IViewletService } from 'vs/workbench/services/viewlet/browser/viewlet';
import { ViewSizing } from 'vs/base/browser/ui/splitview/splitview'; import { ViewSizing } from 'vs/base/browser/ui/splitview/splitview';
import { IExtensionsViewlet, VIEWLET_ID as EXTENSIONS_VIEWLET_ID } from 'vs/workbench/parts/extensions/common/extensions'; import { IExtensionsViewlet, VIEWLET_ID as EXTENSIONS_VIEWLET_ID } from 'vs/workbench/parts/extensions/common/extensions';
import { InputBox } from 'vs/base/browser/ui/inputbox/inputBox'; import { InputBox } from 'vs/base/browser/ui/inputbox/inputBox';
import * as platform from 'vs/base/common/platform';
import { domEvent } from 'vs/base/browser/event'; import { domEvent } from 'vs/base/browser/event';
import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent'; import { StandardKeyboardEvent } from 'vs/base/browser/keyboardEvent';
import { KeyMod, KeyCode } from 'vs/base/common/keyCodes'; import { KeyMod, KeyCode } from 'vs/base/common/keyCodes';
...@@ -307,15 +306,16 @@ class SourceControlView extends CollapsibleView { ...@@ -307,15 +306,16 @@ class SourceControlView extends CollapsibleView {
this.inputBoxContainer = append(container, $('.scm-editor')); this.inputBoxContainer = append(container, $('.scm-editor'));
this.inputBox = new InputBox(this.inputBoxContainer, this.contextViewService, { this.inputBox = new InputBox(this.inputBoxContainer, this.contextViewService, {
placeholder: localize('commitMessage', "Message (press {0} to commit)", platform.isMacintosh ? 'Cmd+Enter' : 'Ctrl+Enter'),
flexibleHeight: true flexibleHeight: true
}); });
this.disposables.push(attachInputBoxStyler(this.inputBox, this.themeService)); this.disposables.push(attachInputBoxStyler(this.inputBox, this.themeService));
this.disposables.push(this.inputBox); this.disposables.push(this.inputBox);
this.inputBox.value = this.repository.input.value; this.inputBox.value = this.repository.input.value;
this.inputBox.setPlaceHolder(this.repository.input.placeholder);
this.inputBox.onDidChange(value => this.repository.input.value = value, null, this.disposables); this.inputBox.onDidChange(value => this.repository.input.value = value, null, this.disposables);
this.repository.input.onDidChange(value => this.inputBox.value = value, null, this.disposables); this.repository.input.onDidChange(value => this.inputBox.value = value, null, this.disposables);
this.repository.input.onDidChangePlaceholder(placeholder => this.inputBox.setPlaceHolder(placeholder), null, this.disposables);
this.disposables.push(this.inputBox.onDidHeightChange(() => this.layoutBody())); this.disposables.push(this.inputBox.onDidHeightChange(() => this.layoutBody()));
chain(domEvent(this.inputBox.inputElement, 'keydown')) chain(domEvent(this.inputBox.inputElement, 'keydown'))
......
...@@ -58,6 +58,8 @@ export interface ISCMProvider extends IDisposable { ...@@ -58,6 +58,8 @@ export interface ISCMProvider extends IDisposable {
export interface ISCMInput { export interface ISCMInput {
value: string; value: string;
readonly onDidChange: Event<string>; readonly onDidChange: Event<string>;
placeholder: string;
readonly onDidChangePlaceholder: Event<string>;
} }
export interface ISCMRepository extends IDisposable { export interface ISCMRepository extends IDisposable {
......
...@@ -24,6 +24,20 @@ class SCMInput implements ISCMInput { ...@@ -24,6 +24,20 @@ class SCMInput implements ISCMInput {
private _onDidChange = new Emitter<string>(); private _onDidChange = new Emitter<string>();
get onDidChange(): Event<string> { return this._onDidChange.event; } get onDidChange(): Event<string> { return this._onDidChange.event; }
private _placeholder = '';
get placeholder(): string {
return this._placeholder;
}
set placeholder(placeholder: string) {
this._placeholder = placeholder;
this._onDidChangePlaceholder.fire(placeholder);
}
private _onDidChangePlaceholder = new Emitter<string>();
get onDidChangePlaceholder(): Event<string> { return this._onDidChangePlaceholder.event; }
} }
class SCMRepository implements ISCMRepository { class SCMRepository implements ISCMRepository {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册