Component changes should update other related component

Hi, everyone.

For the past days, I’ve been struggling to find out how to make a good component oriented design development with vaadin.

Here is the scenario I’m trying to design:
I have a Window and inside I have three comboboxes to configure some data, so I can fetch some data from the DB to show in a grid. And there is another component that I configure the filters of the data.
So, I have these components: a Window and inside I have three comboboxes, a Grid and a custom component to configure the filters(this one is somewhat complex as well, because to make the layouts of these filters, I depend on the data selected on the comboboxes in the Window class ).
When I create the filters, I want it to update the grid in the Window class, but I don’t know how to do it without passing the Window class to the component that configure the filters. It really feels like a bad design and I couldn’t come to a conclusion of a better design.
MVP in this case would help me achieve the synchronization of all of those components? I’m actually a bit
apprehensive to use MVP because I don’t want to add even more complexity, but if it is the best way…
Or it is not a bad design to pass one component to another and, when a action is made in this component that should reflect in the component that was passed to this one, I only call a method from within the component that was passed to this component to update itself? Here is an example ( not the actual code I’m working with):

public class ConfigurationWindow extends Window {
    Grid grid;
    DataModel data;
    FiltersC filtersConfiguration;
    public ConfigurationWindow(){
        grid = new Grid();
        data = new DataModel();
        filtersConfiguration = new FiltersC(this);
    }
    
    public void updateGrid() {
        // Fetch the data and create a new container
        grid.setContainerDataSource(new IndexedContainer());
    }

}
public class FiltersC extends CssLayout {
    ComboBox propertyToFilter, typeOfFilter, valueOfFilter;
    Button apply;
    ConfigurationWindow window;

    public FiltersC(final ConfigurationWindow window) {
        this.window = window;
        apply = new Button("Apply");
        apply.addClickListener(new ClickListener() {
            @Override
            public void buttonClick(ClickEvent event) {
                // Set the filter to the dataModel
                window.updateGrid();
            }
        });
    }
}