function onContainerOpen(container, previousContainer)
local containerWindow
if previousContainer then
containerWindow = previousContainer.window
previousContainer.window = nil
previousContainer.itemsPanel = nil
else
containerWindow = g_ui.createWidget('ContainerWindow')
end
containerWindow:setId('container' .. container:getId())
local containerPanel = containerWindow:getChildById('contentsPanel')
local containerItemWidget = containerWindow:getChildById('containerItemWidget')
containerWindow.onClose = function()
g_game.close(container)
containerWindow:hide()
end
-- this disables scrollbar auto hiding
local scrollbar = containerWindow:getChildById('miniwindowScrollBar')
scrollbar:mergeStyle({
['$!on'] = {}
})
local upButton = containerWindow:getChildById('upButton')
upButton.onClick = function()
g_game.openParent(container)
end
upButton:setVisible(container:hasParent())
local name = container:getName()
name = name:sub(1, 1):upper() .. name:sub(2)
if name:len() > 14 then
name = name:sub(1, 14) .. "..."
end
containerWindow:setText(name)
containerItemWidget:setItem(container:getContainerItem())
containerItemWidget:setPhantom(true)
containerPanel:destroyChildren()
for slot = 0, container:getCapacity() - 1 do
local itemWidget = g_ui.createWidget('Item', containerPanel)
itemWidget:setId('item' .. slot)
itemWidget:setItem(container:getItem(slot))
ItemsDatabase.setRarityItem(itemWidget, container:getItem(slot))
ItemsDatabase.setTier(itemWidget, container:getItem(slot))
if modules.client_options.getOption('showExpiryInContainers') then
ItemsDatabase.setCharges(itemWidget, container:getItem(slot))
ItemsDatabase.setDuration(itemWidget, container:getItem(slot))
end
itemWidget:setMargin(0)
itemWidget.position = container:getSlotPosition(slot)
if not container:isUnlocked() then
itemWidget:setBorderColor('red')
end
end
container.window = containerWindow
container.itemsPanel = containerPanel
toggleContainerPages(containerWindow, container:hasPages())
refreshContainerPages(container)
local layout = containerPanel:getLayout()
local cellSize = layout:getCellSize()
containerWindow:setContentMinimumHeight(cellSize.height)
containerWindow:setContentMaximumHeight(cellSize.height * layout:getNumLines() + 15)
if not previousContainer then
local panel = modules.game_interface.findContentPanelAvailable(containerWindow, cellSize.height)
panel:addChild(containerWindow)
if modules.client_options.getOption('openMaximized') then
containerWindow:setContentHeight(cellSize.height * layout:getNumLines())
else
local filledLines = math.max(math.ceil(container:getItemsCount() / layout:getNumColumns()), 1)
containerWindow:setContentHeight(filledLines * cellSize.height)
end
end
containerWindow.canMoveToGameRootPanel = false
containerWindow:setup()
end