tibia-client/modules/corelib/ui/uiminiwindowcontainer.lua

104 lines
2.6 KiB
Lua
Raw Normal View History

2012-06-26 00:13:30 +02:00
-- @docclass
2012-02-07 01:41:53 +01:00
UIMiniWindowContainer = extends(UIWidget)
function UIMiniWindowContainer.create()
local container = UIMiniWindowContainer.internalCreate()
2012-06-21 21:31:22 +02:00
container.scheduledWidgets = {}
2012-02-07 01:41:53 +01:00
container:setFocusable(false)
container:setPhantom(true)
return container
end
function UIMiniWindowContainer:onDrop(widget, mousePos)
2012-03-28 21:09:45 +02:00
if widget:getClassName() == 'UIMiniWindow' then
2012-06-11 07:38:08 +02:00
local oldParent = widget:getParent()
if oldParent == self then
return true
end
2012-06-21 21:31:22 +02:00
if oldParent then
oldParent:removeChild(widget)
end
2012-06-11 07:38:08 +02:00
if widget.movedWidget then
local index = self:getChildIndex(widget.movedWidget)
self:insertChild(index + widget.movedIndex, widget)
else
self:addChild(widget)
end
2012-06-26 00:13:30 +02:00
2012-03-28 21:09:45 +02:00
return true
end
end
2012-06-21 21:31:22 +02:00
function UIMiniWindowContainer:swapInsert(widget, index)
local oldParent = widget:getParent()
local oldIndex = self:getChildIndex(widget)
if oldParent == self and oldIndex ~= index then
local oldWidget = self:getChildByIndex(index)
self:removeChild(oldWidget)
self:insertChild(oldIndex, oldWidget)
self:removeChild(widget)
self:insertChild(index, widget)
end
end
function UIMiniWindowContainer:scheduleInsert(widget, index)
if index - 1 > self:getChildCount() then
if self.scheduledWidgets[index] then
warning('replacing scheduled widget id ' .. widget:getId())
end
self.scheduledWidgets[index] = widget
else
local oldParent = widget:getParent()
if oldParent ~= self then
oldParent:removeChild(widget)
self:insertChild(index, widget)
2012-06-24 14:41:39 +02:00
while true do
local placed = false
for nIndex,nWidget in pairs(self.scheduledWidgets) do
if nIndex - 1 <= self:getChildCount() then
self:insertChild(nIndex, nWidget)
self.scheduledWidgets[nIndex] = nil
placed = true
break
end
2012-06-21 21:31:22 +02:00
end
2012-06-24 14:41:39 +02:00
if not placed then break end
2012-06-21 21:31:22 +02:00
end
2012-06-24 14:41:39 +02:00
end
end
end
function UIMiniWindowContainer:order()
local children = self:getChildren()
for i=1,#children do
if not children[i].miniLoaded then return end
end
for i=1,#children do
if children[i].miniIndex then
self:swapInsert(children[i], children[i].miniIndex)
2012-06-21 21:31:22 +02:00
end
end
end
function UIMiniWindowContainer:saveChildren()
local children = self:getChildren()
2012-06-24 14:41:39 +02:00
local ignoreIndex = 0
2012-06-21 21:31:22 +02:00
for i=1,#children do
2012-06-24 14:41:39 +02:00
if children[i].save then
children[i]:saveParentIndex(self:getId(), i - ignoreIndex)
else
ignoreIndex = ignoreIndex + 1
end
2012-06-21 21:31:22 +02:00
end
end
2012-02-07 01:41:53 +01:00
function UIMiniWindowContainer:getClassName()
return 'UIMiniWindowContainer'
end