View Single Post
05/11/16, 04:55 AM   #12
Ayantir
 
Ayantir's Avatar
AddOn Author - Click to view addons
Join Date: Jul 2014
Posts: 1,019
If you want to display stuff in a controll which is scrollable, just do :


Lua Code:
  1. <TopLevelControl name="MyXMLControl" hidden="true">
  2.     <Controls>
  3.  
  4.         <Control name="$(parent)Container" inherits="ZO_ScrollContainer">
  5.             <OnInitialized>
  6.                 ZO_Scroll_Initialize(self)
  7.             </OnInitialized>
  8.             <Dimensions x="850" y="630"/>
  9.             <Anchor point="BOTTOMLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="50" offsetY="650" />
  10.         </Control>
  11.  
  12.         <Label name="$(parent)Blabla">
  13.             <Dimensions x="830" />
  14.             <OnInitialized>
  15.                 self:SetParent(GetControl("MyXMLControlContainerScrollChild"))
  16.                 self:SetAnchor(TOPLEFT, MyXMLControlContainerScrollChild, TOPLEFT, 4, 4)
  17.             </OnInitialized>
  18.         </Label>
  19.  
  20.         <!-- Add other controlls here, same as previous -->
  21.        
  22.     <Controls>
  23. </TopLevelControl>



















If you want to create a Scroll list (Aka : A list of data which is scrollable)

XML

A row :

Lua Code:
  1. <Control name="KillCounterKillerRowTemplate" virtual="true" mouseEnabled="true">
  2.     <OnMouseEnter>
  3.         KillCounter_HoverRowOfDeaths(self)
  4.     </OnMouseEnter>
  5.     <OnMouseExit>
  6.         KillCounter_ExitRowOfDeaths(self)
  7.     </OnMouseExit>
  8.     <Dimensions x="600" y="30" />
  9.     <Controls>
  10.         <Texture name="$(parent)BG" inherits="ZO_ThinListBgStrip" />
  11.        
  12.         <Texture name="$(parent)Alliance" font="ZoFontGame" verticalAlignment="CENTER">
  13.             <Dimensions x="32" y="32" />
  14.             <Anchor point="TOPLEFT" relativeTo="$(parent)" />
  15.         </Texture>
  16.         <Texture name="$(parent)Rank" font="ZoFontGame" verticalAlignment="CENTER">
  17.             <Dimensions x="32" y="32" />
  18.             <Anchor point="TOPLEFT" relativeTo="$(parent)Alliance" relativePoint="TOPRIGHT" offsetX="5"/>
  19.         </Texture>
  20.         <Texture name="$(parent)PlayerClass" font="ZoFontGame" verticalAlignment="CENTER">
  21.             <Dimensions x="32" y="32" />
  22.             <Anchor point="TOPLEFT" relativeTo="$(parent)Rank" relativePoint="TOPRIGHT" offsetX="5"/>
  23.             <OnMouseEnter>
  24.                 KillCounter_Deaths_PlayerClassOnMouseEnter(self)
  25.             </OnMouseEnter>
  26.             <OnMouseExit>
  27.                 KillCounter_Deaths_PlayerClassOnMouseExit(self)
  28.             </OnMouseExit>
  29.         </Texture>
  30.         <Texture name="$(parent)Veteran" mouseEnabled="true" layer="OVERLAY">
  31.             <Anchor point="LEFT" relativePoint="RIGHT" relativeTo="$(parent)PlayerClass" offsetX="5" />
  32.             <Dimensions x="32" y="32"/>
  33.         </Texture>
  34.         <Label name="$(parent)PlayerLevel" font="ZoFontGame" verticalAlignment="CENTER">
  35.             <Dimensions x="32" y="32" />
  36.             <Anchor point="TOPLEFT" relativeTo="$(parent)Veteran" relativePoint="TOPRIGHT"/>
  37.         </Label>
  38.         <Label name="$(parent)PlayerName" font="ZoFontGame" verticalAlignment="CENTER">
  39.             <Dimensions x="150" y="32" />
  40.             <Anchor point="TOPLEFT" relativeTo="$(parent)PlayerLevel" relativePoint="TOPRIGHT"/>
  41.         </Label>
  42.         <Label name="$(parent)PlayerAccount" font="ZoFontGame" verticalAlignment="CENTER">
  43.             <Dimensions x="150" y="32" />
  44.             <Anchor point="TOPLEFT" relativeTo="$(parent)PlayerName" relativePoint="TOPRIGHT" />
  45.         </Label>
  46.         <Label name="$(parent)PlayerDeaths" font="ZoFontGame" verticalAlignment="CENTER">
  47.             <Dimensions x="75" y="32" />
  48.             <Anchor point="TOPLEFT" relativeTo="$(parent)PlayerAccount" relativePoint="TOPRIGHT" />
  49.         </Label>
  50.        
  51.     </Controls>
  52. </Control>



