what's the best practice to add presentation level columns into a table wit

Table is backed up by a container. When I present the data model via table, I need to add some UI level columns (e.g. an edit or delete icon allow editing or deleting that row). This requires to add a new container property to the table. But this will mess up with my other code that deals with the model because this new “UI level container property” is not expected. What’s the best practice here? Do I need a proxy container to do it, or that’s an over kill? if yes, could you please show me an example of doing such a proxy container?

You dont need to add the property to the Container.

use Table.ColumnGenerator to add a generated column on your table.

    table.addGeneratedColumn("presentation-prop-id", new Table.ColumnGenerator() {
         public Component generateCell(final Table source, final Object itemId, final Object columnId) {

            final HorizontalLayout buttons = new HorizontalLayout();
            buttons.addComponent(new Button("Button1"));
            buttons.addComponent(new Button("Button2"));
            return buttons;

This is the answer. Thanks. I should spend more time in reading the vaadin book chapter 5.15.5.