提交 e5f650eb 编写于 作者: I isidor

report issue button skeleton

上级 159f0ea2
...@@ -1721,6 +1721,22 @@ export class ExtensionHostProfileAction extends Action { ...@@ -1721,6 +1721,22 @@ export class ExtensionHostProfileAction extends Action {
} }
} }
export class ReportExtensionIssueAction extends Action {
static ID = 'workbench.extensions.action.reportExtensionIssue';
static LABEL = localize('reportExtensionIssue', "Report Issue");
constructor(
id: string = ExtensionHostProfileAction.ID, label: string = ExtensionHostProfileAction.LABEL_START,
@IExtensionsWorkbenchService private extensionsWorkbenchService: IExtensionsWorkbenchService,
) {
super(id, label, 'report-extension-issue');
}
run(extension: IExtension): TPromise<any> {
return this.extensionsWorkbenchService.reportIssue(extension);
}
}
CommandsRegistry.registerCommand('workbench.extensions.action.showExtensionsForLanguage', function (accessor: ServicesAccessor, fileExtension: string) { CommandsRegistry.registerCommand('workbench.extensions.action.showExtensionsForLanguage', function (accessor: ServicesAccessor, fileExtension: string) {
const viewletService = accessor.get(IViewletService); const viewletService = accessor.get(IViewletService);
......
...@@ -78,6 +78,7 @@ export interface IExtensionsWorkbenchService { ...@@ -78,6 +78,7 @@ export interface IExtensionsWorkbenchService {
setEnablement(extension: IExtension, enablementState: EnablementState): TPromise<void>; setEnablement(extension: IExtension, enablementState: EnablementState): TPromise<void>;
loadDependencies(extension: IExtension): TPromise<IExtensionDependencies>; loadDependencies(extension: IExtension): TPromise<IExtensionDependencies>;
open(extension: IExtension, sideByside?: boolean): TPromise<any>; open(extension: IExtension, sideByside?: boolean): TPromise<any>;
reportIssue(extension: IExtension): TPromise<void>;
checkForUpdates(): TPromise<void>; checkForUpdates(): TPromise<void>;
allowedBadgeProviders: string[]; allowedBadgeProviders: string[];
} }
......
...@@ -39,3 +39,17 @@ ...@@ -39,3 +39,17 @@
.monaco-action-bar .extension-host-profile-stop { .monaco-action-bar .extension-host-profile-stop {
background: url('profile-stop.svg') center center no-repeat; background: url('profile-stop.svg') center center no-repeat;
} }
.runtime-extensions-editor .monaco-action-bar {
padding-top: 21px;
}
.runtime-extensions-editor .monaco-action-bar .action-label {
background: #fef2c0;
border-radius: 6px;
padding: 2px;
}
.vs-dark .runtime-extensions-editor .monaco-action-bar .action-label {
background: #796926;
}
...@@ -26,7 +26,7 @@ import { append, $, addDisposableListener, addClass, toggleClass } from 'vs/base ...@@ -26,7 +26,7 @@ import { append, $, addDisposableListener, addClass, toggleClass } from 'vs/base
import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar'; import { ActionBar } from 'vs/base/browser/ui/actionbar/actionbar';
import { IMessageService, Severity } from 'vs/platform/message/common/message'; import { IMessageService, Severity } from 'vs/platform/message/common/message';
import { dispose, IDisposable } from 'vs/base/common/lifecycle'; import { dispose, IDisposable } from 'vs/base/common/lifecycle';
import { ExtensionHostProfileAction } from 'vs/workbench/parts/extensions/browser/extensionsActions'; import { ExtensionHostProfileAction, ReportExtensionIssueAction } from 'vs/workbench/parts/extensions/browser/extensionsActions';
interface IRuntimeExtension { interface IRuntimeExtension {
...@@ -133,6 +133,7 @@ export class RuntimeExtensionsEditor extends BaseEditor { ...@@ -133,6 +133,7 @@ export class RuntimeExtensionsEditor extends BaseEditor {
msgIcon: HTMLElement; msgIcon: HTMLElement;
msgLabel: HTMLElement; msgLabel: HTMLElement;
actionbar: ActionBar;
disposables: IDisposable[]; disposables: IDisposable[];
elementDisposables: IDisposable[]; elementDisposables: IDisposable[];
} }
...@@ -155,16 +156,10 @@ export class RuntimeExtensionsEditor extends BaseEditor { ...@@ -155,16 +156,10 @@ export class RuntimeExtensionsEditor extends BaseEditor {
const msgLabel = append(msgContainer, $('span.msg-label')); const msgLabel = append(msgContainer, $('span.msg-label'));
const actionbar = new ActionBar(element, { const actionbar = new ActionBar(element, {
animated: false, animated: false
actionItemProvider: (action: Action) => {
// TODO
// if (action.id === ManageExtensionAction.ID) {
// return (<ManageExtensionAction>action).actionItem;
// }
return null;
}
}); });
actionbar.onDidRun(({ error }) => error && this._messageService.show(Severity.Error, error)); actionbar.onDidRun(({ error }) => error && this._messageService.show(Severity.Error, error));
actionbar.push(new ReportExtensionIssueAction(ReportExtensionIssueAction.ID, ReportExtensionIssueAction.LABEL, this._extensionsWorkbenchService), { icon: false });
const disposables = [actionbar]; const disposables = [actionbar];
...@@ -173,6 +168,7 @@ export class RuntimeExtensionsEditor extends BaseEditor { ...@@ -173,6 +168,7 @@ export class RuntimeExtensionsEditor extends BaseEditor {
element, element,
icon, icon,
name, name,
actionbar,
timeContainer, timeContainer,
timeIcon, timeIcon,
timeLabel, timeLabel,
...@@ -199,6 +195,7 @@ export class RuntimeExtensionsEditor extends BaseEditor { ...@@ -199,6 +195,7 @@ export class RuntimeExtensionsEditor extends BaseEditor {
const activationTimes = element.status.activationTimes; const activationTimes = element.status.activationTimes;
let syncTime = activationTimes.codeLoadingTime + activationTimes.activateCallTime; let syncTime = activationTimes.codeLoadingTime + activationTimes.activateCallTime;
data.timeLabel.textContent = `${syncTime}ms`; data.timeLabel.textContent = `${syncTime}ms`;
data.actionbar.context = element.marketplaceInfo;
let title: string; let title: string;
if (activationTimes.activationEvent === '*') { if (activationTimes.activationEvent === '*') {
......
...@@ -435,6 +435,10 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService { ...@@ -435,6 +435,10 @@ export class ExtensionsWorkbenchService implements IExtensionsWorkbenchService {
return this.editorService.openEditor(this.instantiationService.createInstance(ExtensionsInput, extension), null, sideByside); return this.editorService.openEditor(this.instantiationService.createInstance(ExtensionsInput, extension), null, sideByside);
} }
reportIssue(extension: IExtension): TPromise<void> {
return TPromise.as(undefined);
}
private fromGallery(gallery: IGalleryExtension): Extension { private fromGallery(gallery: IGalleryExtension): Extension {
const installed = this.getInstalledExtensionMatchingGallery(gallery); const installed = this.getInstalledExtensionMatchingGallery(gallery);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册