Grid Renderers collection is a set of renderers for Vaadin 8 Grid. It is possible to use Table as editable canvas with components in Table cells. With help of this collection it is possible to achieve similar functionality with Grid component. In addition to Editable renderers this collection has couple of renderers for advanced data presentation too.
Try the add-on demo at TBD
Official releases of this add-on are available at Vaadin Directory. For Maven instructions, download and reviews, go to https://vaadin.com/directory#!addon/grid-renderers-collection-for-vaadin7
git clone https://github.com/vaadin/grid-renderers-collection-addon.git mvn clean install cd demo mvn jetty:run
To see the demo, navigate to http://localhost:8080/
For further development of this add-on, the following tool-chain is recommended:
- Eclipse IDE
- m2e wtp plug-in (install it from Eclipse Marketplace)
- Vaadin Eclipse plug-in (install it from Eclipse Marketplace)
- JRebel Eclipse plug-in (install it from Eclipse Marketplace)
- Chrome browser
Choose File > Import... > Existing Maven Projects
Note that Eclipse may give "Plugin execution not covered by lifecycle configuration" errors for pom.xml. Use "Permanently mark goal resources in pom.xml as ignored in Eclipse build" quick-fix to mark these errors as permanently ignored in your project. Do not worry, the project still works fine.
If you have not already compiled the widgetset, do it now by running vaadin:install Maven target for grid-renderers-collection-addon-root project.
If you have a JRebel license, it makes on the fly code changes faster. Just add JRebel nature to your grid-renderers-collection-addon-demo project by clicking project with right mouse button and choosing JRebel > Add JRebel Nature
To debug project and make code modifications on the fly in the server-side, right-click the grid-renderers-collection-addon-demo project and choose Debug As > Debug on Server. Navigate to http://localhost:8080/grid-renderers-collection-addon-demo/ to see the application.
The most common way of debugging and making changes to the client-side code is dev-mode. To create debug configuration for it, open grid-renderers-collection-addon-demo project properties and click "Create Development Mode Launch" button on the Vaadin tab. Right-click newly added "GWT development mode for grid-renderers-collection-addon-demo.launch" and choose Debug As > Debug Configurations... Open up Classpath tab for the development mode configuration and choose User Entries. Click Advanced... and select Add Folders. Choose Java and Resources under grid-renderers-collection-addon/src/main and click ok. Now you are ready to start debugging the client-side code by clicking debug. Click Launch Default Browser button in the GWT Development Mode in the launched application. Now you can modify and breakpoints to client-side classes and see changes by reloading the web page.
Another way of debugging client-side is superdev mode. To enable it, uncomment devModeRedirectEnabled line from the end of DemoWidgetSet.gwt.xml located under grid-renderers-collection-addon-demo resources folder and compile the widgetset once by running vaadin:compile Maven target for grid-renderers-collection-addon-demo. Refresh grid-renderers-collection-addon-demo project resources by right clicking the project and choosing Refresh. Click "Create SuperDevMode Launch" button on the Vaadin tab of the grid-renderers-collection-addon-demo project properties panel to create superder mode code server launch configuration and modify the class path as instructed above. After starting the code server by running SuperDevMode launch as Java application, you can navigate to http://localhost:8080/grid-renderers-collection-addon-demo/?superdevmode. Now all code changes you do to your client side will get compiled as soon as you reload the web page. You can also access Java-sources and set breakpoints inside Chrome if you enable source maps from inspector settings.
- Fixed TextFieldRenderer to have proper style when not editable
- Added more configuration options to DeleteButtonRenderer
- Added setIsEnabledProvider(..) method to EditableRenderer and implemented it in its subclasses, See issue #46
- Fixing issue #36, BrowserOpenerRenderer url fetching was not made correctly
- Added tooltip support to HtmlButtonRenderer and BrowserOpenerRenderer.
- Added feature to BrowserOpenerRenderer. With alternative constructor open UI with URI fragment given in cell.
- Added BrowserOpenerRenderer. This is a button that opens a new browser window when clicked.
- Added setOffset to RowIndexRenderer, so that row index count can start from defined position
- Minor change for Vaadin 8.2+ compatibility
- Added support of ordinals to RowIndexRenderer
- Added RowIndexRenderer
- Fixing issue #24, SimpleSelectRenderer conversion logic was flawed since Vaadin 8 migration was halfbaked
- Fixing issue #22, BooleanSwitchRenderer.setReadOnly(..) did not work
- Fix, The blurChangeMode did not work properly
- Added blurChangeMode to TextFieldRenderer and DateFieldRenderer to tackle issue #18.
- Added eagerChangeMode to TextFieldRenderer to tackle issue #18.
- Added support for different DateResolutions to DateFieldRenderer
- Added HtmlButtonRenderer to collection
- Added isReadOnly() and setReadOnly(..) to Editable Renderers.
- Added ConverterRenderer
- First version for Vaadin 8, based on featureset of version 1.1.2 for Vaadin 7
- There are API changes
- Updated demo
The issues for this add-on are tracked on its github.com page. All bug reports and feature requests are appreciated.
Contributions are welcome, but there are no guarantees that they are accepted as such. Process for contributing is the following:
- Fork this project
- Create an issue to this project about the contribution (bug or feature) if there is no such issue about it already. Try to keep the scope minimal.
- Develop and test the fix or functionality carefully. Only include minimum amount of code needed to fix the issue.
- Refer to the fixed issue in commit
- Send a pull request for the original project
- Comment on the original issue that you have implemented a fix for it
Add-on is distributed under Apache License 2.0. For license terms, see LICENSE.txt.
Grid Renderers collection is initially written by Ilia Motornyi
SimpleSelectRenderer, BooleanSwitchRenderer, BlobImageRenderer, DateFieldRenderer, TextFieldRenderer, SparklineRenderer, RatingStarsRenderer, HtmlButtonRenderer, DeleteButtonRenderer, ConverterRenderer, RowIndexRenderer, BrowserOpenerRenderer contributed by Tatu Lund (tatu@vaadin.com corresponding author)
ItemEditEvent, GridNavigationExtension contributed by Mikael Granqvist
Major pieces of development of this add-on has been sponsored by multiple Support and Prime customers of Vaadin. See vaadin.com/support and Development on Demand for more details.
Here is a simple example on how to try out the add-on component:
TextFieldRenderer<MyPojo,String> renderer = new TextFieldRenderer<>(MyPojo::setText);
grid.addColumn(MyPojo::getText, renderer);
For a more comprehensive examples, see org.vaadin.grid.cellrenderers.demo.DemoUI
A button which opens a new browser window with url in the Grid's cell.
A simple Renderer that renders the row index as a number. Not affected by sorting.
Alternative to the ButtonRenderer included to Vaadin framework. This one supports also HTML content and does not propagate click event when used.
Two stage (Delete & Confirm) Delete action button. Delete and Confirm texts can be configured e.g. for localization. There is style name for Confirm state in order to add accent in custom theme if needed. Vaadin 8 version of this renderer can be found in https://vaadin.com/directory#!addon/gridfastnavigation-add-on
Select a value with popup selector from small set of values. This Renderer is like ComboBox, but much simpler. With Converter it is possible to map non String values to String. See demo.
Render small images directly from byte[] of the bean. Useful when your read image as Blob field from SQL database. Note, use only small images to avoid excess overhead.
Single-click editor for boolean columns - Editor aware. Most suitable for unbuffered Grid Label options can be configured for localization.
Alternative version of CheckboxRenderer similar to editable renderers.
Inline Dates editor.
Multipurpose inline Text editor. Supports various types of data using Converter that can be set via TextFieldRenderer.setConverter() API. TextFieldRenderer and DateFieldRenderer are suitable when you need to edit few columns only. Tab key jumps between editable fields by default. The input is directly stored in the container. For backend commits it is recommend to have "save" button in the UI.
Configurable SparklineRenderer. Renders collection of Numbers as a simple chart. The renderer uses Sparklines add-on by Marc Englund (which inturn uses gwt-graphics add-on). SparklineRenderer has SparklineConfiguration class inside, which controls various Sparkline configuration options thru shared state. Most of the settings have immediate effect, see the demo.
RatingStarsRenderer is based on Widget in RatingStars add-on by Teemu Pöntelin. You can use
RatingStarsRenderer both as a view only or editable field renderer. The max number of stars can be also configured.
GridNavigationExtension makes possible to quickly navigate Grid with keyboard and input data with editable Renderers. See the demo. GridNavigation extension was originally written by Mikael Granqvist.
Note, there is another similar type of extension available also for use with Grid's unbuffered editor, which is called GridFastNavigation https://vaadin.com/directory#!addon/gridfastnavigation-add-on