The list itself :

In the list we define the headers and the list.
Here I used sortable headers (the ones with the little triangles to sort).
ZO_SortHeader_Initialize is used to make an header with a name
ZO_SortHeader_InitializeArrowHeader is used to make an header without

Lua Code:
  1. <TopLevelControl name="Scene_KC_Menu_Deaths" inherits="ZO_RightPanelFootPrint" hidden="true">
  2.     <Controls>
  3.        
  4.         <Control name="$(parent)Headers">
  5.             <Dimensions x="600" y="32" />
  6.             <Anchor point="TOPLEFT" relativeTo="$(parent)" relativePoint="TOPLEFT" offsetX="300" offsetY="50"/>
  7.             <Controls>
  8.            
  9.                 <Control name="$(parent)Alliance" inherits="ZO_SortHeaderIcon">
  10.                     <OnInitialized>
  11.                         ZO_SortHeader_InitializeArrowHeader(self, "alliance", ZO_SORT_ORDER_DOWN)
  12.                         ZO_SortHeader_SetTooltip(self, GetString(SI_FRIENDS_LIST_PANEL_TOOLTIP_ALLIANCE))
  13.                     </OnInitialized>
  14.                     <Anchor point="TOPLEFT" relativeTo="$(parent)" offsetX="12"/>
  15.                     <Dimensions x="16" y="32" />
  16.                 </Control>
  17.                
  18.                 <Control name="$(parent)Rank" inherits="ZO_SortHeaderIcon">
  19.                     <OnInitialized>
  20.                         ZO_SortHeader_InitializeArrowHeader(self, "rank", ZO_SORT_ORDER_DOWN)
  21.                         ZO_SortHeader_SetTooltip(self, GetString(SI_STATS_ALLIANCE_RANK))
  22.                     </OnInitialized>
  23.                     <Anchor point="TOPLEFT" relativeTo="$(parent)Alliance" relativePoint="TOPRIGHT" offsetX="17"/>
  24.                     <Dimensions x="16" y="32" />
  25.                 </Control>
  26.                
  27.                 <Control name="$(parent)PlayerClass" inherits="ZO_SortHeaderIcon">
  28.                     <OnInitialized>
  29.                         ZO_SortHeader_InitializeArrowHeader(self, "playerclass", ZO_SORT_ORDER_DOWN)
  30.                         ZO_SortHeader_SetTooltip(self, GetString(SI_FRIENDS_LIST_PANEL_TOOLTIP_CLASS))
  31.                     </OnInitialized>
  32.                     <Anchor point="TOPLEFT" relativeTo="$(parent)Rank" relativePoint="TOPRIGHT" offsetX="20"/>
  33.                     <Dimensions x="16" y="32" />
  34.                 </Control>
  35.                
  36.                 <Control name="$(parent)PlayerLevel" inherits="ZO_SortHeaderIcon">
  37.                     <OnInitialized>
  38.                         ZO_SortHeader_InitializeArrowHeader(self, "playerlevel", ZO_SORT_ORDER_DOWN)
  39.                         ZO_SortHeader_SetTooltip(self, GetString(SI_FRIENDS_LIST_PANEL_TOOLTIP_LEVEL))
  40.                     </OnInitialized>
  41.                     <Anchor point="TOPLEFT" relativeTo="$(parent)PlayerClass" relativePoint="TOPRIGHT" offsetX="28"/>
  42.                     <Dimensions x="16" y="32" />
  43.                 </Control>
  44.                
  45.                 <Control name="$(parent)PlayerName" inherits="ZO_SortHeader">
  46.                     <OnInitialized>
  47.                         ZO_SortHeader_Initialize(self, "Name", "playername", ZO_SORT_ORDER_DOWN, TEXT_ALIGN_LEFT, "ZoFontGameLargeBold")
  48.                     </OnInitialized>
  49.                     <Anchor point="TOPLEFT" relativeTo="$(parent)PlayerLevel" relativePoint="TOPRIGHT" offsetX="35"/>
  50.                     <Dimensions x="150" y="32" />
  51.                 </Control>
  52.                
  53.                 <Control name="$(parent)PlayerAccount" inherits="ZO_SortHeader">
  54.                     <OnInitialized>
  55.                         ZO_SortHeader_Initialize(self, "Account", "playeraccount", ZO_SORT_ORDER_DOWN, TEXT_ALIGN_LEFT, "ZoFontGameLargeBold")
  56.                     </OnInitialized>
  57.                     <Anchor point="TOPLEFT" relativeTo="$(parent)PlayerName" relativePoint="TOPRIGHT"/>
  58.                     <Dimensions x="150" y="32" />
  59.                 </Control>
  60.                
  61.                 <Control name="$(parent)PlayerDeaths" inherits="ZO_SortHeader">
  62.                     <OnInitialized>
  63.                         ZO_SortHeader_Initialize(self, "Deaths", "deaths", ZO_SORT_ORDER_DOWN, TEXT_ALIGN_LEFT, "ZoFontGameLargeBold")
  64.                     </OnInitialized>
  65.                     <Anchor point="TOPLEFT" relativeTo="$(parent)PlayerAccount" relativePoint="TOPRIGHT"/>
  66.                     <Dimensions x="75" y="32" />
  67.                 </Control>
  68.                
  69.             </Controls>
  70.         </Control>
  71.        
  72.         <Control name="$(parent)List" inherits="ZO_ScrollList">
  73.             <Dimensions x="600" y="575" />
  74.             <Anchor point="TOPLEFT" relativeTo="$(parent)Headers" relativePoint="TOPLEFT" offsetX="0" offsetY="40" />
  75.         </Control>
  76.        
  77.     </Controls>
  78. </TopLevelControl>


