Skip to content

Instantly share code, notes, and snippets.

@Meorawr
Created June 11, 2022 16:35
Show Gist options
  • Save Meorawr/553c4ec08174708a224444292c0c7117 to your computer and use it in GitHub Desktop.
Save Meorawr/553c4ec08174708a224444292c0c7117 to your computer and use it in GitHub Desktop.
Scrollable Tree Frame Demo
ScrollableTreeFrameMixin = {};
function ScrollableTreeFrameMixin:OnLoad()
self.DataProvider = CreateTreeListDataProvider();
for i = 1, 10 do
-- The data supplied to the insert calls is arbitrary; it can be accessed
-- from the 'node:GetData()' call later in the element initializer.
local level1 = self.DataProvider:Insert(format("Node %d", i));
for j = 1, fastrandom(3, 6) do
local level2 = level1:Insert(format("Node %d.%d", i, j));
for k = 1, fastrandom(1, 3) do
level2:Insert(format("Node %d.%d.%d", i, j, k))
end
end
end
self.ScrollView = CreateScrollBoxListTreeListView();
self.ScrollView:SetDataProvider(self.DataProvider);
self.ScrollView:SetElementExtent(21);
self.ScrollView:SetElementInitializer("Button", "UIPanelButtonTemplate", function(button, node, ...)
button:SetText(node:GetData());
button:SetScript("OnClick", function() node:ToggleCollapsed(); end);
button:Show();
end);
self.ScrollBar = CreateFrame("EventFrame", nil, self, "WowTrimScrollBar");
self.ScrollBar:SetPoint("TOPRIGHT");
self.ScrollBar:SetPoint("BOTTOMRIGHT");
self.ScrollBox = CreateFrame("Frame", nil, self, "WowScrollBoxList");
self.ScrollBox:SetPoint("TOPLEFT");
self.ScrollBox:SetPoint("BOTTOMRIGHT", self.ScrollBar, "BOTTOMLEFT");
ScrollUtil.InitScrollBoxListWithScrollBar(self.ScrollBox, self.ScrollBar, self.ScrollView);
end
ScrollableTreeFrame = Mixin(CreateFrame("Frame", nil, UIParent), ScrollableTreeFrameMixin);
ScrollableTreeFrame:OnLoad();
ScrollableTreeFrame:SetPoint("CENTER");
ScrollableTreeFrame:SetSize(640, 480);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment