Directory

← Back

Viritin

What apache-commons and Guava libraries does for Java, Viritin does it for Vaadin

Author

Rating

Popularity

300+

Note, this add-on is available also for Vaadin versions 10+

Viritin is a server side enhancement library for Vaadin. It fixes some bad defaults in the core framework and provides more fluent and intelligent API for existing components. It also provides several major enhancements to databinding and provides completely new components made with server side composition (no widgetset is needed).

  • Better typed API for Table, Grid and various select components, easier to get started, better readability, safer refactoring. Endorsing java.util.collections and basic Java beans over proprietary Container-Item-Property.
  • Enhanced developer experience with extended basic layouts
  • Lots of handy Field implementations e.g. for common relation types (@ManyToMany, @OneToMany, @ElementCollection in JPA terminology, but not tied to JPA)
  • AbstractForm - a base class to avoid boilerplate code for basic entity editing
  • Enhancements to core Fields and BeanFieldGroup, better defaults, enhanced end user UX with on the fly validation
  • Setting browser cookies from basic Java code
  • Really scalable "lazy loading" solutions for Vaadin Components (see MTable, LazyComboBox, ListContainer + LazyList)
  • Often needed component compositions: PrimaryButton, ConfirmButton, DisclosurePanel ...
  • Cross-field validation support
  • Improved input fields
    • Support for custom HTML5 input properties (autocomplete, autocorrect...)
    • IntegerField (numeric keyboard on mobile devices, only accepts numbers, type of the field is Integer)
    • DoubleField
    • EmailField (email keyboard on mobile devices)

There is already a huge set of enhancements, couple of them are highlighted below. For a more complete view of what is provided, check out the project page in github for more details listing of examples. There is always room for enhancements and the project is easy to check out for development, so join the effort in github!

Sample code

MTable<Entity> t = new MTable(findBeans())
        .withProperties("property", "another")
        .withColumnHeaders("Property 1", "Second");
t.addMValueChangeListener(new MValueChangeListener<Entity>() {
    @Override
    public void valueChange(MValueChangeEvent<Entity> event) {
        editEntity(event.getValue());
    }
});
// with Viritin
setContent(new MVerticalLayout(new MHorizontalLayout(c, d).withFullWidth())
                .expand(new MHorizontalLayout(menu).expand(mainContent)));

// same without Viritin

  VerticalLayout wrapper = new VerticalLayout();
        wrapper.setMargin(true);
        wrapper.setSpacing(true);
        wrapper.setHeight("100%");
        HorizontalLayout toolbar = new HorizontalLayout(c, d);
        toolbar.setWidth("100%");
        toolbar.setMargin(false);
        toolbar.setSpacing(true);
        HorizontalLayout wrapper2 = new HorizontalLayout();
        wrapper2.addComponent(menu);
        wrapper2.addComponent(mainContent);
        wrapper2.setSizeFull();
        mainContent.setSizeFull();
        wrapper2.setExpandRatio(mainContent, 1);
        wrapper.addComponents(toolbar, wrapper2);
        wrapper.setExpandRatio(wrapper2, 1);
        setContent(wrapper);
MTable<Update> table;

@Inject
GPSRouteService s;

@PostConstruct
void init() {
    add(table = new MTable<>(s::fetchUpdates, s::getEntityCount));
}

Compatibility

(Loading compatibility data...)

Was this helpful? Need more help?
Leave a comment or a question below. You can also join the chat on Discord or ask questions on StackOverflow.

Version

Slightly backwards incompatible release preparing for jsoup upgrade in next Vaadin version (moderate security issue)

Released
2022-09-02
Maturity
STABLE
License
Apache License 2.0

Compatibility

Framework
Vaadin 8.0+
Vaadin 7.3+ in 1.22
Vaadin 7.6+ in 1.57
Vaadin 8.1+ in 2.1
Vaadin 7.4+ in 1.32
Browser
Browser Independent

Viritin - Vaadin Add-on Directory

What apache-commons and Guava libraries does for Java, Viritin does it for Vaadin Viritin - Vaadin Add-on Directory
### Note, this add-on is available also for [Vaadin versions 10+](https://vaadin.com/directory/component/flow-viritin) Viritin is a server side enhancement library for Vaadin. It *fixes some bad defaults* in the core framework and provides more *fluent and intelligent API* for existing components. It also provides several major *enhancements to databinding* and provides completely *new components* made with server side composition (no widgetset is needed). * Better typed API for Table, Grid and various select components, easier to get started, better readability, safer refactoring. Endorsing java.util.collections and basic Java beans over proprietary Container-Item-Property. * Enhanced developer experience with extended basic layouts * Lots of handy Field implementations e.g. for common relation types (@ManyToMany, @OneToMany, @ElementCollection in JPA terminology, but not tied to JPA) * AbstractForm - a base class to avoid boilerplate code for basic entity editing * Enhancements to core Fields and BeanFieldGroup, better defaults, enhanced end user UX with on the fly validation * Setting browser cookies from basic Java code * Really scalable "lazy loading" solutions for Vaadin Components (see MTable, LazyComboBox, ListContainer + LazyList) * Often needed component compositions: PrimaryButton, ConfirmButton, DisclosurePanel ... * Cross-field validation support * Improved input fields * Support for custom HTML5 input properties (autocomplete, autocorrect...) * IntegerField (numeric keyboard on mobile devices, only accepts numbers, type of the field is Integer) * DoubleField * EmailField (email keyboard on mobile devices) There is already a huge set of enhancements, couple of them are highlighted below. For a more complete view of what is provided, check out the project page in github for more details listing of examples. There is always room for enhancements and the project is easy to check out for development, so join the effort in github!
Vaadin 7 compatibility package
Viritin @ GitHub
Full-stack example app
Documentation (work in progress)