Then, in Lua :


Lua Code:
  1. local myList = ZO_SortFilterList:Subclass()
  2.  
  3. function myList:New(control)
  4.    
  5.     ZO_SortFilterList.InitializeSortFilterList(self, control)
  6.    
  7.     -- tiebreaker  is used when values are equal. You can also add isNumeric = true if needed.
  8.     local sorterKeys =
  9.     {
  10.         ["deaths"] = {},
  11.         ["alliance"] = {tiebreaker = "deaths"},
  12.         ["rank"] = {tiebreaker = "deaths"},
  13.         ["playername"] = {tiebreaker = "deaths"},
  14.         ["playeraccount"] = {tiebreaker = "deaths"},
  15.         ["playerclass"] = {tiebreaker = "deaths"},
  16.         ["veteranrank"] = { tiebreaker = "deaths"},
  17.         ["playerlevel"] = { tiebreaker = "veteranrank"},
  18.     }
  19.    
  20.     self.masterList = {}
  21.     ZO_ScrollList_AddDataType(self.list, 1, "KillCounterKillerRowTemplate", 32, function(control, data) self:SetupEntry(control, data) end) -- Add my row
  22.     ZO_ScrollList_EnableHighlight(self.list, "ZO_ThinListHighlight") -- Enable the highlight (the turquoise color)
  23.     self.currentSortKey = "deaths" -- defaut sort
  24.    
  25.     self.sortFunction = function(listEntry1, listEntry2) return ZO_TableOrderingFunction(listEntry1.data, listEntry2.data, self.currentSortKey, sorterKeys, self.currentSortOrder) end -- my sort function
  26.     self:SetAlternateRowBackgrounds(true) -- Alternate background, one dark, one grey
  27.    
  28.     return self
  29.    
  30. end
  31.  
  32. function myList:SetupEntry(control, data)
  33.    
  34.     -- Setup a row
  35.    
  36.     control.data = data
  37.     control.alliance = GetControl(control, "Alliance")
  38.     control.rank = GetControl(control, "Rank")
  39.     control.playername = GetControl(control, "PlayerName")
  40.     control.playeraccount = GetControl(control, "PlayerAccount")
  41.     control.playerclass = GetControl(control, "PlayerClass")
  42.     control.playerlevel = GetControl(control, "PlayerLevel")
  43.     control.deaths = GetControl(control, "PlayerDeaths")
  44.     local veteran = GetControl(control, "Veteran")
  45.    
  46.     control.alliance:SetTexture(GetAllianceSymbolIcon(data.alliance))
  47.    
  48.     if data.rank >= 0 and data.rank <= 50 then
  49.         control.rank:SetTexture(GetAvARankIcon(data.rank))
  50.     else
  51.         control.rank:SetHidden(true)
  52.     end
  53.    
  54.     if GetClassIcon(data.playerclass) then
  55.         control.playerclass:SetTexture(GetClassIcon(data.playerclass))
  56.     else
  57.         control.playerclass:SetHidden(true)
  58.     end
  59.    
  60.     control.playerlevel:SetText(GetLevelOrVeteranRankStringNoIcon(data.playerlevel, data.veteranrank))
  61.    
  62.     if data.veteranrank and data.veteranrank > 0 then
  63.         veteran:SetTexture(GetVeteranRankIcon())
  64.     else
  65.         veteran:SetHidden(true)
  66.     end
  67.    
  68.     control.playername:SetText(data.playername)
  69.     control.playeraccount:SetText(data.playeraccount)
  70.     control.deaths:SetText(data.deaths)
  71.    
  72.     ZO_SortFilterList.SetupRow(self, control, data)
  73.    
  74. end
  75.  
  76. function myList:BuildMasterList()
  77.     self.masterList = {}
  78.     local killingList = db.killingList
  79.     if killingList then
  80.         for k, v in ipairs(killingList) do
  81.             local data = v
  82.             table.insert(self.masterList, data)
  83.         end
  84.     end
  85.    
  86. end
  87.  
  88. function myList:SortScrollList()
  89.     local scrollData = ZO_ScrollList_GetDataList(self.list)
  90.     table.sort(scrollData, self.sortFunction)
  91. end
  92.  
  93. function myList:FilterScrollList()
  94.    
  95.     -- If you want to add a filter
  96.    
  97.     local scrollData = ZO_ScrollList_GetDataList(self.list)
  98.     ZO_ClearNumericallyIndexedTable(scrollData)
  99.  
  100.     for i = 1, #self.masterList do
  101.         local data = self.masterList[i]
  102.         table.insert(scrollData, ZO_ScrollList_CreateDataEntry(1, data))
  103.     end
  104. end
  105.  
  106. function KillCounter_HoverRowOfDeaths(control)
  107.     myList:Row_OnMouseEnter(control)
  108. end
  109.  
  110. function KillCounter_ExitRowOfDeaths(control)
  111.     myList:Row_OnMouseExit(control)
  112. end



->



Last edited by Ayantir : 05/11/16 at 05:18 AM.
  Reply With Quote