-- In this file we define functions that serves as an interface between the framework of the
-- editor (C++ code), and the ui. Ideally the C++ should never manipulate the ui directly.
-- It should rather call functions in this interface to do the job.
-- This allow for easy customisation, because users can replace any function with their
-- own lua code (possibly forwarding to the previous function).
-- This file works in close relation with the r2.xml file with contains the actual ui



-------------
-------------
-- GLOBALS --
-------------
-------------

-- The following table is intended to contain ui related classes & functions
-- For now the ui stuffs are being migrated into this table
-- TODO nico : move ui stuff here to 'depolute' the r2 table

r2.ui = {}


-----------------
-----------------
-- GLOBAL INIT --
-----------------
-----------------

function r2:initUI()	
	self:buildPaletteUI()
	r2.FeatureTree.buildFeatureTreeUI()
	r2:refreshWindowButtons()		
	--updateAllLocalisedElements()	
	-- init all forms
	for k, form in pairs(r2.Forms) do
		form.NameToProp = {}
		for l, prop in pairs(form.Prop) do
			form.NameToProp[prop.Name] = prop
		end
	end
	-- make the admin window point on the main page (obsolete, replaced by Session Browser)
	-- if browseRingWindowHomePage ~= nil then
	-- 	browseRingWindowHomePage()	
	-- else
	-- 	debugInfo("---> ERROR: what is browseRingWindowHomePage?")
	-- end
	r2.SelectBar:init()
	local paletteWnd = getUI("ui:interface:r2ed_palette")
	local debugPanel = paletteWnd:find("debug_panel").button_enclosing	
	local extDbg = (config.R2EDExtendedDebug == 1)

	local chooseLocationWnd = getUI("ui:interface:r2ed_acts")
	local ringLevelDebug = chooseLocationWnd:find("ring_level")

	if debugPanel then		
		debugPanel.reset_ed.active = extDbg
		debugPanel.reset_ed_and_reload_ui.active = extDbg
		debugPanel.reload_core.active = extDbg
		debugPanel.inspect_r2.active = extDbg
		debugPanel.reset_display.active = extDbg
		ringLevelDebug.active = extDbg
		-- debugPanel.test.active = extDbg
		-- debugPanel.create_scenario.active = extDbg
		-- debugPanel.create_act.active = extDbg
		-- debugPanel.connect_scenario.active = extDbg
		-- debugPanel.reconnect_scenario.active = extDbg
		 -- debugPanel.list_adventures.active = extDbg      
	end
	paletteWnd:find("tab2").active = true
	paletteWnd:find("tab2_bm").active = true
	paletteWnd:find("tab4").active = extDbg
	paletteWnd:find("tab4_bm").active = extDbg			
end


-----------
-----------
-- TESTS --
-----------
-----------
function testTree()
	local headNode = SNode()
	local rootNode = SNode()
	headNode:addChild(rootNode)
	rootNode.Text = "Root"
	rootNode.Opened = true
	rootNode.Bitmap = "ICO_Atys.tga"
	local tree = getUI(r2.instanceTree);
	for i = 1,3 do
		local son = SNode()
		son.Text = "Node " .. tostring(i)
		rootNode:addChild(son)
	end
	tree:setRootNode(headNode)
	tree:forceRebuild()
end