@datagrok-libraries/dock-spawn-dg 0.0.2 → 0.1.0
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/CHANGELOG.md +0 -354
- 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 +168 -151
- package/src/DockManager.ts +860 -834
- 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 -148
- package/src/PanelContainer.ts +590 -577
- 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 +6 -10
- package/src/webcomponent/DockSpawnTsWebcomponent.d.ts.map +1 -0
- package/src/webcomponent/DockSpawnTsWebcomponent.js +178 -0
- package/src/webcomponent/DockSpawnTsWebcomponent.ts +207 -243
- 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/DockSpawnTsWebcomponent.js +0 -209
- 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,10 +505,13 @@ 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
|
-
|
|
514
|
+
let topNode = stack.pop();
|
|
521
515
|
//@ts-ignore
|
|
522
516
|
if (topNode.container.title === container.title)
|
|
523
517
|
return topNode;
|
|
@@ -526,10 +520,10 @@ export class DockManager {
|
|
|
526
520
|
return null;
|
|
527
521
|
}
|
|
528
522
|
findNodeFromContainerElement(containerElement) {
|
|
529
|
-
|
|
523
|
+
let stack = [];
|
|
530
524
|
stack.push(this.context.model.rootNode);
|
|
531
525
|
while (stack.length > 0) {
|
|
532
|
-
|
|
526
|
+
let topNode = stack.pop();
|
|
533
527
|
if (topNode.container.containerElement === containerElement)
|
|
534
528
|
return topNode;
|
|
535
529
|
[].push.apply(stack, topNode.children);
|
|
@@ -565,15 +559,17 @@ export class DockManager {
|
|
|
565
559
|
}
|
|
566
560
|
notifyOnTabsReorder(dockNode) {
|
|
567
561
|
this.layoutEventListeners.forEach((listener) => {
|
|
568
|
-
if (listener.onTabsReorder)
|
|
562
|
+
if (listener.onTabsReorder) {
|
|
569
563
|
listener.onTabsReorder(this, dockNode);
|
|
564
|
+
}
|
|
570
565
|
});
|
|
571
566
|
}
|
|
572
567
|
notifyOnUnDock(dockNode) {
|
|
573
568
|
this._checkShowBackgroundContext();
|
|
574
569
|
this.layoutEventListeners.forEach((listener) => {
|
|
575
|
-
if (listener.onUndock)
|
|
570
|
+
if (listener.onUndock) {
|
|
576
571
|
listener.onUndock(this, dockNode);
|
|
572
|
+
}
|
|
577
573
|
});
|
|
578
574
|
}
|
|
579
575
|
notifyOnClosePanel(panel) {
|
|
@@ -586,69 +582,80 @@ export class DockManager {
|
|
|
586
582
|
this.notifyOnActiveDocumentChange(null, last);
|
|
587
583
|
}
|
|
588
584
|
this.layoutEventListeners.forEach((listener) => {
|
|
589
|
-
if (listener.onClosePanel)
|
|
585
|
+
if (listener.onClosePanel) {
|
|
590
586
|
listener.onClosePanel(this, panel);
|
|
587
|
+
}
|
|
591
588
|
});
|
|
592
589
|
}
|
|
593
590
|
notifyOnCreateDialog(dialog) {
|
|
594
591
|
this.layoutEventListeners.forEach((listener) => {
|
|
595
|
-
if (listener.onCreateDialog)
|
|
592
|
+
if (listener.onCreateDialog) {
|
|
596
593
|
listener.onCreateDialog(this, dialog);
|
|
594
|
+
}
|
|
597
595
|
});
|
|
598
596
|
}
|
|
599
597
|
notifyOnHideDialog(dialog) {
|
|
600
598
|
this.layoutEventListeners.forEach((listener) => {
|
|
601
|
-
if (listener.onHideDialog)
|
|
599
|
+
if (listener.onHideDialog) {
|
|
602
600
|
listener.onHideDialog(this, dialog);
|
|
601
|
+
}
|
|
603
602
|
});
|
|
604
603
|
}
|
|
605
604
|
notifyOnShowDialog(dialog) {
|
|
606
605
|
this.layoutEventListeners.forEach((listener) => {
|
|
607
|
-
if (listener.onShowDialog)
|
|
606
|
+
if (listener.onShowDialog) {
|
|
608
607
|
listener.onShowDialog(this, dialog);
|
|
608
|
+
}
|
|
609
609
|
});
|
|
610
610
|
}
|
|
611
611
|
notifyOnChangeDialogPosition(dialog, x, y) {
|
|
612
612
|
this.layoutEventListeners.forEach((listener) => {
|
|
613
|
-
if (listener.onChangeDialogPosition)
|
|
613
|
+
if (listener.onChangeDialogPosition) {
|
|
614
614
|
listener.onChangeDialogPosition(this, dialog, x, y);
|
|
615
|
+
}
|
|
615
616
|
});
|
|
616
617
|
}
|
|
617
618
|
notifyOnContainerResized(dockContainer) {
|
|
618
619
|
this.layoutEventListeners.forEach((listener) => {
|
|
619
|
-
if (listener.onContainerResized)
|
|
620
|
+
if (listener.onContainerResized) {
|
|
620
621
|
listener.onContainerResized(this, dockContainer);
|
|
622
|
+
}
|
|
621
623
|
});
|
|
622
624
|
}
|
|
623
625
|
notifyOnTabChange(tabpage) {
|
|
624
626
|
this.layoutEventListeners.forEach((listener) => {
|
|
625
|
-
if (listener.onTabChanged)
|
|
627
|
+
if (listener.onTabChanged) {
|
|
626
628
|
listener.onTabChanged(this, tabpage);
|
|
629
|
+
}
|
|
627
630
|
});
|
|
628
631
|
}
|
|
629
632
|
notifyOnActivePanelChange(panel, oldActive) {
|
|
630
633
|
this.layoutEventListeners.forEach((listener) => {
|
|
631
|
-
if (listener.onActivePanelChange)
|
|
634
|
+
if (listener.onActivePanelChange) {
|
|
632
635
|
listener.onActivePanelChange(this, panel, oldActive);
|
|
636
|
+
}
|
|
633
637
|
});
|
|
634
638
|
}
|
|
635
639
|
notifyOnActiveDocumentChange(panel, oldActive) {
|
|
636
640
|
this.layoutEventListeners.forEach((listener) => {
|
|
637
|
-
if (listener.onActiveDocumentChange)
|
|
641
|
+
if (listener.onActiveDocumentChange) {
|
|
638
642
|
listener.onActiveDocumentChange(this, panel, oldActive);
|
|
643
|
+
}
|
|
639
644
|
});
|
|
640
645
|
}
|
|
641
646
|
saveState() {
|
|
642
|
-
|
|
647
|
+
let serializer = new DockGraphSerializer();
|
|
643
648
|
return serializer.serialize(this.context.model);
|
|
644
649
|
}
|
|
645
|
-
|
|
646
|
-
|
|
647
|
-
|
|
648
|
-
|
|
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
|
+
});
|
|
649
656
|
}
|
|
650
657
|
getPanels() {
|
|
651
|
-
|
|
658
|
+
let panels = [];
|
|
652
659
|
//all visible nodes
|
|
653
660
|
this._allPanels(this.context.model.rootNode, panels);
|
|
654
661
|
//all visible or not dialogs
|
|
@@ -674,30 +681,34 @@ export class DockManager {
|
|
|
674
681
|
});
|
|
675
682
|
}
|
|
676
683
|
updatePanels(ids) {
|
|
677
|
-
|
|
684
|
+
let panels = [];
|
|
678
685
|
//all visible nodes
|
|
679
686
|
this._allPanels(this.context.model.rootNode, panels);
|
|
680
687
|
//only remove
|
|
681
688
|
panels.forEach((panel) => {
|
|
682
|
-
if (!Utils.arrayContains(ids, panel.elementContent.id))
|
|
689
|
+
if (!Utils.arrayContains(ids, panel.elementContent.id)) {
|
|
683
690
|
panel.close();
|
|
691
|
+
}
|
|
684
692
|
});
|
|
685
693
|
this.context.model.dialogs.forEach((dialog) => {
|
|
686
|
-
if (Utils.arrayContains(ids, dialog.panel.elementContent.id))
|
|
694
|
+
if (Utils.arrayContains(ids, dialog.panel.elementContent.id)) {
|
|
687
695
|
dialog.show();
|
|
688
|
-
|
|
696
|
+
}
|
|
697
|
+
else {
|
|
689
698
|
dialog.hide();
|
|
699
|
+
}
|
|
690
700
|
});
|
|
691
701
|
return panels;
|
|
692
702
|
}
|
|
693
703
|
getVisiblePanels() {
|
|
694
|
-
|
|
704
|
+
let panels = [];
|
|
695
705
|
//all visible nodes
|
|
696
706
|
this._allPanels(this.context.model.rootNode, panels);
|
|
697
707
|
//all visible
|
|
698
708
|
this.context.model.dialogs.forEach((dialog) => {
|
|
699
|
-
if (!dialog.isHidden)
|
|
709
|
+
if (!dialog.isHidden) {
|
|
700
710
|
panels.push(dialog.panel);
|
|
711
|
+
}
|
|
701
712
|
});
|
|
702
713
|
return panels;
|
|
703
714
|
}
|
|
@@ -705,8 +716,9 @@ export class DockManager {
|
|
|
705
716
|
node.children.forEach((child) => {
|
|
706
717
|
this._allPanels(child, panels);
|
|
707
718
|
});
|
|
708
|
-
if (node.container.containerType === 'panel')
|
|
719
|
+
if (node.container.containerType === 'panel') {
|
|
709
720
|
panels.push(node.container);
|
|
721
|
+
}
|
|
710
722
|
}
|
|
711
723
|
get activeDocument() {
|
|
712
724
|
return this._activeDocument;
|
|
@@ -720,34 +732,39 @@ export class DockManager {
|
|
|
720
732
|
this._lastPanelNotADialog = value;
|
|
721
733
|
if (this._lastPanelNotADialog && this.getPanels().indexOf(this._lastPanelNotADialog) < 0)
|
|
722
734
|
this._lastPanelNotADialog = null;
|
|
723
|
-
|
|
735
|
+
let oldActive = this.activePanel;
|
|
724
736
|
if (this.activePanel) {
|
|
725
|
-
this.activePanel.elementTitle.classList.remove(
|
|
726
|
-
this.activePanel.elementTitleText.classList.remove(
|
|
727
|
-
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) {
|
|
728
740
|
this.activePanel.tabPage.host.setActive(false);
|
|
741
|
+
}
|
|
729
742
|
}
|
|
730
743
|
this._activePanel = value;
|
|
731
|
-
|
|
732
|
-
if (value && value.panelType == PanelType.document)
|
|
744
|
+
let lastActiveDocument = this._activeDocument;
|
|
745
|
+
if (value && value.panelType == PanelType.document) {
|
|
733
746
|
this._activeDocument = value;
|
|
747
|
+
}
|
|
734
748
|
if (!value && oldActive && oldActive.isDialog && value == null && this._lastPanelNotADialog && this.activePanel != this._lastPanelNotADialog) {
|
|
735
749
|
value = this._lastPanelNotADialog;
|
|
736
750
|
this._lastPanelNotADialog = undefined;
|
|
737
751
|
}
|
|
738
752
|
this.notifyOnActivePanelChange(value, oldActive);
|
|
739
|
-
if (lastActiveDocument != this._activeDocument)
|
|
753
|
+
if (lastActiveDocument != this._activeDocument) {
|
|
740
754
|
this.notifyOnActiveDocumentChange(this._activeDocument, lastActiveDocument);
|
|
755
|
+
}
|
|
741
756
|
if (value) {
|
|
742
|
-
value.elementTitle.classList.add(
|
|
743
|
-
value.elementTitleText.classList.add(
|
|
744
|
-
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) {
|
|
745
760
|
value.tabPage.host.setActive(true);
|
|
761
|
+
}
|
|
746
762
|
}
|
|
747
763
|
}
|
|
748
764
|
else {
|
|
749
|
-
if (value && value.tabPage)
|
|
765
|
+
if (value && value.tabPage) {
|
|
750
766
|
value.tabPage.host.setActive(true);
|
|
767
|
+
}
|
|
751
768
|
}
|
|
752
769
|
}
|
|
753
770
|
}
|