summaryrefslogtreecommitdiff
path: root/Data/Scripts/EditorGUI/EditorWindowManager.lua
blob: 56083df02064ef5e84d96124f8ccc8665781b821 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
local inspect         = require("inspect")
local Debug           = require("GameLab.Debug")
local ContainerWindow = require("GameLab.Editor.Window.ContainerWindow")
local GUIWindow       = require("GameLab.Editor.Window.GUIWindow")
local SplitWindow     = require("GameLab.Editor.Window.SplitWindow")
local ESplitMode      = GameLab.Editor.Window.ESplitMode
local Rect            = require("GameLab.Engine.Math.Rect")

local EditorWindowManager = {}

EditorWindowManager.splitWindows = {} 
EditorWindowManager.containerWindows = {} 
EditorWindowManager.guiWindows = {} 
EditorWindowManager.rootSplitWindow = nil
EditorWindowManager.mainWindow = nil

local splitWindows = EditorWindowManager.splitWindows
local containerWindows = EditorWindowManager.containerWindows
local guiWindows = EditorWindowManager.guiWindows

-- 申请一个GUIWindow并
EditorWindowManager.ClaimGUIWindow = function() 
    if #splitWindows == 0 then 
        local sp = SplitWindow.New()
        table.insert( splitWindows, sp)

    end 
end

EditorWindowManager.SetMainWindow = function(wnd) 
    EditorWindowManager.mainWindow = wnd
end 

EditorWindowManager.TestGUIWindow = function() 
    Debug.Log("TestGUIWindow")

    local guiWindow = GUIWindow.New() 
    guiWindow:SetContainerWindow(EditorWindowManager.mainWindow)

    local guiWindow2 = GUIWindow.New() 
    guiWindow2:SetContainerWindow(EditorWindowManager.mainWindow)
    
    local guiWindow3 = GUIWindow.New() 
    guiWindow3:SetContainerWindow(EditorWindowManager.mainWindow)

    local guiWindow4 = GUIWindow.New() 
    guiWindow4:SetContainerWindow(EditorWindowManager.mainWindow)

    local splitWnd = SplitWindow.New(ESplitMode.Horizontal, {0.3, 0.7} )
    EditorWindowManager.rootSplitWindow = splitWnd
    splitWnd:AddSubWindow(guiWindow)

    local splitWnd2 = SplitWindow.New(ESplitMode.Vertical, {0.5} )

    splitWnd:AddSubWindow(splitWnd2)

    splitWnd:AddSubWindow(guiWindow4)

    guiWindow.m_SplitWindow = splitWnd
    guiWindow4.m_SplitWindow = splitWnd
    
    splitWnd2:AddSubWindow(guiWindow2)
    splitWnd2:AddSubWindow(guiWindow3)
    guiWindow2.m_SplitWindow = splitWnd2 
    guiWindow3.m_SplitWindow = splitWnd2 

    local mainWindowSize = EditorWindowManager.mainWindow:GetSize() 
    local position = Rect.New() 
    position.x = 0 
    position.y = 0 
    position.width = mainWindowSize.x
    position.height = mainWindowSize.y

    splitWnd:SetPosition(position)

    EditorWindowManager.mainWindow:SetRootSplitWindow(splitWnd)

end 

return EditorWindowManager