...
Code Block |
---|
public interface INodeContentRenderer<T> extends IRenderInto<T> { void renderNodeContent(@Nonnull NodeBase component, @Nonnull NodeContainer node, @Nullable T object, @Nullable Object parameters) throws Exception; default void render(@Nonnull NodeContainer node, @Nonnull T object) throws Exception { renderNodeContent(node, node, object, null); } } |
...
Metadata changes
Initialization of metadata
The mechanism that loads metadata from classes has been completely rewritten. The existing code tried to initialize all metadata in a single pass, and this could fail for more complex models when there were loops in definitions. This caused hard to fix issues.
The new mechanism uses a set of prioritized factories that each initialize one very specific piece of the metadata. Because these factories are strictly ordered at every step it is very clear what metadata has been initialized and what has not. This fixes most of the issues, at the expense of having metadata be more read/write.
SearchPropertyMetaModel fixes
This interface and its implementation class suffered from the problems described above: they had to have both a property name and a property path to prevent loops in the old initialization. Having duplicate information is bad, and there was no need to have a path of properties in the thing. So the interface was changed: the properties propertyName and propertyPath have been replaced by a single new property which holds the PropertyMetaModel of the addressed search field.
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.
...
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.
New components
AceEditor editor component
The AceEditor component encapsulates Ace, a code editor written in Javascript. It supports basic code editing functionality. Some basic calls to control the editor instance have been added to the component so that it is functional for most tasks.
The editor can use multiple themes and looks like this:
removed from the Div tag. They should be replaced by calling Animations.xxxx with the node to animate.
New components
AceEditor editor component
The AceEditor component encapsulates Ace, a code editor written in Javascript. It supports basic code editing functionality. Some basic calls to control the editor instance have been added to the component so that it is functional for most tasks.
The editor can use multiple themes and looks like this:
SearchPanel component replacing LookupForm
The LookupForm component was one of the oldest components in DomUI, and it had a very bad interface because it grew out of proportions. The new SearchPanel component replaces the LookupForm component (which is now deprecated and has moved to the legacy jar). The SearchPanel component has been rewritten so that every part of it can be easily extended and replaced without having to resort to arcane base classes. See the description for more details.
Component changes
DataTable
...