private static <T extends IsIndexed> void updateFacetPanels( final AsyncTableCell<T, ?> list, final Map<String, FlowPanel> facetPanels, final List<FacetFieldResult> facetResults, final boolean hideDisabled) { for (FacetFieldResult facetResult : facetResults) { final String facetField = facetResult.getField(); FlowPanel facetPanel = facetPanels.get(facetResult.getField()); if (facetPanel != null) { facetPanel.clear(); if (facetResult.getTotalCount() == 0) { facetPanel.getParent().addStyleName("facet-empty"); } else { facetPanel.getParent().removeStyleName("facet-empty"); } for (FacetValue facetValue : facetResult.getValues()) { final String value = facetValue.getValue(); final String label = facetValue.getLabel(); long count = facetValue.getCount(); boolean selected = facetResult.getSelectedValues().contains(value); StringBuilder checkboxLabel = new StringBuilder(); checkboxLabel.append(label); if (count > 0 || facetResult.getSelectedValues().size() == 0 || selected) { checkboxLabel.append(" (").append(count).append(")"); } CheckBox facetValuePanel = new CheckBox(checkboxLabel.toString()); facetValuePanel.setTitle(checkboxLabel.toString()); facetValuePanel.addStyleName("sidebar-facet-label"); facetValuePanel.addStyleName("fade-out"); boolean enabled = count > 0 || facetResult.getSelectedValues().size() > 0; facetValuePanel.setEnabled(enabled); if (hideDisabled) { facetValuePanel.setVisible(enabled); } facetPanel.add(facetValuePanel); facetValuePanel.setValue(selected); facetValuePanel.addValueChangeHandler( new ValueChangeHandler<Boolean>() { @Override public void onValueChange(ValueChangeEvent<Boolean> event) { Facets facets = list.getFacets(); FacetParameter selectedFacetParameter = facets.getParameters().get(facetField); if (selectedFacetParameter != null) { if (event.getValue()) { selectedFacetParameter.getValues().add(value); } else { selectedFacetParameter.getValues().remove(value); } } else { LOGGER.warn("Haven't found the facet parameter: " + facetField); } list.setFacets(facets); } }); } } else { LOGGER.warn("Got a facet but haven't got a panel for it"); } } }