Viritin version 1.22
First release after rename from Maddon to Viritin. Contains lots of new helper for editing collection fields.

Viritin version 1.23
null

Viritin version 1.24
See github tags

Viritin version 1.25
null

Viritin version 1.26
See github changes and release tags for changes.

Viritin version 1.27
null

Viritin version 1.28
null

Viritin version 1.29
null

Viritin version 1.30
Better Grid compatibility for lazy list stuff and fixed bad states (in some situations) of action buttons in AbstractForm. and See github for more details.

Viritin version 1.31
Enhancements to element collection fields, TypedSelect, EnumSelect. See github for changeling.

Viritin version 1.32
Built against 7.4, dropping support for 7.3 series. Use 1.31 with older Vaain versions.

Viritin version 1.33
Fixed regression in 1.32 with MTable value change listeners.

Viritin version 1.34
Largish release with at least: * Improved localisation support * Enhancements to AbstractForm * Cross-field validation support to MBeanFieldGroup and AbstractForm, but JSR303 and programmatic approaches supported. This feature is currently experimental. * Refactored TypedSelect (now extends CustomField to cope with some Vaadin core issues). This may brake some classes that inherit from it but its pretty easy to fix. See project page for full change list.

Viritin version 1.35
* Better scalability for LazyComboBox, when using Vaadin 7.5 * Group support for bean level (including cross field) validation * Support for nested/mapped/indexed/all-combined properties in ListContainer/DynaBeanItem/MTable * Other minor improvements

Viritin version 1.36
* First version of MGrid * Lots of community fixes/enhancements

Viritin version 1.37
Enhancements to for example MTable (e.g. typed RowClickListener/Event) and MGrid. See github for full change list.

Viritin version 1.38
See github timeline for changes

Viritin version 1.39
null

Viritin version 1.40
7.6 compatibility, most notably for MGrid.

Viritin version 1.41
* Null safe nested properties * MGrid now works with SortableLazyList properly

Viritin version 1.42
null

Viritin version 1.43
* MGrid lazy loading with sortable provider is now fixed in 7.6 series * MDateField has option the strategy how do define time for newly set dates when resolution don't allow modifying time.

Viritin version 1.44
IntegerField, IntegerSliderField and other HTML5 related enhancements

Viritin version 1.45
OSGi compatibility, EmailField, MGrid enhancements, see github timeline for more details.

Viritin version 1.46
See github project for changes

Viritin version 1.47
See github for changes

Viritin version 1.48
Highly improved LazyList, especially for Grid and 7.6 series, and lots of other improvements. See full list of chages from [github](https://github.com/viritin/viritin/commits/master).

Viritin version 1.49
Added one more workaround for Grid & Vaadin 7.6 series lazy loading issues

Viritin version 1.50
* generated column support for MGrid * lots of other smaller improvements See github timeline for all changes

Viritin version 1.51
See github for latest changes

Viritin version 1.52
SubSetSelector, bugfixes and enhancements. See github for full list of changes.

Viritin version 1.53
See github timeline

Viritin version 1.54
Lots of small improvements and bugfixes, see github timeline for changes.

Viritin version 1.55
null

Viritin version 1.56
See github timeline for all enhancements

Viritin version 1.57
null

Viritin version 1.58
null

Viritin version 1.59
Lots of enhancements and bug fixes! See github timeline to see all improvements.

Viritin version 1.60
null

Viritin version 1.61
null

Viritin version 2.0.alpha1
First alpha release supporting V8. Lot of V8 related support still to be implemented, but "org.viritin.v7" compatibility package should now allow projects to start converting to Vaadin 8. See [Vaadin 8 upgrade in wiki](https://github.com/viritin/viritin/wiki/Vaadin-8-upgrade) for more details.

Viritin version 2.0.alpha2
Second alpha release supporting V8. Lot of V8 related support still to be implemented, but "org.viritin.v7" compatibility package should now allow projects to start converting to Vaadin 8. See [Vaadin 8 upgrade in wiki](https://github.com/viritin/viritin/wiki/Vaadin-8-upgrade) for more details. In this release: * Fixed IntegerField to actually fire value change evens and this way work with Binder * Most "fluent methods" are now implemented using Java 8 tricks and default methods. This adds a lot of missing fluent APIs and makes maintaining them much easier. * Added a rudimentary version of AbstractForm based on Vaadin 8 Binder and HasValue interface. See all changes from github.

Viritin version 2.0.alpha3
null

Viritin version 2.0.beta1
null

Viritin version 2.0.beta2
Bugfixes & minor features

Viritin version 2.0
null

Viritin version 2.1
This version contains some bug fixes and splits v7 packages to a separate module.

Viritin version 2.3
See github for changes

Viritin version 2.4

Viritin version 2.5
Bugfixes and small features. See github for details.

Viritin version 2.6

Viritin version 1.62

Viritin version 2.7

Viritin version 2.8

Viritin version 2.9

Viritin version 2.11
Greatly improved lazy data binding support for Grid

Viritin version 2.12
Version updates and MarkDownField

Viritin version 2.14.1
Slightly backwards incompatible release preparing for jsoup upgrade in next Vaadin version (moderate security issue)

Online