The default behavior of the application is to show only the results of the last execution. We need to remove all the results that have been previously added to the resultsLayout
component if the user has not checked Keep previous results. To do that, implement your showResults
method:
private void showResults(Collection<String> results) { if(!checkBox.getValue()) { resultsLayout.removeAllComponents(); } else if(resultsLayout.getComponentCount() > 0) { resultsLayout.addComponent(new Label("--")); } for(String result : results) { resultsLayout.addComponent(new Label(result)); } }
If the checkbox is not checked, we can remove all the components in resultsLayout
(not in layout
, we don't want baffled users here):
resultsLayout.removeAllComponents();
If we don't have to remove previous results, we add a separator and iterate over the results to add each one using a label.