@datagrok-libraries/dock-spawn-dg 0.0.1 → 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -3
- package/index.d.ts +33 -0
- package/index.d.ts.map +1 -0
- package/index.js +32 -0
- package/package.json +10 -17
- package/src/BrowserDialogHelper.d.ts.map +1 -0
- package/{lib → src}/BrowserDialogHelper.js +18 -12
- package/src/BrowserDialogHelper.ts +48 -47
- package/src/ContainerType.d.ts.map +1 -0
- package/src/ContainerType.ts +1 -1
- package/{lib → src}/Dialog.d.ts +7 -7
- package/src/Dialog.d.ts.map +1 -0
- package/{lib → src}/Dialog.js +46 -58
- package/src/Dialog.ts +253 -250
- package/src/DockConfig.d.ts.map +1 -0
- package/{lib → src}/DockConfig.js +0 -5
- package/src/DockConfig.ts +1 -1
- package/{lib → src}/DockGraphDeserializer.d.ts +6 -6
- package/src/DockGraphDeserializer.d.ts.map +1 -0
- package/src/DockGraphDeserializer.js +133 -0
- package/src/DockGraphDeserializer.ts +113 -108
- package/src/DockGraphSerializer.d.ts +14 -0
- package/src/DockGraphSerializer.d.ts.map +1 -0
- package/{lib → src}/DockGraphSerializer.js +11 -11
- package/src/DockGraphSerializer.ts +48 -47
- package/{lib → src}/DockLayoutEngine.d.ts +12 -12
- package/src/DockLayoutEngine.d.ts.map +1 -0
- package/{lib → src}/DockLayoutEngine.js +49 -53
- package/src/DockLayoutEngine.ts +351 -346
- package/{lib → src}/DockManager.d.ts +34 -34
- package/src/DockManager.d.ts.map +1 -0
- package/{lib → src}/DockManager.js +170 -152
- package/src/DockManager.ts +860 -833
- package/{lib → src}/DockManagerContext.d.ts +3 -3
- package/src/DockManagerContext.d.ts.map +1 -0
- package/{lib → src}/DockManagerContext.js +2 -5
- package/src/DockManagerContext.ts +5 -5
- package/{lib → src}/DockModel.d.ts +2 -2
- package/src/DockModel.d.ts.map +1 -0
- package/{lib → src}/DockModel.js +0 -3
- package/src/DockModel.ts +2 -2
- package/{lib → src}/DockNode.d.ts +1 -1
- package/src/DockNode.d.ts.map +1 -0
- package/{lib → src}/DockNode.js +0 -3
- package/src/DockNode.ts +2 -2
- package/{lib → src}/DockWheel.d.ts +5 -5
- package/src/DockWheel.d.ts.map +1 -0
- package/{lib → src}/DockWheel.js +3 -11
- package/src/DockWheel.ts +6 -6
- package/{lib → src}/DockWheelItem.d.ts +3 -3
- package/src/DockWheelItem.d.ts.map +1 -0
- package/{lib → src}/DockWheelItem.js +1 -8
- package/src/DockWheelItem.ts +4 -4
- package/{lib → src}/DocumentManagerContainer.d.ts +4 -4
- package/src/DocumentManagerContainer.d.ts.map +1 -0
- package/{lib → src}/DocumentManagerContainer.js +3 -3
- package/src/DocumentManagerContainer.ts +9 -9
- package/{lib → src}/DocumentTabPage.d.ts +3 -3
- package/src/DocumentTabPage.d.ts.map +1 -0
- package/{lib → src}/DocumentTabPage.js +2 -2
- package/src/DocumentTabPage.ts +6 -6
- package/{lib → src}/DraggableContainer.d.ts +7 -7
- package/src/DraggableContainer.d.ts.map +1 -0
- package/{lib → src}/DraggableContainer.js +3 -16
- package/src/DraggableContainer.ts +10 -10
- package/src/EventHandler.d.ts.map +1 -0
- package/{lib → src}/EventHandler.js +0 -3
- package/src/EventHandler.ts +1 -1
- package/{lib → src}/FillDockContainer.d.ts +8 -8
- package/src/FillDockContainer.d.ts.map +1 -0
- package/{lib → src}/FillDockContainer.js +4 -14
- package/src/FillDockContainer.ts +10 -10
- package/src/HorizontalDockContainer.d.ts +7 -0
- package/src/HorizontalDockContainer.d.ts.map +1 -0
- package/{lib → src}/HorizontalDockContainer.js +3 -3
- package/src/HorizontalDockContainer.ts +6 -6
- package/{lib → src}/PanelContainer.d.ts +21 -20
- package/src/PanelContainer.d.ts.map +1 -0
- package/{lib → src}/PanelContainer.js +144 -146
- package/src/PanelContainer.ts +590 -574
- package/src/Point.d.ts.map +1 -0
- package/{lib → src}/Point.js +0 -2
- package/{lib → src}/ResizableContainer.d.ts +8 -8
- package/src/ResizableContainer.d.ts.map +1 -0
- package/{lib → src}/ResizableContainer.js +4 -17
- package/src/ResizableContainer.ts +11 -11
- package/{lib → src}/ResizeHandle.d.ts +1 -1
- package/src/ResizeHandle.d.ts.map +1 -0
- package/{lib → src}/ResizeHandle.js +0 -10
- package/src/ResizeHandle.ts +2 -2
- package/{lib → src}/SplitterBar.d.ts +3 -3
- package/src/SplitterBar.d.ts.map +1 -0
- package/{lib → src}/SplitterBar.js +2 -14
- package/src/SplitterBar.ts +5 -5
- package/{lib → src}/SplitterDockContainer.d.ts +7 -7
- package/src/SplitterDockContainer.d.ts.map +1 -0
- package/{lib → src}/SplitterDockContainer.js +1 -11
- package/src/SplitterDockContainer.ts +8 -8
- package/{lib → src}/SplitterPanel.d.ts +2 -2
- package/src/SplitterPanel.d.ts.map +1 -0
- package/{lib → src}/SplitterPanel.js +2 -6
- package/src/SplitterPanel.ts +4 -4
- package/{lib → src}/TabHandle.d.ts +5 -5
- package/src/TabHandle.d.ts.map +1 -0
- package/{lib → src}/TabHandle.js +81 -95
- package/src/TabHandle.ts +314 -311
- package/{lib → src}/TabHost.d.ts +6 -6
- package/src/TabHost.d.ts.map +1 -0
- package/{lib → src}/TabHost.js +4 -19
- package/src/TabHost.ts +9 -9
- package/{lib → src}/TabPage.d.ts +4 -4
- package/src/TabPage.d.ts.map +1 -0
- package/{lib → src}/TabPage.js +3 -10
- package/src/TabPage.ts +6 -6
- package/{lib → src}/UndockInitiator.d.ts +4 -4
- package/src/UndockInitiator.d.ts.map +1 -0
- package/{lib → src}/UndockInitiator.js +2 -14
- package/src/UndockInitiator.ts +7 -7
- package/src/Utils.d.ts.map +1 -0
- package/{lib → src}/Utils.js +1 -1
- package/src/Utils.ts +1 -1
- package/src/VerticalDockContainer.d.ts +7 -0
- package/src/VerticalDockContainer.d.ts.map +1 -0
- package/{lib → src}/VerticalDockContainer.js +3 -3
- package/src/VerticalDockContainer.ts +7 -7
- package/src/enums/PanelType.d.ts.map +1 -0
- package/src/enums/PanelType.ts +1 -1
- package/src/enums/TabHostDirection.d.ts.map +1 -0
- package/src/enums/TabHostDirection.ts +1 -1
- package/src/enums/WheelTypes.d.ts.map +1 -0
- package/src/enums/WheelTypes.ts +1 -1
- package/src/i18n/Defaults.d.ts.map +1 -0
- package/src/i18n/Defaults.ts +2 -2
- package/{lib → src}/i18n/Localizer.d.ts +1 -1
- package/src/i18n/Localizer.d.ts.map +1 -0
- package/{lib → src}/i18n/Localizer.js +3 -3
- package/src/i18n/Localizer.ts +2 -2
- package/src/index.d.ts.map +1 -0
- package/{lib → src}/interfaces/IDockContainer.d.ts +4 -4
- package/src/interfaces/IDockContainer.d.ts.map +1 -0
- package/src/interfaces/IDockContainer.ts +7 -7
- package/src/interfaces/IDockContainerWithSize.d.ts +6 -0
- package/src/interfaces/IDockContainerWithSize.d.ts.map +1 -0
- package/src/interfaces/IDockContainerWithSize.ts +3 -3
- package/{lib → src}/interfaces/ILayoutEventListener.d.ts +6 -6
- package/src/interfaces/ILayoutEventListener.d.ts.map +1 -0
- package/src/interfaces/ILayoutEventListener.ts +7 -7
- package/src/interfaces/IMouseOrTouchEvent.d.ts.map +1 -0
- package/src/interfaces/IMouseOrTouchEvent.ts +1 -1
- package/src/interfaces/INodeInfo.d.ts +8 -0
- package/src/interfaces/INodeInfo.d.ts.map +1 -0
- package/src/interfaces/INodeInfo.ts +2 -2
- package/src/interfaces/IPanelInfo.d.ts +10 -0
- package/src/interfaces/IPanelInfo.d.ts.map +1 -0
- package/src/interfaces/IPanelInfo.ts +3 -3
- package/src/interfaces/IRectangle.d.ts.map +1 -0
- package/src/interfaces/IRectangle.ts +1 -1
- package/src/interfaces/ISize.d.ts.map +1 -0
- package/{lib → src}/interfaces/IState.d.ts +1 -0
- package/src/interfaces/IState.d.ts.map +1 -0
- package/src/interfaces/IState.ts +1 -0
- package/src/interfaces/IThickness.d.ts.map +1 -0
- package/src/interfaces/IThickness.ts +1 -1
- package/{lib → src}/webcomponent/DockSpawnTsWebcomponent.d.ts +4 -4
- package/src/webcomponent/DockSpawnTsWebcomponent.d.ts.map +1 -0
- package/{lib → src}/webcomponent/DockSpawnTsWebcomponent.js +71 -63
- package/src/webcomponent/DockSpawnTsWebcomponent.ts +239 -239
- package/src/webcomponent/styles.d.ts.map +1 -0
- package/{lib → src}/webcomponent/styles.js +2 -1
- package/tsconfig.json +13 -26
- package/.eslintrc.json +0 -47
- package/lib/BrowserDialogHelper.d.ts.map +0 -1
- package/lib/ContainerType.d.ts.map +0 -1
- package/lib/Dialog.d.ts.map +0 -1
- package/lib/DockConfig.d.ts.map +0 -1
- package/lib/DockGraphDeserializer.d.ts.map +0 -1
- package/lib/DockGraphDeserializer.js +0 -114
- package/lib/DockGraphSerializer.d.ts +0 -14
- package/lib/DockGraphSerializer.d.ts.map +0 -1
- package/lib/DockLayoutEngine.d.ts.map +0 -1
- package/lib/DockManager.d.ts.map +0 -1
- package/lib/DockManagerContext.d.ts.map +0 -1
- package/lib/DockModel.d.ts.map +0 -1
- package/lib/DockNode.d.ts.map +0 -1
- package/lib/DockWheel.d.ts.map +0 -1
- package/lib/DockWheelItem.d.ts.map +0 -1
- package/lib/DocumentManagerContainer.d.ts.map +0 -1
- package/lib/DocumentTabPage.d.ts.map +0 -1
- package/lib/DraggableContainer.d.ts.map +0 -1
- package/lib/EventHandler.d.ts.map +0 -1
- package/lib/FillDockContainer.d.ts.map +0 -1
- package/lib/HorizontalDockContainer.d.ts +0 -7
- package/lib/HorizontalDockContainer.d.ts.map +0 -1
- package/lib/PanelContainer.d.ts.map +0 -1
- package/lib/Point.d.ts.map +0 -1
- package/lib/ResizableContainer.d.ts.map +0 -1
- package/lib/ResizeHandle.d.ts.map +0 -1
- package/lib/SplitterBar.d.ts.map +0 -1
- package/lib/SplitterDockContainer.d.ts.map +0 -1
- package/lib/SplitterPanel.d.ts.map +0 -1
- package/lib/TabHandle.d.ts.map +0 -1
- package/lib/TabHost.d.ts.map +0 -1
- package/lib/TabPage.d.ts.map +0 -1
- package/lib/UndockInitiator.d.ts.map +0 -1
- package/lib/Utils.d.ts.map +0 -1
- package/lib/VerticalDockContainer.d.ts +0 -7
- package/lib/VerticalDockContainer.d.ts.map +0 -1
- package/lib/enums/PanelType.d.ts.map +0 -1
- package/lib/enums/TabHostDirection.d.ts.map +0 -1
- package/lib/enums/WheelTypes.d.ts.map +0 -1
- package/lib/i18n/Defaults.d.ts.map +0 -1
- package/lib/i18n/Localizer.d.ts.map +0 -1
- package/lib/index.d.ts.map +0 -1
- package/lib/interfaces/IDockContainer.d.ts.map +0 -1
- package/lib/interfaces/IDockContainerWithSize.d.ts +0 -6
- package/lib/interfaces/IDockContainerWithSize.d.ts.map +0 -1
- package/lib/interfaces/ILayoutEventListener.d.ts.map +0 -1
- package/lib/interfaces/IMouseOrTouchEvent.d.ts.map +0 -1
- package/lib/interfaces/INodeInfo.d.ts +0 -8
- package/lib/interfaces/INodeInfo.d.ts.map +0 -1
- package/lib/interfaces/IPanelInfo.d.ts +0 -10
- package/lib/interfaces/IPanelInfo.d.ts.map +0 -1
- package/lib/interfaces/IRectangle.d.ts.map +0 -1
- package/lib/interfaces/ISize.d.ts.map +0 -1
- package/lib/interfaces/IState.d.ts.map +0 -1
- package/lib/interfaces/IThickness.d.ts.map +0 -1
- package/lib/webcomponent/DockSpawnTsWebcomponent.d.ts.map +0 -1
- package/lib/webcomponent/styles.d.ts.map +0 -1
- package/tsconfig.tsbuildinfo +0 -1
- /package/{lib → src}/BrowserDialogHelper.d.ts +0 -0
- /package/{lib → src}/ContainerType.d.ts +0 -0
- /package/{lib → src}/ContainerType.js +0 -0
- /package/{lib → src}/DockConfig.d.ts +0 -0
- /package/{lib → src}/EventHandler.d.ts +0 -0
- /package/{lib → src}/Point.d.ts +0 -0
- /package/{lib → src}/Utils.d.ts +0 -0
- /package/{lib → src}/enums/PanelType.d.ts +0 -0
- /package/{lib → src}/enums/PanelType.js +0 -0
- /package/{lib → src}/enums/TabHostDirection.d.ts +0 -0
- /package/{lib → src}/enums/TabHostDirection.js +0 -0
- /package/{lib → src}/enums/WheelTypes.d.ts +0 -0
- /package/{lib → src}/enums/WheelTypes.js +0 -0
- /package/{lib → src}/i18n/Defaults.d.ts +0 -0
- /package/{lib → src}/i18n/Defaults.js +0 -0
- /package/{lib → src}/index.d.ts +0 -0
- /package/{lib → src}/index.js +0 -0
- /package/{lib → src}/interfaces/IDockContainer.js +0 -0
- /package/{lib → src}/interfaces/IDockContainerWithSize.js +0 -0
- /package/{lib → src}/interfaces/ILayoutEventListener.js +0 -0
- /package/{lib → src}/interfaces/IMouseOrTouchEvent.d.ts +0 -0
- /package/{lib → src}/interfaces/IMouseOrTouchEvent.js +0 -0
- /package/{lib → src}/interfaces/INodeInfo.js +0 -0
- /package/{lib → src}/interfaces/IPanelInfo.js +0 -0
- /package/{lib → src}/interfaces/IRectangle.d.ts +0 -0
- /package/{lib → src}/interfaces/IRectangle.js +0 -0
- /package/{lib → src}/interfaces/ISize.d.ts +0 -0
- /package/{lib → src}/interfaces/ISize.js +0 -0
- /package/{lib → src}/interfaces/IState.js +0 -0
- /package/{lib → src}/interfaces/IThickness.d.ts +0 -0
- /package/{lib → src}/interfaces/IThickness.js +0 -0
- /package/{lib → src}/webcomponent/styles.d.ts +0 -0
|
@@ -1,44 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
1
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
2
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
3
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
4
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
5
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
6
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
7
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
8
|
+
});
|
|
9
|
+
};
|
|
10
|
+
import { DockWheel } from "./DockWheel";
|
|
11
|
+
import { Utils } from "./Utils";
|
|
12
|
+
import { Point } from "./Point";
|
|
13
|
+
import { DockManagerContext } from "./DockManagerContext";
|
|
14
|
+
import { DockNode } from "./DockNode";
|
|
15
|
+
import { DockLayoutEngine } from "./DockLayoutEngine";
|
|
16
|
+
import { EventHandler } from "./EventHandler";
|
|
17
|
+
import { Dialog } from "./Dialog";
|
|
18
|
+
import { DockGraphSerializer } from "./DockGraphSerializer";
|
|
19
|
+
import { DockGraphDeserializer } from "./DockGraphDeserializer";
|
|
20
|
+
import { PanelContainer } from "./PanelContainer";
|
|
21
|
+
import { DockConfig } from "./DockConfig";
|
|
22
|
+
import { PanelType } from "./enums/PanelType";
|
|
14
23
|
/**
|
|
15
24
|
* Dock manager manages all the dock panels in a hierarchy, similar to visual studio.
|
|
16
25
|
* It owns a Html Div element inside which all panels are docked
|
|
17
26
|
* Initially the document manager takes up the central space and acts as the root node
|
|
18
27
|
*/
|
|
19
28
|
export class DockManager {
|
|
20
|
-
element;
|
|
21
|
-
context;
|
|
22
|
-
dockWheel;
|
|
23
|
-
layoutEngine;
|
|
24
|
-
mouseMoveHandler;
|
|
25
|
-
touchMoveHandler;
|
|
26
|
-
layoutEventListeners;
|
|
27
|
-
closePanelContainerCallback;
|
|
28
|
-
defaultDialogPosition;
|
|
29
|
-
backgroundContext;
|
|
30
|
-
zIndexCounter;
|
|
31
|
-
zIndexTabHost;
|
|
32
|
-
zIndexTabHandle;
|
|
33
|
-
zIndexDialogCounter;
|
|
34
|
-
onKeyPressBound;
|
|
35
|
-
iframes;
|
|
36
|
-
_undockEnabled;
|
|
37
|
-
getElementCallback;
|
|
38
|
-
_config;
|
|
39
|
-
_activePanel;
|
|
40
|
-
_lastPanelNotADialog;
|
|
41
|
-
_activeDocument;
|
|
42
29
|
constructor(element, config) {
|
|
43
30
|
if (element === undefined)
|
|
44
31
|
throw new Error('Invalid Dock Manager element provided');
|
|
@@ -54,7 +41,7 @@ export class DockManager {
|
|
|
54
41
|
initialize() {
|
|
55
42
|
this.backgroundContext = this.element.children[0];
|
|
56
43
|
this.context = new DockManagerContext(this);
|
|
57
|
-
|
|
44
|
+
let documentNode = new DockNode(this.context.documentManagerView);
|
|
58
45
|
this.context.model.rootNode = documentNode;
|
|
59
46
|
this.context.model.documentManagerNode = documentNode;
|
|
60
47
|
this.context.model.dialogs = [];
|
|
@@ -77,9 +64,9 @@ export class DockManager {
|
|
|
77
64
|
this.element.addEventListener('keydown', this.onKeyPressBound);
|
|
78
65
|
}
|
|
79
66
|
onKeyPress(e) {
|
|
80
|
-
if (e.key ==
|
|
67
|
+
if (e.key == "Escape" && this.activePanel && !this.activePanel._hideCloseButton) {
|
|
81
68
|
if ((this.activePanel.isDialog && this._config.escClosesDialog) || (!this.activePanel.isDialog && this._config.escClosesWindow)) {
|
|
82
|
-
|
|
69
|
+
let panel = this.activePanel;
|
|
83
70
|
this.activePanel = null;
|
|
84
71
|
panel.close();
|
|
85
72
|
}
|
|
@@ -88,21 +75,21 @@ export class DockManager {
|
|
|
88
75
|
checkXBounds(container, currentMousePosition, previousMousePosition, resizeWest, resizeEast) {
|
|
89
76
|
if (this._config.moveOnlyWithinDockConatiner)
|
|
90
77
|
return this.checkXBoundsWithinDockContainer(container, currentMousePosition, previousMousePosition, resizeWest, resizeEast);
|
|
91
|
-
|
|
78
|
+
let rect = this.element.getBoundingClientRect();
|
|
92
79
|
let dx = Math.floor(currentMousePosition.x - previousMousePosition.x);
|
|
93
|
-
|
|
94
|
-
|
|
80
|
+
let leftBounds = container.offsetLeft + container.offsetWidth + dx + rect.left < 40; // || (container.offsetLeft + container.offsetWidth + dx - 40 ) < 0;
|
|
81
|
+
let rightBounds = container.offsetLeft + dx + rect.left > (window.innerWidth - 40);
|
|
95
82
|
if (leftBounds) {
|
|
96
83
|
previousMousePosition.x = currentMousePosition.x;
|
|
97
84
|
dx = 0;
|
|
98
|
-
|
|
85
|
+
let d = 40 - (container.offsetWidth + container.offsetLeft + rect.left);
|
|
99
86
|
if (d > 0)
|
|
100
87
|
dx = d;
|
|
101
88
|
}
|
|
102
89
|
else if (rightBounds) {
|
|
103
90
|
previousMousePosition.x = currentMousePosition.x;
|
|
104
91
|
dx = 0;
|
|
105
|
-
|
|
92
|
+
let d = (window.innerWidth - 40) - container.offsetLeft - rect.left;
|
|
106
93
|
if (d > 0)
|
|
107
94
|
dx = d;
|
|
108
95
|
}
|
|
@@ -110,10 +97,10 @@ export class DockManager {
|
|
|
110
97
|
}
|
|
111
98
|
checkXBoundsWithinDockContainer(container, currentMousePosition, previousMousePosition, resizeWest, resizeEast) {
|
|
112
99
|
let dx = currentMousePosition.x - previousMousePosition.x;
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
100
|
+
let bbOuter = this.element.getBoundingClientRect();
|
|
101
|
+
let bbInner = container.getBoundingClientRect();
|
|
102
|
+
let leftBounds = dx < 0 && bbInner.left + dx < bbOuter.left && !resizeEast;
|
|
103
|
+
let rightBounds = dx > 0 && bbInner.right + dx > bbOuter.right && !resizeWest;
|
|
117
104
|
if (leftBounds) {
|
|
118
105
|
currentMousePosition.x -= dx;
|
|
119
106
|
dx = bbOuter.left - bbInner.left;
|
|
@@ -129,10 +116,10 @@ export class DockManager {
|
|
|
129
116
|
checkYBounds(container, currentMousePosition, previousMousePosition, resizeNorth, resizeSouth) {
|
|
130
117
|
if (this._config.moveOnlyWithinDockConatiner)
|
|
131
118
|
return this.checkYBoundsWithinDockContainer(container, currentMousePosition, previousMousePosition, resizeNorth, resizeSouth);
|
|
132
|
-
|
|
119
|
+
let rect = this.element.getBoundingClientRect();
|
|
133
120
|
let dy = Math.floor(currentMousePosition.y - previousMousePosition.y);
|
|
134
|
-
|
|
135
|
-
|
|
121
|
+
let topBounds = container.offsetTop + dy + rect.top < 0;
|
|
122
|
+
let bottomBounds = container.offsetTop + dy + rect.top > (window.innerHeight - 16);
|
|
136
123
|
if (topBounds) {
|
|
137
124
|
previousMousePosition.y = currentMousePosition.y;
|
|
138
125
|
dy = 0;
|
|
@@ -140,7 +127,7 @@ export class DockManager {
|
|
|
140
127
|
else if (bottomBounds) {
|
|
141
128
|
previousMousePosition.y = currentMousePosition.y;
|
|
142
129
|
dy = 0;
|
|
143
|
-
|
|
130
|
+
let d = (window.innerHeight - 16) - container.offsetTop - rect.top;
|
|
144
131
|
if (d > 0)
|
|
145
132
|
dy = d;
|
|
146
133
|
}
|
|
@@ -148,10 +135,10 @@ export class DockManager {
|
|
|
148
135
|
}
|
|
149
136
|
checkYBoundsWithinDockContainer(container, currentMousePosition, previousMousePosition, resizeNorth, resizeSouth) {
|
|
150
137
|
let dy = currentMousePosition.y - previousMousePosition.y;
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
138
|
+
let bbOuter = this.element.getBoundingClientRect();
|
|
139
|
+
let bbInner = container.getBoundingClientRect();
|
|
140
|
+
let topBounds = dy < 0 && bbInner.top + dy < bbOuter.top && !resizeSouth;
|
|
141
|
+
let bottomBounds = dy > 0 && bbInner.bottom + dy > bbOuter.bottom && !resizeNorth;
|
|
155
142
|
if (topBounds) {
|
|
156
143
|
currentMousePosition.y -= dy;
|
|
157
144
|
dy = bbOuter.top - bbInner.top;
|
|
@@ -177,9 +164,8 @@ export class DockManager {
|
|
|
177
164
|
this.element.style.width = width + 'px';
|
|
178
165
|
this.element.style.height = height + 'px';
|
|
179
166
|
this.context.model.rootNode.container.resize(width, height);
|
|
180
|
-
let offsetX = 0;
|
|
181
|
-
let
|
|
182
|
-
for (const dialog of this.context.model.dialogs) {
|
|
167
|
+
let offsetX = 0, offsetY = 0;
|
|
168
|
+
for (let dialog of this.context.model.dialogs) {
|
|
183
169
|
if (dialog.position.x > this.element.clientWidth || dialog.position.y > this.element.clientHeight) {
|
|
184
170
|
if (offsetX > this.element.clientWidth || offsetY > this.element.clientHeight)
|
|
185
171
|
offsetX = 0, offsetY = 0;
|
|
@@ -190,8 +176,8 @@ export class DockManager {
|
|
|
190
176
|
}
|
|
191
177
|
}
|
|
192
178
|
/**
|
|
193
|
-
|
|
194
|
-
|
|
179
|
+
* Reset the dock model . This happens when the state is loaded from json
|
|
180
|
+
*/
|
|
195
181
|
setModel(model) {
|
|
196
182
|
Utils.removeNode(this.context.documentManagerView.containerElement);
|
|
197
183
|
this.context.model = model;
|
|
@@ -206,7 +192,7 @@ export class DockManager {
|
|
|
206
192
|
node.container.setActiveChild(child.container);
|
|
207
193
|
});
|
|
208
194
|
node.children.reverse();
|
|
209
|
-
|
|
195
|
+
let container = node.container;
|
|
210
196
|
node.container.resize(container.state.width, container.state.height);
|
|
211
197
|
// node.performLayout();
|
|
212
198
|
}
|
|
@@ -259,17 +245,17 @@ export class DockManager {
|
|
|
259
245
|
this.dockWheel.activeNode = this._findNodeOnPoint(e.clientX, e.clientY);
|
|
260
246
|
}
|
|
261
247
|
/**
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
248
|
+
* Perform a DFS (DeepFirstSearch) on the dock model's tree to find the
|
|
249
|
+
* deepest level panel (i.e. the top-most non-overlapping panel)
|
|
250
|
+
* that is under the mouse cursor
|
|
251
|
+
* Retuns null if no node is found under this point
|
|
252
|
+
*/
|
|
267
253
|
_findNodeOnPoint(x, y) {
|
|
268
|
-
|
|
254
|
+
let stack = [];
|
|
269
255
|
stack.push(this.context.model.rootNode);
|
|
270
256
|
let bestMatch;
|
|
271
257
|
while (stack.length > 0) {
|
|
272
|
-
|
|
258
|
+
let topNode = stack.pop();
|
|
273
259
|
if (Utils.isPointInsideNode(x, y, topNode)) {
|
|
274
260
|
// This node contains the point.
|
|
275
261
|
bestMatch = topNode;
|
|
@@ -333,21 +319,21 @@ export class DockManager {
|
|
|
333
319
|
return retdiag;
|
|
334
320
|
//try to undock just in case
|
|
335
321
|
try {
|
|
336
|
-
|
|
322
|
+
let node = this._findNodeFromContainer(container);
|
|
337
323
|
this.layoutEngine.undock(node);
|
|
338
324
|
}
|
|
339
325
|
catch (err) { }
|
|
340
|
-
|
|
326
|
+
let panel = container;
|
|
341
327
|
Utils.removeNode(panel.elementPanel);
|
|
342
328
|
panel.isDialog = true;
|
|
343
|
-
|
|
329
|
+
let dialog = new Dialog(panel, this, grayoutParent, disableResize);
|
|
344
330
|
dialog.setPosition(x, y);
|
|
345
331
|
return dialog;
|
|
346
332
|
}
|
|
347
333
|
_requestDockDialog(referenceNode, dialog, layoutDockFunction) {
|
|
348
334
|
// Get the active dialog that was dragged on to the dock wheel
|
|
349
|
-
|
|
350
|
-
|
|
335
|
+
let panel = dialog.panel;
|
|
336
|
+
let newNode = new DockNode(panel);
|
|
351
337
|
panel.prepareForDocking();
|
|
352
338
|
panel.elementContentContainer.style.zIndex = '';
|
|
353
339
|
dialog.destroy();
|
|
@@ -357,34 +343,37 @@ export class DockManager {
|
|
|
357
343
|
}
|
|
358
344
|
_checkShowBackgroundContext() {
|
|
359
345
|
if (this.backgroundContext != null) {
|
|
360
|
-
if (this.context.model.documentManagerNode.children.length > 0)
|
|
361
|
-
this.backgroundContext.style.display =
|
|
362
|
-
|
|
363
|
-
|
|
346
|
+
if (this.context.model.documentManagerNode.children.length > 0) {
|
|
347
|
+
this.backgroundContext.style.display = "none";
|
|
348
|
+
}
|
|
349
|
+
else {
|
|
350
|
+
this.backgroundContext.style.display = "block";
|
|
351
|
+
}
|
|
364
352
|
}
|
|
365
353
|
}
|
|
366
354
|
_requestDockContainer(referenceNode, container, layoutDockFunction, dockedToPrevious, ratio) {
|
|
367
355
|
// Get the active dialog that was dragged on to the dock wheel
|
|
368
|
-
|
|
356
|
+
let newNode = new DockNode(container);
|
|
369
357
|
if (container.containerType === 'panel') {
|
|
370
|
-
|
|
358
|
+
let panel = container;
|
|
371
359
|
panel.prepareForDocking();
|
|
372
360
|
Utils.removeNode(panel.elementPanel);
|
|
373
361
|
}
|
|
374
362
|
let ratios = null;
|
|
375
363
|
let oldSplitter;
|
|
376
|
-
if (referenceNode
|
|
364
|
+
if ((referenceNode === null || referenceNode === void 0 ? void 0 : referenceNode.parent) && referenceNode.parent.container) {
|
|
377
365
|
oldSplitter = referenceNode.parent.container;
|
|
378
366
|
if (oldSplitter.getRatios)
|
|
379
367
|
ratios = oldSplitter.getRatios();
|
|
380
368
|
}
|
|
381
369
|
layoutDockFunction(referenceNode, newNode);
|
|
382
370
|
if (ratio && newNode.parent && (newNode.parent.container.containerType === 'vertical' || newNode.parent.container.containerType === 'horizontal')) {
|
|
383
|
-
|
|
371
|
+
let splitter = newNode.parent.container;
|
|
384
372
|
if (ratios && oldSplitter == splitter) {
|
|
385
373
|
if (dockedToPrevious) {
|
|
386
|
-
for (let i = 0; i < ratios.length; i++)
|
|
374
|
+
for (let i = 0; i < ratios.length; i++) {
|
|
387
375
|
ratios[i] = ratios[i] - ratios[i] * ratio;
|
|
376
|
+
}
|
|
388
377
|
ratios.push(ratio);
|
|
389
378
|
}
|
|
390
379
|
else {
|
|
@@ -402,25 +391,25 @@ export class DockManager {
|
|
|
402
391
|
return newNode;
|
|
403
392
|
}
|
|
404
393
|
_requestTabReorder(container, e) {
|
|
405
|
-
|
|
394
|
+
let node = this._findNodeFromContainer(container);
|
|
406
395
|
this.layoutEngine.reorderTabs(node, e.handle, e.state, e.index);
|
|
407
396
|
}
|
|
408
397
|
/**
|
|
409
|
-
|
|
410
|
-
|
|
411
|
-
|
|
398
|
+
* Undocks a panel and converts it into a floating dialog window
|
|
399
|
+
* It is assumed that only leaf nodes (panels) can be undocked
|
|
400
|
+
*/
|
|
412
401
|
requestUndockToDialog(container, event, dragOffset) {
|
|
413
|
-
|
|
402
|
+
let node = this._findNodeFromContainer(container);
|
|
414
403
|
this.layoutEngine.undock(node);
|
|
415
|
-
|
|
404
|
+
let panelContainer = node.container;
|
|
416
405
|
panelContainer.elementPanel.style.display = 'block';
|
|
417
406
|
// Create a new dialog window for the undocked panel
|
|
418
|
-
|
|
407
|
+
let dialog = new Dialog(panelContainer, this, null);
|
|
419
408
|
if (panelContainer.lastDialogSize)
|
|
420
409
|
dialog.resize(panelContainer.lastDialogSize.width, panelContainer.lastDialogSize.height);
|
|
421
410
|
if (event !== undefined) {
|
|
422
411
|
// Adjust the relative position
|
|
423
|
-
|
|
412
|
+
let dialogWidth = dialog.elementDialog.clientWidth;
|
|
424
413
|
if (dragOffset.x > dialogWidth)
|
|
425
414
|
dragOffset.x = 0.75 * dialogWidth;
|
|
426
415
|
dialog.setPosition(event.clientX - dragOffset.x, event.clientY - dragOffset.y);
|
|
@@ -429,10 +418,10 @@ export class DockManager {
|
|
|
429
418
|
return dialog;
|
|
430
419
|
}
|
|
431
420
|
/**
|
|
432
|
-
|
|
433
|
-
|
|
421
|
+
* closes a Panel
|
|
422
|
+
*/
|
|
434
423
|
requestClose(container) {
|
|
435
|
-
|
|
424
|
+
let node = this._findNodeFromContainer(container);
|
|
436
425
|
this.layoutEngine.close(node);
|
|
437
426
|
if (this.activePanel == container)
|
|
438
427
|
this.activePanel = null;
|
|
@@ -443,15 +432,15 @@ export class DockManager {
|
|
|
443
432
|
}
|
|
444
433
|
}
|
|
445
434
|
/**
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
|
|
435
|
+
* Opens a Element in a Dialog
|
|
436
|
+
* It is assumed that only leaf nodes (panels) can be undocked
|
|
437
|
+
*/
|
|
449
438
|
openInDialog(container, event, dragOffset, disableResize) {
|
|
450
439
|
// Create a new dialog window for the undocked panel
|
|
451
|
-
|
|
440
|
+
let dialog = new Dialog(container, this, null, disableResize);
|
|
452
441
|
if (event != null) {
|
|
453
442
|
// Adjust the relative position
|
|
454
|
-
|
|
443
|
+
let dialogWidth = dialog.elementDialog.clientWidth;
|
|
455
444
|
if (dragOffset.x > dialogWidth)
|
|
456
445
|
dragOffset.x = 0.75 * dialogWidth;
|
|
457
446
|
dialog.setPosition(event.clientX - dragOffset.x, event.clientY - dragOffset.y);
|
|
@@ -460,34 +449,35 @@ export class DockManager {
|
|
|
460
449
|
return dialog;
|
|
461
450
|
}
|
|
462
451
|
/** Undocks a panel and converts it into a floating dialog window
|
|
463
|
-
|
|
464
|
-
|
|
452
|
+
* It is assumed that only leaf nodes (panels) can be undocked
|
|
453
|
+
*/
|
|
465
454
|
requestUndock(container) {
|
|
466
|
-
|
|
455
|
+
let node = this._findNodeFromContainer(container);
|
|
467
456
|
this.layoutEngine.undock(node);
|
|
468
457
|
}
|
|
469
458
|
/**
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
|
|
459
|
+
* Removes a dock container from the dock layout hierarcy
|
|
460
|
+
* Returns the node that was removed from the dock tree
|
|
461
|
+
*/
|
|
473
462
|
requestRemove(container) {
|
|
474
|
-
|
|
475
|
-
|
|
463
|
+
let node = this._findNodeFromContainer(container);
|
|
464
|
+
let parent = node.parent;
|
|
476
465
|
node.detachFromParent();
|
|
477
466
|
if (parent)
|
|
478
467
|
this.rebuildLayout(parent);
|
|
479
468
|
return node;
|
|
480
469
|
}
|
|
481
470
|
getNodeByElementId(id) {
|
|
482
|
-
|
|
471
|
+
var _a, _b;
|
|
472
|
+
let stack = [];
|
|
483
473
|
stack.push(this.context.model.rootNode);
|
|
484
474
|
while (stack.length > 0) {
|
|
485
|
-
|
|
475
|
+
let topNode = stack.pop();
|
|
486
476
|
if (topNode.container instanceof PanelContainer) {
|
|
487
477
|
if (topNode.container.elementContent.id === id)
|
|
488
478
|
return topNode;
|
|
489
479
|
if (topNode.container.elementContent instanceof HTMLSlotElement) {
|
|
490
|
-
if (topNode.container.elementContent.assignedElements()
|
|
480
|
+
if (((_b = (_a = topNode.container.elementContent.assignedElements()) === null || _a === void 0 ? void 0 : _a[0]) === null || _b === void 0 ? void 0 : _b.id) === id)
|
|
491
481
|
return topNode;
|
|
492
482
|
}
|
|
493
483
|
}
|
|
@@ -496,15 +486,16 @@ export class DockManager {
|
|
|
496
486
|
return null;
|
|
497
487
|
}
|
|
498
488
|
getNodeByElement(element) {
|
|
499
|
-
|
|
489
|
+
var _a;
|
|
490
|
+
let stack = [];
|
|
500
491
|
stack.push(this.context.model.rootNode);
|
|
501
492
|
while (stack.length > 0) {
|
|
502
|
-
|
|
493
|
+
let topNode = stack.pop();
|
|
503
494
|
if (topNode.container instanceof PanelContainer) {
|
|
504
495
|
if (topNode.container.elementContent === element)
|
|
505
496
|
return topNode;
|
|
506
497
|
if (topNode.container.elementContent instanceof HTMLSlotElement) {
|
|
507
|
-
if (topNode.container.elementContent.assignedElements()
|
|
498
|
+
if (((_a = topNode.container.elementContent.assignedElements()) === null || _a === void 0 ? void 0 : _a[0]) === element)
|
|
508
499
|
return topNode;
|
|
509
500
|
}
|
|
510
501
|
}
|
|
@@ -514,21 +505,25 @@ export class DockManager {
|
|
|
514
505
|
}
|
|
515
506
|
/** Finds the node that owns the specified [container] */
|
|
516
507
|
_findNodeFromContainer(container) {
|
|
517
|
-
|
|
508
|
+
//@ts-ignore
|
|
509
|
+
if (!container.title)
|
|
510
|
+
return this.findNodeFromContainerElement(container.containerElement);
|
|
511
|
+
let stack = [];
|
|
518
512
|
stack.push(this.context.model.rootNode);
|
|
519
513
|
while (stack.length > 0) {
|
|
520
|
-
|
|
521
|
-
|
|
514
|
+
let topNode = stack.pop();
|
|
515
|
+
//@ts-ignore
|
|
516
|
+
if (topNode.container.title === container.title)
|
|
522
517
|
return topNode;
|
|
523
518
|
[].push.apply(stack, topNode.children);
|
|
524
519
|
}
|
|
525
520
|
return null;
|
|
526
521
|
}
|
|
527
522
|
findNodeFromContainerElement(containerElement) {
|
|
528
|
-
|
|
523
|
+
let stack = [];
|
|
529
524
|
stack.push(this.context.model.rootNode);
|
|
530
525
|
while (stack.length > 0) {
|
|
531
|
-
|
|
526
|
+
let topNode = stack.pop();
|
|
532
527
|
if (topNode.container.containerElement === containerElement)
|
|
533
528
|
return topNode;
|
|
534
529
|
[].push.apply(stack, topNode.children);
|
|
@@ -564,15 +559,17 @@ export class DockManager {
|
|
|
564
559
|
}
|
|
565
560
|
notifyOnTabsReorder(dockNode) {
|
|
566
561
|
this.layoutEventListeners.forEach((listener) => {
|
|
567
|
-
if (listener.onTabsReorder)
|
|
562
|
+
if (listener.onTabsReorder) {
|
|
568
563
|
listener.onTabsReorder(this, dockNode);
|
|
564
|
+
}
|
|
569
565
|
});
|
|
570
566
|
}
|
|
571
567
|
notifyOnUnDock(dockNode) {
|
|
572
568
|
this._checkShowBackgroundContext();
|
|
573
569
|
this.layoutEventListeners.forEach((listener) => {
|
|
574
|
-
if (listener.onUndock)
|
|
570
|
+
if (listener.onUndock) {
|
|
575
571
|
listener.onUndock(this, dockNode);
|
|
572
|
+
}
|
|
576
573
|
});
|
|
577
574
|
}
|
|
578
575
|
notifyOnClosePanel(panel) {
|
|
@@ -585,69 +582,80 @@ export class DockManager {
|
|
|
585
582
|
this.notifyOnActiveDocumentChange(null, last);
|
|
586
583
|
}
|
|
587
584
|
this.layoutEventListeners.forEach((listener) => {
|
|
588
|
-
if (listener.onClosePanel)
|
|
585
|
+
if (listener.onClosePanel) {
|
|
589
586
|
listener.onClosePanel(this, panel);
|
|
587
|
+
}
|
|
590
588
|
});
|
|
591
589
|
}
|
|
592
590
|
notifyOnCreateDialog(dialog) {
|
|
593
591
|
this.layoutEventListeners.forEach((listener) => {
|
|
594
|
-
if (listener.onCreateDialog)
|
|
592
|
+
if (listener.onCreateDialog) {
|
|
595
593
|
listener.onCreateDialog(this, dialog);
|
|
594
|
+
}
|
|
596
595
|
});
|
|
597
596
|
}
|
|
598
597
|
notifyOnHideDialog(dialog) {
|
|
599
598
|
this.layoutEventListeners.forEach((listener) => {
|
|
600
|
-
if (listener.onHideDialog)
|
|
599
|
+
if (listener.onHideDialog) {
|
|
601
600
|
listener.onHideDialog(this, dialog);
|
|
601
|
+
}
|
|
602
602
|
});
|
|
603
603
|
}
|
|
604
604
|
notifyOnShowDialog(dialog) {
|
|
605
605
|
this.layoutEventListeners.forEach((listener) => {
|
|
606
|
-
if (listener.onShowDialog)
|
|
606
|
+
if (listener.onShowDialog) {
|
|
607
607
|
listener.onShowDialog(this, dialog);
|
|
608
|
+
}
|
|
608
609
|
});
|
|
609
610
|
}
|
|
610
611
|
notifyOnChangeDialogPosition(dialog, x, y) {
|
|
611
612
|
this.layoutEventListeners.forEach((listener) => {
|
|
612
|
-
if (listener.onChangeDialogPosition)
|
|
613
|
+
if (listener.onChangeDialogPosition) {
|
|
613
614
|
listener.onChangeDialogPosition(this, dialog, x, y);
|
|
615
|
+
}
|
|
614
616
|
});
|
|
615
617
|
}
|
|
616
618
|
notifyOnContainerResized(dockContainer) {
|
|
617
619
|
this.layoutEventListeners.forEach((listener) => {
|
|
618
|
-
if (listener.onContainerResized)
|
|
620
|
+
if (listener.onContainerResized) {
|
|
619
621
|
listener.onContainerResized(this, dockContainer);
|
|
622
|
+
}
|
|
620
623
|
});
|
|
621
624
|
}
|
|
622
625
|
notifyOnTabChange(tabpage) {
|
|
623
626
|
this.layoutEventListeners.forEach((listener) => {
|
|
624
|
-
if (listener.onTabChanged)
|
|
627
|
+
if (listener.onTabChanged) {
|
|
625
628
|
listener.onTabChanged(this, tabpage);
|
|
629
|
+
}
|
|
626
630
|
});
|
|
627
631
|
}
|
|
628
632
|
notifyOnActivePanelChange(panel, oldActive) {
|
|
629
633
|
this.layoutEventListeners.forEach((listener) => {
|
|
630
|
-
if (listener.onActivePanelChange)
|
|
634
|
+
if (listener.onActivePanelChange) {
|
|
631
635
|
listener.onActivePanelChange(this, panel, oldActive);
|
|
636
|
+
}
|
|
632
637
|
});
|
|
633
638
|
}
|
|
634
639
|
notifyOnActiveDocumentChange(panel, oldActive) {
|
|
635
640
|
this.layoutEventListeners.forEach((listener) => {
|
|
636
|
-
if (listener.onActiveDocumentChange)
|
|
641
|
+
if (listener.onActiveDocumentChange) {
|
|
637
642
|
listener.onActiveDocumentChange(this, panel, oldActive);
|
|
643
|
+
}
|
|
638
644
|
});
|
|
639
645
|
}
|
|
640
646
|
saveState() {
|
|
641
|
-
|
|
647
|
+
let serializer = new DockGraphSerializer();
|
|
642
648
|
return serializer.serialize(this.context.model);
|
|
643
649
|
}
|
|
644
|
-
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
650
|
+
loadState(json) {
|
|
651
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
652
|
+
let deserializer = new DockGraphDeserializer(this);
|
|
653
|
+
this.context.model = yield deserializer.deserialize(json);
|
|
654
|
+
this.setModel(this.context.model);
|
|
655
|
+
});
|
|
648
656
|
}
|
|
649
657
|
getPanels() {
|
|
650
|
-
|
|
658
|
+
let panels = [];
|
|
651
659
|
//all visible nodes
|
|
652
660
|
this._allPanels(this.context.model.rootNode, panels);
|
|
653
661
|
//all visible or not dialogs
|
|
@@ -673,30 +681,34 @@ export class DockManager {
|
|
|
673
681
|
});
|
|
674
682
|
}
|
|
675
683
|
updatePanels(ids) {
|
|
676
|
-
|
|
684
|
+
let panels = [];
|
|
677
685
|
//all visible nodes
|
|
678
686
|
this._allPanels(this.context.model.rootNode, panels);
|
|
679
687
|
//only remove
|
|
680
688
|
panels.forEach((panel) => {
|
|
681
|
-
if (!Utils.arrayContains(ids, panel.elementContent.id))
|
|
689
|
+
if (!Utils.arrayContains(ids, panel.elementContent.id)) {
|
|
682
690
|
panel.close();
|
|
691
|
+
}
|
|
683
692
|
});
|
|
684
693
|
this.context.model.dialogs.forEach((dialog) => {
|
|
685
|
-
if (Utils.arrayContains(ids, dialog.panel.elementContent.id))
|
|
694
|
+
if (Utils.arrayContains(ids, dialog.panel.elementContent.id)) {
|
|
686
695
|
dialog.show();
|
|
687
|
-
|
|
696
|
+
}
|
|
697
|
+
else {
|
|
688
698
|
dialog.hide();
|
|
699
|
+
}
|
|
689
700
|
});
|
|
690
701
|
return panels;
|
|
691
702
|
}
|
|
692
703
|
getVisiblePanels() {
|
|
693
|
-
|
|
704
|
+
let panels = [];
|
|
694
705
|
//all visible nodes
|
|
695
706
|
this._allPanels(this.context.model.rootNode, panels);
|
|
696
707
|
//all visible
|
|
697
708
|
this.context.model.dialogs.forEach((dialog) => {
|
|
698
|
-
if (!dialog.isHidden)
|
|
709
|
+
if (!dialog.isHidden) {
|
|
699
710
|
panels.push(dialog.panel);
|
|
711
|
+
}
|
|
700
712
|
});
|
|
701
713
|
return panels;
|
|
702
714
|
}
|
|
@@ -704,8 +716,9 @@ export class DockManager {
|
|
|
704
716
|
node.children.forEach((child) => {
|
|
705
717
|
this._allPanels(child, panels);
|
|
706
718
|
});
|
|
707
|
-
if (node.container.containerType === 'panel')
|
|
719
|
+
if (node.container.containerType === 'panel') {
|
|
708
720
|
panels.push(node.container);
|
|
721
|
+
}
|
|
709
722
|
}
|
|
710
723
|
get activeDocument() {
|
|
711
724
|
return this._activeDocument;
|
|
@@ -719,34 +732,39 @@ export class DockManager {
|
|
|
719
732
|
this._lastPanelNotADialog = value;
|
|
720
733
|
if (this._lastPanelNotADialog && this.getPanels().indexOf(this._lastPanelNotADialog) < 0)
|
|
721
734
|
this._lastPanelNotADialog = null;
|
|
722
|
-
|
|
735
|
+
let oldActive = this.activePanel;
|
|
723
736
|
if (this.activePanel) {
|
|
724
|
-
this.activePanel.elementTitle.classList.remove(
|
|
725
|
-
this.activePanel.elementTitleText.classList.remove(
|
|
726
|
-
if (this.activePanel.tabPage)
|
|
737
|
+
this.activePanel.elementTitle.classList.remove("dockspan-panel-active");
|
|
738
|
+
this.activePanel.elementTitleText.classList.remove("dockspan-panel-titlebar-text-active");
|
|
739
|
+
if (this.activePanel.tabPage) {
|
|
727
740
|
this.activePanel.tabPage.host.setActive(false);
|
|
741
|
+
}
|
|
728
742
|
}
|
|
729
743
|
this._activePanel = value;
|
|
730
|
-
|
|
731
|
-
if (value && value.panelType == PanelType.document)
|
|
744
|
+
let lastActiveDocument = this._activeDocument;
|
|
745
|
+
if (value && value.panelType == PanelType.document) {
|
|
732
746
|
this._activeDocument = value;
|
|
747
|
+
}
|
|
733
748
|
if (!value && oldActive && oldActive.isDialog && value == null && this._lastPanelNotADialog && this.activePanel != this._lastPanelNotADialog) {
|
|
734
749
|
value = this._lastPanelNotADialog;
|
|
735
750
|
this._lastPanelNotADialog = undefined;
|
|
736
751
|
}
|
|
737
752
|
this.notifyOnActivePanelChange(value, oldActive);
|
|
738
|
-
if (lastActiveDocument != this._activeDocument)
|
|
753
|
+
if (lastActiveDocument != this._activeDocument) {
|
|
739
754
|
this.notifyOnActiveDocumentChange(this._activeDocument, lastActiveDocument);
|
|
755
|
+
}
|
|
740
756
|
if (value) {
|
|
741
|
-
value.elementTitle.classList.add(
|
|
742
|
-
value.elementTitleText.classList.add(
|
|
743
|
-
if (value.tabPage)
|
|
757
|
+
value.elementTitle.classList.add("dockspan-panel-active");
|
|
758
|
+
value.elementTitleText.classList.add("dockspan-panel-titlebar-text-active");
|
|
759
|
+
if (value.tabPage) {
|
|
744
760
|
value.tabPage.host.setActive(true);
|
|
761
|
+
}
|
|
745
762
|
}
|
|
746
763
|
}
|
|
747
764
|
else {
|
|
748
|
-
if (value && value.tabPage)
|
|
765
|
+
if (value && value.tabPage) {
|
|
749
766
|
value.tabPage.host.setActive(true);
|
|
767
|
+
}
|
|
750
768
|
}
|
|
751
769
|
}
|
|
752
770
|
}
|