awa
This commit is contained in:
175
_internal/editor/esm/vs/base/common/actions.js
Normal file
175
_internal/editor/esm/vs/base/common/actions.js
Normal file
@@ -0,0 +1,175 @@
|
||||
/*---------------------------------------------------------------------------------------------
|
||||
* Copyright (c) Microsoft Corporation. All rights reserved.
|
||||
* Licensed under the MIT License. See License.txt in the project root for license information.
|
||||
*--------------------------------------------------------------------------------------------*/
|
||||
import { Emitter } from './event.js';
|
||||
import { Disposable } from './lifecycle.js';
|
||||
import * as nls from '../../nls.js';
|
||||
export class Action extends Disposable {
|
||||
get onDidChange() { return this._onDidChange.event; }
|
||||
constructor(id, label = '', cssClass = '', enabled = true, actionCallback) {
|
||||
super();
|
||||
this._onDidChange = this._register(new Emitter());
|
||||
this._enabled = true;
|
||||
this._id = id;
|
||||
this._label = label;
|
||||
this._cssClass = cssClass;
|
||||
this._enabled = enabled;
|
||||
this._actionCallback = actionCallback;
|
||||
}
|
||||
get id() {
|
||||
return this._id;
|
||||
}
|
||||
get label() {
|
||||
return this._label;
|
||||
}
|
||||
set label(value) {
|
||||
this._setLabel(value);
|
||||
}
|
||||
_setLabel(value) {
|
||||
if (this._label !== value) {
|
||||
this._label = value;
|
||||
this._onDidChange.fire({ label: value });
|
||||
}
|
||||
}
|
||||
get tooltip() {
|
||||
return this._tooltip || '';
|
||||
}
|
||||
set tooltip(value) {
|
||||
this._setTooltip(value);
|
||||
}
|
||||
_setTooltip(value) {
|
||||
if (this._tooltip !== value) {
|
||||
this._tooltip = value;
|
||||
this._onDidChange.fire({ tooltip: value });
|
||||
}
|
||||
}
|
||||
get class() {
|
||||
return this._cssClass;
|
||||
}
|
||||
set class(value) {
|
||||
this._setClass(value);
|
||||
}
|
||||
_setClass(value) {
|
||||
if (this._cssClass !== value) {
|
||||
this._cssClass = value;
|
||||
this._onDidChange.fire({ class: value });
|
||||
}
|
||||
}
|
||||
get enabled() {
|
||||
return this._enabled;
|
||||
}
|
||||
set enabled(value) {
|
||||
this._setEnabled(value);
|
||||
}
|
||||
_setEnabled(value) {
|
||||
if (this._enabled !== value) {
|
||||
this._enabled = value;
|
||||
this._onDidChange.fire({ enabled: value });
|
||||
}
|
||||
}
|
||||
get checked() {
|
||||
return this._checked;
|
||||
}
|
||||
set checked(value) {
|
||||
this._setChecked(value);
|
||||
}
|
||||
_setChecked(value) {
|
||||
if (this._checked !== value) {
|
||||
this._checked = value;
|
||||
this._onDidChange.fire({ checked: value });
|
||||
}
|
||||
}
|
||||
async run(event, data) {
|
||||
if (this._actionCallback) {
|
||||
await this._actionCallback(event);
|
||||
}
|
||||
}
|
||||
}
|
||||
export class ActionRunner extends Disposable {
|
||||
constructor() {
|
||||
super(...arguments);
|
||||
this._onWillRun = this._register(new Emitter());
|
||||
this._onDidRun = this._register(new Emitter());
|
||||
}
|
||||
get onWillRun() { return this._onWillRun.event; }
|
||||
get onDidRun() { return this._onDidRun.event; }
|
||||
async run(action, context) {
|
||||
if (!action.enabled) {
|
||||
return;
|
||||
}
|
||||
this._onWillRun.fire({ action });
|
||||
let error = undefined;
|
||||
try {
|
||||
await this.runAction(action, context);
|
||||
}
|
||||
catch (e) {
|
||||
error = e;
|
||||
}
|
||||
this._onDidRun.fire({ action, error });
|
||||
}
|
||||
async runAction(action, context) {
|
||||
await action.run(context);
|
||||
}
|
||||
}
|
||||
export class Separator {
|
||||
constructor() {
|
||||
this.id = Separator.ID;
|
||||
this.label = '';
|
||||
this.tooltip = '';
|
||||
this.class = 'separator';
|
||||
this.enabled = false;
|
||||
this.checked = false;
|
||||
}
|
||||
/**
|
||||
* Joins all non-empty lists of actions with separators.
|
||||
*/
|
||||
static join(...actionLists) {
|
||||
let out = [];
|
||||
for (const list of actionLists) {
|
||||
if (!list.length) {
|
||||
// skip
|
||||
}
|
||||
else if (out.length) {
|
||||
out = [...out, new Separator(), ...list];
|
||||
}
|
||||
else {
|
||||
out = list;
|
||||
}
|
||||
}
|
||||
return out;
|
||||
}
|
||||
static { this.ID = 'vs.actions.separator'; }
|
||||
async run() { }
|
||||
}
|
||||
export class SubmenuAction {
|
||||
get actions() { return this._actions; }
|
||||
constructor(id, label, actions, cssClass) {
|
||||
this.tooltip = '';
|
||||
this.enabled = true;
|
||||
this.checked = undefined;
|
||||
this.id = id;
|
||||
this.label = label;
|
||||
this.class = cssClass;
|
||||
this._actions = actions;
|
||||
}
|
||||
async run() { }
|
||||
}
|
||||
export class EmptySubmenuAction extends Action {
|
||||
static { this.ID = 'vs.actions.empty'; }
|
||||
constructor() {
|
||||
super(EmptySubmenuAction.ID, nls.localize(28, '(empty)'), undefined, false);
|
||||
}
|
||||
}
|
||||
export function toAction(props) {
|
||||
return {
|
||||
id: props.id,
|
||||
label: props.label,
|
||||
tooltip: props.tooltip ?? props.label,
|
||||
class: props.class,
|
||||
enabled: props.enabled ?? true,
|
||||
checked: props.checked,
|
||||
run: async (...args) => props.run(...args),
|
||||
};
|
||||
}
|
||||
//# sourceMappingURL=actions.js.map
|
||||
Reference in New Issue
Block a user