code: @Override
  	public synchronized void executeFilter(Map<String, Object> parameters) {
  		if (listWorker == null) {
  			if (dataProvider.supportsBaseCriteria()) {
  				dataProvider.setBaseCriteria(getBaseCriteria());
  			}
  
  			StatusBar statusBar = getApplicationConfig().windowManager()
  					.getActiveWindow().getStatusBar();
  			statusBar.getProgressMonitor().taskStarted(
  					getApplicationConfig().messageResolver().getMessage("statusBar",
  							"loadTable", MessageConstants.LABEL),
  					StatusBarProgressMonitor.UNKNOWN);
  			// getFilterForm().getCommitCommand().setEnabled(false);
  			// getRefreshCommand().setEnabled(false);
  
  			listWorker = new ListRetrievingWorker();
  			if (dataProvider.supportsFiltering()) {
  				if (parameters.containsKey(PARAMETER_FILTER)) {
  					setFilterModel(parameters.get(PARAMETER_FILTER));
  				}
  
  				listWorker.filterCriteria = getFilterForm().getFilterCriteria();
  			}
  
  			listWorker.parameters = parameters;
  			log.debug("Execute Filter with criteria: "
  					+ listWorker.filterCriteria + " and parameters: "
  					+ parameters);
  			listWorker.execute();
  		}
  	}
docs: Executes filter and fills table in specific manner:
  <p/>
  <ul>
  <li>set baseCriteria if needed</li>
  <li>set searchCriteria on filterForm</li>
  <li>set searchCriteria on worker</li>
  <li>pass parameter map to worker</li>
  <li>launch worker to retrieve list from back-end and fill table</li>
  <li>when done, set list and execute additional code taking the parameters
  into account</li>
  </ul>
  
  @param parameters
  a number of parameters that can influence this run. Should be
  a non-modifiable map or a specific instance.