The DirectUI package is currently a work in progress, and may change completely at some point.
I'm not going to post a full list of functions and how they work here, but you can take a look with code like:
for (var i in DirectUI) Console.print("Found: "+i);
for (var i in DirectUI.Value) Console.print("Found: Value."+i);
etc.
A test package I used for testing that might help to get started follows:
JAVASCRIPT Code
function getGlobal(){
return (function(){
return this;
}).call(null);
}
function registerDependencies(packageapi) {
var g=getGlobal();
var dependencies=packageapi.getDependencies();
for (var i in dependencies) {
var name=dependencies[i];
var shortname=name.split(".").pop();
g[shortname]=packageapi.getExport(name);
}
}
var myXml='\
<element resid=ExtraCheckboxResID class="UserOptionsItem" layout=BorderLayout()>\
<element layoutpos=left layout=FillLayout()>\
<Checkbox id=atom(idDisableStuffplugChk) text="&Disable StuffPlug" accname="&Disable StuffPlug" accdesc="Disable StuffPlug" tooltip=false shortcut=82 accdefaction="Press" Class="CheckBox" Padding=Rect(0,2,0,2) Margin=rect(4,3,4,3) Layout=BorderLayout() TextPadding=Rect(2,2,2,2) TextAlign=20>\
<ButtonIcon LayoutPos=left/>\
<ButtonText LayoutPos=client Margin=Rect(1,0,0,0)/>\
</Checkbox>\
</element>\
</element>\
';
var createFromXml={};
var tested=false;
function DirectUICallback(resid,root) {
if (resid=="logonFrameResID") {
var userOptionsGroup=root.FindDescendent("idUserOptionsGroup");
if (userOptionsGroup) {
var c=createFromXml.ExtraCheckboxResID({});
userOptionsGroup.Add©;
} else throw ("userOptionsGroup not found");
}
}
function parseXML(xml) {
var parser=new UIFileParser.Parser(xml);
var compiled=parser.compile();
var ret={};
var callback=new UIFileParser.ToDUICallback();
for (var i in compiled.elements)
ret[i]=(compiled.elements[i])(callback);
return ret;
}
function onInitialize(packageapi) {
registerDependencies(packageapi);
Console.show();
Console.print("TestPackage loaded");
Console.print("Checkbox parsing:");
createFromXml=parseXML(myXml);
DirectUI.RegisterEventHandler({onCreatedElement: DirectUICallback });
}
function onDeinitialize() {
}