mirror of
https://github.com/mathuo/dockview
synced 2025-05-05 19:18:25 +00:00
feat: add event
This commit is contained in:
parent
b14443c009
commit
87eb58d49f
@ -91,6 +91,10 @@ describe('component.api', () => {
|
|||||||
'focus',
|
'focus',
|
||||||
'resizeToFit',
|
'resizeToFit',
|
||||||
'toJSON',
|
'toJSON',
|
||||||
|
'onDidActiveGroupChange',
|
||||||
|
'onDidAddGroup',
|
||||||
|
'onDidRemoveGroup',
|
||||||
|
'onDidLayoutFromJSON',
|
||||||
];
|
];
|
||||||
|
|
||||||
for (const _ of list) {
|
for (const _ of list) {
|
||||||
@ -130,6 +134,13 @@ describe('component.api', () => {
|
|||||||
'closeAllGroups',
|
'closeAllGroups',
|
||||||
'resizeToFit',
|
'resizeToFit',
|
||||||
'toJSON',
|
'toJSON',
|
||||||
|
'onDidActiveGroupChange',
|
||||||
|
'onDidAddGroup',
|
||||||
|
'onDidRemoveGroup',
|
||||||
|
'onDidActivePanelChange',
|
||||||
|
'onDidAddPanel',
|
||||||
|
'onDidRemovePanel',
|
||||||
|
'onDidLayoutfromJSON',
|
||||||
];
|
];
|
||||||
|
|
||||||
for (const _ of list) {
|
for (const _ of list) {
|
||||||
|
@ -255,6 +255,22 @@ export class GridviewApi implements CommonApi {
|
|||||||
return this.component.onDidLayoutChange;
|
return this.component.onDidLayoutChange;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get onDidAddGroup(): Event<IGridviewPanel> {
|
||||||
|
return this.component.onDidAddGroup;
|
||||||
|
}
|
||||||
|
|
||||||
|
get onDidRemoveGroup(): Event<IGridviewPanel> {
|
||||||
|
return this.component.onDidRemoveGroup;
|
||||||
|
}
|
||||||
|
|
||||||
|
get onDidActiveGroupChange(): Event<IGridviewPanel | undefined> {
|
||||||
|
return this.component.onDidActiveGroupChange;
|
||||||
|
}
|
||||||
|
|
||||||
|
get onDidLayoutFromJSON(): Event<void> {
|
||||||
|
return this.component.onDidLayoutFromJSON;
|
||||||
|
}
|
||||||
|
|
||||||
get panels(): IGridviewPanel[] {
|
get panels(): IGridviewPanel[] {
|
||||||
return this.component.groups;
|
return this.component.groups;
|
||||||
}
|
}
|
||||||
@ -358,6 +374,34 @@ export class DockviewApi implements CommonApi {
|
|||||||
return this.component.onGridEvent;
|
return this.component.onGridEvent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
get onDidActiveGroupChange(): Event<IGroupviewPanel | undefined> {
|
||||||
|
return this.component.onDidActiveGroupChange;
|
||||||
|
}
|
||||||
|
|
||||||
|
get onDidAddGroup(): Event<IGroupviewPanel> {
|
||||||
|
return this.component.onDidAddGroup;
|
||||||
|
}
|
||||||
|
|
||||||
|
get onDidRemoveGroup(): Event<IGroupviewPanel> {
|
||||||
|
return this.component.onDidRemoveGroup;
|
||||||
|
}
|
||||||
|
|
||||||
|
get onDidActivePanelChange(): Event<IGroupPanel | undefined> {
|
||||||
|
return this.component.onDidActivePanelChange;
|
||||||
|
}
|
||||||
|
|
||||||
|
get onDidAddPanel(): Event<IGroupPanel> {
|
||||||
|
return this.component.onDidAddPanel;
|
||||||
|
}
|
||||||
|
|
||||||
|
get onDidRemovePanel(): Event<IGroupPanel> {
|
||||||
|
return this.component.onDidRemovePanel;
|
||||||
|
}
|
||||||
|
|
||||||
|
get onDidLayoutfromJSON(): Event<void> {
|
||||||
|
return this.component.onDidLayoutfromJSON;
|
||||||
|
}
|
||||||
|
|
||||||
get onDidLayoutChange(): Event<void> {
|
get onDidLayoutChange(): Event<void> {
|
||||||
return this.component.onDidLayoutChange;
|
return this.component.onDidLayoutChange;
|
||||||
}
|
}
|
||||||
|
@ -115,6 +115,7 @@ export interface IDockviewComponent extends IBaseGrid<GroupviewPanel> {
|
|||||||
//
|
//
|
||||||
readonly onDidRemovePanel: Event<IGroupPanel>;
|
readonly onDidRemovePanel: Event<IGroupPanel>;
|
||||||
readonly onDidAddPanel: Event<IGroupPanel>;
|
readonly onDidAddPanel: Event<IGroupPanel>;
|
||||||
|
readonly onDidLayoutfromJSON: Event<void>;
|
||||||
readonly onDidActivePanelChange: Event<IGroupPanel | undefined>;
|
readonly onDidActivePanelChange: Event<IGroupPanel | undefined>;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -122,7 +123,9 @@ export class DockviewComponent
|
|||||||
extends BaseGrid<GroupviewPanel>
|
extends BaseGrid<GroupviewPanel>
|
||||||
implements IDockviewComponent
|
implements IDockviewComponent
|
||||||
{
|
{
|
||||||
// private readonly _panels = new Map<string, IValueDisposable<IGroupPanel>>();
|
private _deserializer: IPanelDeserializer | undefined;
|
||||||
|
private _api: DockviewApi;
|
||||||
|
private _options: DockviewComponentOptions;
|
||||||
|
|
||||||
// events
|
// events
|
||||||
private readonly _onTabInteractionEvent = new Emitter<LayoutMouseEvent>();
|
private readonly _onTabInteractionEvent = new Emitter<LayoutMouseEvent>();
|
||||||
@ -143,17 +146,15 @@ export class DockviewComponent
|
|||||||
private readonly _onDidAddPanel = new Emitter<IGroupPanel>();
|
private readonly _onDidAddPanel = new Emitter<IGroupPanel>();
|
||||||
readonly onDidAddPanel: Event<IGroupPanel> = this._onDidAddPanel.event;
|
readonly onDidAddPanel: Event<IGroupPanel> = this._onDidAddPanel.event;
|
||||||
|
|
||||||
|
private readonly _onDidLayoutfromJSON = new Emitter<void>();
|
||||||
|
readonly onDidLayoutfromJSON: Event<void> = this._onDidLayoutfromJSON.event;
|
||||||
|
|
||||||
private readonly _onDidActivePanelChange = new Emitter<
|
private readonly _onDidActivePanelChange = new Emitter<
|
||||||
IGroupPanel | undefined
|
IGroupPanel | undefined
|
||||||
>();
|
>();
|
||||||
readonly onDidActivePanelChange: Event<IGroupPanel | undefined> =
|
readonly onDidActivePanelChange: Event<IGroupPanel | undefined> =
|
||||||
this._onDidActivePanelChange.event;
|
this._onDidActivePanelChange.event;
|
||||||
|
|
||||||
// everything else
|
|
||||||
private _deserializer: IPanelDeserializer | undefined;
|
|
||||||
private _api: DockviewApi;
|
|
||||||
private _options: DockviewComponentOptions;
|
|
||||||
|
|
||||||
get totalPanels(): number {
|
get totalPanels(): number {
|
||||||
return this.panels.length;
|
return this.panels.length;
|
||||||
}
|
}
|
||||||
@ -373,6 +374,7 @@ export class DockviewComponent
|
|||||||
this.gridview.layout(this.width, this.height);
|
this.gridview.layout(this.width, this.height);
|
||||||
|
|
||||||
this._onGridEvent.fire({ kind: GroupChangeKind.LAYOUT_FROM_JSON });
|
this._onGridEvent.fire({ kind: GroupChangeKind.LAYOUT_FROM_JSON });
|
||||||
|
this._onDidLayoutfromJSON.fire();
|
||||||
}
|
}
|
||||||
|
|
||||||
closeAllGroups(): void {
|
closeAllGroups(): void {
|
||||||
@ -602,7 +604,7 @@ export class DockviewComponent
|
|||||||
override doSetGroupActive(
|
override doSetGroupActive(
|
||||||
group: GroupviewPanel | undefined,
|
group: GroupviewPanel | undefined,
|
||||||
skipFocus?: boolean
|
skipFocus?: boolean
|
||||||
) {
|
): void {
|
||||||
const isGroupAlreadyFocused = this._activeGroup === group;
|
const isGroupAlreadyFocused = this._activeGroup === group;
|
||||||
super.doSetGroupActive(group, skipFocus);
|
super.doSetGroupActive(group, skipFocus);
|
||||||
|
|
||||||
@ -767,5 +769,6 @@ export class DockviewComponent
|
|||||||
this._onDidActivePanelChange.dispose();
|
this._onDidActivePanelChange.dispose();
|
||||||
this._onDidAddPanel.dispose();
|
this._onDidAddPanel.dispose();
|
||||||
this._onDidRemovePanel.dispose();
|
this._onDidRemovePanel.dispose();
|
||||||
|
this._onDidLayoutfromJSON.dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -27,6 +27,7 @@ import { GridviewPanelApiImpl } from '../api/gridviewPanelApi';
|
|||||||
import { GridviewApi } from '../api/component.api';
|
import { GridviewApi } from '../api/component.api';
|
||||||
import { Orientation, Sizing } from '../splitview/core/splitview';
|
import { Orientation, Sizing } from '../splitview/core/splitview';
|
||||||
import { createComponent } from '../panel/componentFactory';
|
import { createComponent } from '../panel/componentFactory';
|
||||||
|
import { Emitter, Event } from '../events';
|
||||||
|
|
||||||
interface PanelReference {
|
interface PanelReference {
|
||||||
api: GridviewPanelApiImpl;
|
api: GridviewPanelApiImpl;
|
||||||
@ -66,6 +67,7 @@ export type GridviewComponentUpdateOptions = Pick<
|
|||||||
|
|
||||||
export interface IGridviewComponent extends IBaseGrid<GridviewPanel> {
|
export interface IGridviewComponent extends IBaseGrid<GridviewPanel> {
|
||||||
readonly orientation: Orientation;
|
readonly orientation: Orientation;
|
||||||
|
readonly onDidLayoutFromJSON: Event<void>;
|
||||||
updateOptions(options: Partial<GridviewComponentUpdateOptions>): void;
|
updateOptions(options: Partial<GridviewComponentUpdateOptions>): void;
|
||||||
addPanel(options: AddComponentOptions): void;
|
addPanel(options: AddComponentOptions): void;
|
||||||
removePanel(panel: IGridviewPanel, sizing?: Sizing): void;
|
removePanel(panel: IGridviewPanel, sizing?: Sizing): void;
|
||||||
@ -91,6 +93,9 @@ export class GridviewComponent
|
|||||||
private _options: GridviewComponentOptions;
|
private _options: GridviewComponentOptions;
|
||||||
private _deserializer: IPanelDeserializer | undefined;
|
private _deserializer: IPanelDeserializer | undefined;
|
||||||
|
|
||||||
|
private readonly _onDidLayoutfromJSON = new Emitter<void>();
|
||||||
|
readonly onDidLayoutFromJSON: Event<void> = this._onDidLayoutfromJSON.event;
|
||||||
|
|
||||||
get orientation() {
|
get orientation() {
|
||||||
return this.gridview.orientation;
|
return this.gridview.orientation;
|
||||||
}
|
}
|
||||||
@ -249,6 +254,7 @@ export class GridviewComponent
|
|||||||
}
|
}
|
||||||
|
|
||||||
this._onGridEvent.fire({ kind: GroupChangeKind.LAYOUT_FROM_JSON });
|
this._onGridEvent.fire({ kind: GroupChangeKind.LAYOUT_FROM_JSON });
|
||||||
|
this._onDidLayoutfromJSON.fire();
|
||||||
}
|
}
|
||||||
|
|
||||||
movePanel(
|
movePanel(
|
||||||
@ -427,5 +433,7 @@ export class GridviewComponent
|
|||||||
|
|
||||||
public dispose() {
|
public dispose() {
|
||||||
super.dispose();
|
super.dispose();
|
||||||
|
|
||||||
|
this._onDidLayoutfromJSON.dispose();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user