public UTinyCodePanel(IRegistry registry, UTinyModule.Reference mainModule, State state) { m_Registry = registry; m_MainModule = mainModule; // Init tree if (null == state.TreeState) { state.TreeState = new UTinyCodeTreeState(); } state.TreeState.Init(UTinyCodeTreeView.CreateMultiColumnHeaderState()); m_TreeView = new UTinyCodeTreeView(state.TreeState, new UTinyCodeTreeModel(registry, mainModule)) { HasContextMenu = true, }; // Init code editors m_SystemEditorControl = new UTinySystemEditorControl(registry, mainModule); m_ScriptEditorControl = new UTinyScriptEditorControl(registry); // Register events m_TreeView.OnContextMenuEvent += HandleContextMenuEvent; m_TreeView.OnRenameEnded += HandleRenameEnded; m_SystemEditorControl.OnRenameEnded += HandleRenameEnded; m_ScriptEditorControl.OnRenameEnded += HandleRenameEnded; var leftPanel = new UTinyPanel(); leftPanel.AddElement(CreateLeftToolbar()); leftPanel.AddElement(m_TreeView); m_RightPanel = new UTinyPanel(); m_RightPanel.AddElement(CreateRightToolbar()); m_RightPanel.AddElement(m_SystemEditorControl); if (null == state.SeparatorState) { state.SeparatorState = new Separator.State(); } var separator = new Separator(leftPanel, m_RightPanel, state.SeparatorState) { MinLeft = 350, MinRight = 300 }; AddElement(separator); if (null != UTinySystemExecutionGraphWindow.Instance) { UTinySystemExecutionGraphWindow.Instance.Registry = m_Registry; UTinySystemExecutionGraphWindow.Instance.Module = m_MainModule; } }