Viritin Mgrid and Multibutton Renderer

Hi, i have this usecase´:
A grid with generated Colum, the colum should have multiple control buttons with different Labels and ClickListeners

This is so far as i come now:

[code]
private UserDao userDao;
private MGrid grid;
private Map<String,String> filterMap;

public void initGrid(){
filterMap = new HashMap<String, String>();
//Create Grid with autogenerated Column
grid = new MGrid<>(User.class).withGeneratedColumn(“controls”, new PropertyValueGenerator() {
@Override
public String getValue(Item item, Object itemId, Object propertyId) {
return “Select Button”;
}

@Override
public Class getType() {
return String.class;
}
});

grid.setHeight(500, Sizeable.Unit.PIXELS);
grid.setWidth(1600, Sizeable.Unit.PIXELS);

//Remove all colums first
grid.removeAllColumns();
//Reactivate needed Columns
grid.addColumn(“useremail”);
grid.addColumn(“usertype”);
grid.addColumn(“userfirstname”);
grid.addColumn(“usersurname”);
grid.addColumn(“controls”);

//Add needed Colums as Filter Keys to Map
filterMap.put(“useremail”,“”);
filterMap.put(“usertype”,“”);
filterMap.put(“userfirstname”,“”);
filterMap.put(“usersurname”,“”);

//Set Order of Colums
grid.setColumnOrder(“userfirstname”, “usersurname”, “useremail”, “usertype”,“controls”);

//Add Buttons to Controls Column
grid.getColumn(“controls”).setRenderer(new ButtonRenderer(event → {
User user = (User) event.getItemId();
Notification.show("Button Selected " +
user.getUserfirstname());
}));
//Init Lazyloading with dao
grid.lazyLoadFrom(new SortableLazyList.SortablePagingProvider() {
@Override
public List findEntities(int firstRow, boolean sortAscending, String property) {
//Get all needed Results from DAO
return userDao.getLazyLoadUser(firstRow,LazyList.DEFAULT_PAGE_SIZE,sortAscending,property,filterMap);
}
}, new LazyList.CountProvider() {
@Override
public int size() {
return userDao.count(filterMap);
}
});

//Init Filters
Grid.HeaderRow filteringHeader = grid.appendHeaderRow();

for(String columnid : filterMap.keySet())
{
TextField filter = new MTextField()
.withFullWidth().withStyleName(ValoTheme.TEXTFIELD_TINY)
.withInputPrompt(“Filter”);

filter.setNullRepresentation(“”);
filter.addTextChangeListener(event → {
if(!event.getText().isEmpty()){
filterMap.put(columnid,“%”+event.getText()+“%”);
}else{
filterMap.put(columnid,“”);
}
grid.refreshRows();
});
filteringHeader.getCell(columnid).setComponent(filter);
filteringHeader.getCell(columnid).setStyleName(“filter-header”);
}
}
[/code]This code generates the a user grid with textfilters and a control column with one button.
Where do i start ? Need multiple buttons in the controls like detail- , view- , delete-, export button.

Check if this ActionRenderer for Grid fits for your use case:

https://vaadin.com/directory/#!addon/gridactionrenderer-add-on

I have already tried various addons. But the combination Mgrid and Addons dont work well.
I have already a dirty solution with html renderer, but its realy dirty code.
So i need my own custom renderer.