require("gredom")
-- Print a list of all of the user variables associated with a specified
-- control
function print_variables(control_name)
-- Get the DOM object for the control name passed in
local domObject = gredom.get_object(control_name)
if(domObject == nil) then
print("Can't find name for " .. tostring(control_name))
return
end
-- Get the variables defined on this DOM object
local vars = domObject:get_variables()
if(vars == nil or #vars == 0) then
print("No variables for " .. control_name)
else
print("Variables for " .. control_name)
for i=1,#vars do
print("# " .. tostring(vars[i]))
end
end
end
-- Print out all of the screens where this control's container layer is
-- being used
function print_used_on_screens(control_name)
-- Get the DOM object for the control name passed in
local domObject = gredom.get_object(control_name)
if(domObject == nil) then
print("Can't find name for " .. tostring(control_name))
return
end
-- Build up the full path to this object
-- Walk up the tree looking at all parents adding screens we find
local screen_list = {}
local parent_list = {}
table.insert(parent_list, domObject:get_parents())
local i = 1
while i <= #parent_list do
local parents = parent_list[i]
for p=1,#parents do
-- If this was a screen, add it to our collection
if parents[p]:get_type() == gredom.SCREEN then
screen_list[parents[p]] = true
else
-- If this has parents of its own, then add them to the search
-- list
parents = parents[p]:get_parents()
if(parents ~= nil and #parents > 0) then
table.insert(parent_list, parents)
end
end
end
i = i + 1
end
-- Print out all of the screens that we have identified
print(control_name .. " is used on the following screens:")
for screen,v in pairs(screen_list) do
print("# " .. screen:get_name())
end
end
-- Invoke our DOM example functions with the context control
function CBDom(mapargs)
print_used_on_screens(mapargs.context_control)
print_variables(mapargs.context_control)
end