void initializeFilterFields() {
   /* Create new filters only if Filterable */
   if (owner.getFilterable() != null) {
     for (Object property : owner.getVisibleColumns()) {
       if (owner.getContainerPropertyIds().contains(property)) {
         AbstractField filter =
             createField(property, owner.getContainerDataSource().getType(property));
         addFilterColumn(property, filter);
       } else {
         addFilterColumn(property, createField(null, null));
       }
     }
   }
 }
 void clearFilterData() {
   /* Remove all filters from container */
   for (Object propertyId : filters.keySet()) {
     owner.getFilterable().removeContainerFilter(filters.get(propertyId));
     if (owner.getFilterGenerator() != null) {
       owner.getFilterGenerator().filterRemoved(propertyId);
     }
   }
   /* Clear the data related to filters */
   customFields.clear();
   filters.clear();
   texts.clear();
   enums.clear();
   booleans.clear();
   dates.clear();
 }
 private void setFilter(Filter filter, Object propertyId) {
   owner.getFilterable().addContainerFilter(filter);
   filters.put(propertyId, filter);
 }
 private void removeFilter(Object propertyId) {
   if (filters.get(propertyId) != null) {
     owner.getFilterable().removeContainerFilter(filters.get(propertyId));
     filters.remove(propertyId);
   }
 }