提交 9b945201 编写于 作者: J Joao Moreno

splitview: remove render from panel ctor

上级 3c053a51
......@@ -30,6 +30,9 @@ export interface IPanelStyles {
headerHighContrastBorder?: Color;
}
/**
* Remember to call render after ctor
*/
export abstract class Panel implements IView {
private static readonly HEADER_SIZE = 22;
......@@ -40,7 +43,7 @@ export abstract class Panel implements IView {
private _minimumBodySize: number;
private _maximumBodySize: number;
private ariaHeaderLabel: string;
private styles: IPanelStyles | undefined = undefined;
private styles: IPanelStyles = {};
readonly element: HTMLElement;
private header: HTMLElement;
......@@ -107,7 +110,6 @@ export abstract class Panel implements IView {
this._maximumBodySize = typeof options.maximumBodySize === 'number' ? options.maximumBodySize : Number.POSITIVE_INFINITY;
this.element = $('.panel');
this.render();
}
isExpanded(): boolean {
......@@ -138,7 +140,7 @@ export abstract class Panel implements IView {
this._onDidChange.fire();
}
protected render(): void {
render(): void {
this.header = $('.panel-header');
append(this.element, this.header);
this.header.setAttribute('tabindex', '0');
......
......@@ -65,7 +65,7 @@ export abstract class ViewletPanel extends Panel {
this.actionRunner = options.actionRunner;
}
protected render(): void {
render(): void {
super.render();
const focusTracker = trackFocus(this.element);
......
......@@ -382,7 +382,7 @@ export class ViewsViewlet extends PanelViewlet implements IViewsViewlet {
for (const viewDescriptor of toAdd) {
let viewState = this.viewsStates.get(viewDescriptor.id);
let index = visible.indexOf(viewDescriptor);
const view = this.createView(viewDescriptor,
const panel = this.createView(viewDescriptor,
{
id: viewDescriptor.id,
name: viewDescriptor.name,
......@@ -390,10 +390,11 @@ export class ViewsViewlet extends PanelViewlet implements IViewsViewlet {
expanded: !(viewState ? viewState.collapsed : viewDescriptor.collapsed),
viewletSettings: this.viewletSettings
});
toCreate.push(view);
panel.render();
toCreate.push(panel);
const size = (viewState && viewState.size) || 200;
panelsToAdd.push({ panel: view, size, index });
panelsToAdd.push({ panel, size, index });
}
this.addPanels(panelsToAdd);
......@@ -586,7 +587,7 @@ export class ViewsViewlet extends PanelViewlet implements IViewsViewlet {
}
protected createView(viewDescriptor: IViewDescriptor, options: IViewletViewOptions): ViewsViewletPanel {
return this.instantiationService.createInstance(viewDescriptor.ctor, options);
return this.instantiationService.createInstance(viewDescriptor.ctor, options) as ViewsViewletPanel;
}
protected get views(): ViewsViewletPanel[] {
......
......@@ -768,7 +768,7 @@ export class RepositoryPanel extends ViewletPanel {
this.menus = instantiationService.createInstance(SCMMenus, repository.provider);
}
protected render(): void {
render(): void {
super.render();
this.menus.onDidChangeTitle(this.updateActions, this, this.disposables);
}
......@@ -1168,6 +1168,7 @@ export class SCMViewlet extends PanelViewlet implements IViewModel, IViewsViewle
if (shouldMainPanelBeVisible) {
this.mainPanel = this.instantiationService.createInstance(MainPanel, this);
this.mainPanel.render();
this.addPanels([{ panel: this.mainPanel, size: this.mainPanel.minimumSize, index: 0 }]);
const selectionChangeDisposable = this.mainPanel.onSelectionChange(this.onSelectionChange, this);
......@@ -1302,7 +1303,11 @@ export class SCMViewlet extends PanelViewlet implements IViewModel, IViewsViewle
// Collect new selected panels
const newRepositoryPanels = repositories
.filter(r => this.repositoryPanels.every(p => p.repository !== r))
.map(r => this.instantiationService.createInstance(RepositoryPanel, r, this));
.map(r => {
const panel = this.instantiationService.createInstance(RepositoryPanel, r, this);
panel.render();
return panel;
});
// Add new selected panels
let index = repositoryPanels.length + (this.mainPanel ? 1 : 0);
......@@ -1364,6 +1369,8 @@ export class SCMViewlet extends PanelViewlet implements IViewModel, IViewsViewle
viewletSettings: {} // what is this
}) as ViewsViewletPanel;
panel.render();
this.addPanels([{ panel, size: size || panel.minimumSize, index: start + index }]);
panel.setVisible(true);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册