Hi Edwardcox,
It is sunday, and tomorrow I come back to the forum.
JDom is nothing to do with Java.
First,
if you remove JDom calls in your component, it doesn't break the application layer. But you have to reconstruct manually the code. Try to copy/paste what is returned in HTML to have a base.
But JDom is really more powerfull if you correctly customize it.
Every control (input, select, imagepicker, etc...) is a single file.
So if you want to modify the HTML of a control, you will ONLY modify ONE file.
In the build() function of this file, you change the HTML output.
BUT, sometimes, the build() function is inherited (file, image, ...), so it makes it complicated.
TODO : look after the build() method in you JDom files, (and searching in its parent file if you don't find it)
build() function get the parameters and contruct with that.
It means that you can add as many parameters for that render method.
To add parameters, look in the __construct() method of this file.
Parameters ar inherithed too, so you only see specific parameters.
For example, dataObject is very common parameter, so it is asked in a low level files (html.fly, html.form...)
MORE ADVANCED :
For assets (javascript, css, images, ...)
it is little bit more complicated, but you can look after colorpicker to have an example.
Another good file to read is html.php wich contains some usefull functions to call from the build() function.
dom.php contains framework system and have also some usefull functions to access the files in general.
Sunday is a good day to discover JDom on your free time.
Enjoy it !!!