Problem ------- Forms is hardcoded to support absolute positioning. This will work for the short-term; however, the request is constantly made for some "better" (sic) layout management systems. We even have patches from Madlocke that implement several layout engines. We don't, however, want to clutter up the forms code or the forms GFParser with support for all the different layout management styles. Solution -------- Remove ANY positioning logic from the basic Forms DTD and implement all positioning using Layout Adapters, qualified by an XML namespace (Grid, GridBox, Absolute, Box) Advantages ---------- It removes positioning ugliness from the forms code and puts it in the Layout Adapter code. It allows us to keep our current absolute positioning that has worked so well. It makes other people happy without requiring us to actually support them :) Disadvantages ------------- It does break existing forms. However, code could be put in GFObjects to implicitly convert hardcoded x,y attributes to namespace-qualified x,y attributes. This has the added advantage that, whenever a form is opened in Designer and resaved, it will be in the new format. Even without resaving, the old format will be converted on the fly for the interim (interim == the next few release cycles) Also, we will have to remove the current positioning logic from the UI drivers and into an Absolute Positioning layout adapter. (err, is this an advantage or a disadvantage?) ============================================================================== Sample using no layout management ==============================================================================
============================================================================== Sample using Absolute Positioning ==============================================================================
============================================================================== Sample using Box Layout ==============================================================================
============================================================================== Sample using Box Layout ==============================================================================