Core changes
setClicked() argument changed (breaking)
The setClicked(IClickBase) method has been replaced by two separate methods:
- setClicked(IClicked<?>)
- setClicked2(IClicked2<?>)
This change allows for easier use of lambda's as the type for the method is now well-defined. So instead of having to write
d.setClicked((IClicked<Div>) b -> setCurrentTab(ti));
you can now invoke the lambda without a cast:
d.setClicked(b -> setCurrentTab(ti));
This change will some existing code as all calls to setClicked that passed a IClicked2 instance now need to use setClicked2.
Private and protected properties can be used in binding/metadata
When binding was used to connect properties to controls it required that the property bound to was public. But in many cases the binding and the properties are part of one (set of) classes, with no need to have those properties propagated to the outside world.
DomUI now detects private properties in its metamodel, and allows getting/setting the value of these properties through the metamodel. Some restrictions apply, however:
- Private properties are only detected in the actual class, not in parent classes.
- Odd definitions, like private setter and public getter, might have undesired results. The default for DomUI is to treat the private method as non-existing, so in this case it would present the property as read-only even though a private setter exists.
Logger changes
DomUI uses the "etclogger" SLF4J backend by default. The code to initialize this was quite old, and had a lot of nasty things related to the config file's location. The initialization part has been rewritten to have less oddities surrounding the config file, so that no directories are created at wrong places.
The new default config file will be in WEB-INF if it is not expressly specified with a full path.
The default name of the config file is now etclogger.config.xml
Changed/new functionality
Animations
The animation methods slideUp(), slideDown(), fadeIn() and fadeOut() have been removed from the Div tag. They should be replaced by calling Animations.xxxx with the node to animate.
DataTable
- The RowRenderer now sets columns that are defined from metadata to SORT_ASCENDING if the metadata specifies unknown sort. To prevent set the metadata to UNSORTABLE. This change means that tables are by default sortable.
Todo:
- Default table without widths specified takes 100% width, and any click on a header causes the column widths to jump around.
New Tree2 component
The new Tree2 component is a rewrite of the now deprecated Tree component. It uses mostly the same interface but is rewritten with cleaner code and renders without using tables.
LookupInput
The test IDs for the buttons on the LookupInput have changed, so that it is easy to click one of the buttons of a specific lookup. With a LookupInput with testID = "one" the buttons would be called:
- one-lookup for the search button
- one-clear for the clear button
Look and feel
The following things have changed regarding themes, styles and look-and-feel.
Using FontAwesome with DomUI
You can use FontAwesome icons in most places where you would usually add an image resource.
Sass scss support
The main theme is now a scss theme. Support for scss style sheets is natively included in DomUI: there is no need to translate scss to css, it is done by DomUI's embedded sass part.
Theme and stylesheet changes
- The new core stylesheet (scss/winter) removes all of the kludges:
- The stylesheet reset has been removed, as it also removes any proper support for just displaying html. Components themselves are responsible for resetting browser specifics where needed.
- The negative margins kludge has been removed.
- Components themselves will not have margins anymore, so when two components are placed next to each other they will touch. In the new style sheet it is the responsibility of the container to handle the layout of its components properly.
- The DefaultButton (_defaultbutton.scss) no longer uses a background image. It is restyled to use css3 with css3 transitions. The button also lost its margins; it is now properly the responsibility of the container css to layout its components properly.
- There was a duplicate component style sheet for LookupInput called _lookupForm. It has been removed and its styles have been merged in the _lookupInput stylesheet (scss only).
DataPager
The DataPager's look has been fixed so that it properly shows the overflow indicator, and that it uses CSS only for its presentation: