Changeset 4579 for vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/FacetsPanel.java
- Timestamp:
- 02/25/14 16:33:17 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/FacetsPanel.java
r4572 r4579 17 17 package eu.clarin.cmdi.vlo.wicket.components; 18 18 19 import eu.clarin.cmdi.vlo. wicket.model.FacetSelectionModel;19 import eu.clarin.cmdi.vlo.config.VloSpringConfig; 20 20 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection; 21 21 import eu.clarin.cmdi.vlo.service.FacetFieldsService; 22 22 import eu.clarin.cmdi.vlo.wicket.provider.FacetFieldsDataProvider; 23 23 import java.util.Collection; 24 import java.util.HashSet;25 24 import org.apache.solr.client.solrj.response.FacetField; 26 import org.apache.wicket.ajax.AjaxRequestTarget;27 25 import org.apache.wicket.markup.html.panel.Panel; 28 26 import org.apache.wicket.markup.repeater.Item; … … 42 40 * @author twagoo 43 41 */ 44 public class FacetsPanel extends Panel {42 public class FacetsPanel extends AbstractFacetsPanel { 45 43 46 @SpringBean 44 @SpringBean(name = VloSpringConfig.FACETS_PANEL_SERVICE) 47 45 private FacetFieldsService facetFieldsService; 48 private final IModel<QueryFacetsSelection> model;49 46 50 47 public FacetsPanel(final String id, IModel<QueryFacetsSelection> model) { 51 48 super(id, model); 52 this.model = model;53 49 54 50 add(new DataView<FacetField>("facets", new FacetFieldsDataProvider(facetFieldsService, model)) { … … 56 52 @Override 57 53 protected void populateItem(Item<FacetField> item) { 58 createFacetPanel("facet", item);54 item.add(createFacetPanel("facet", item.getModel())); 59 55 } 60 56 }); 61 57 } 62 58 63 private void createFacetPanel(String id, Item<FacetField> item) {59 private Panel createFacetPanel(String id, IModel<FacetField> facetFieldModel) { 64 60 // Is there a selection for this facet? 65 final IModel<FacetField> facetFieldModel = item.getModel();66 61 final String facetName = facetFieldModel.getObject().getName(); 67 62 final Collection<String> selectionValues = model.getObject().getSelectionValues(facetName); 68 69 63 // Show different panel, depending on selected values 70 64 if (selectionValues == null || selectionValues.isEmpty()) { 71 65 // No values selected, show value selection panel 72 item.add(createFacetValuesPanel(id, facetFieldModel));66 return createFacetValuesPanel(id, facetFieldModel); 73 67 } else { 74 68 // Values selected, show selected values panel (with option to remove) 75 item.add(createSelectedFacetPanel(id, facetName));69 return createSelectedFacetPanel(id, facetName); 76 70 } 77 71 } 78 79 private FacetValuesPanel createFacetValuesPanel(String id, final IModel<FacetField> facetFieldModel) {80 return new FacetValuesPanel(id, facetFieldModel) {81 82 @Override83 public void onValuesSelected(String facet, Collection<String> value, AjaxRequestTarget target) {84 // A value has been selected on this facet's panel,85 // update the model!86 model.getObject().selectValues(facet, value);87 88 if (target != null) {89 // reload entire page for now90 target.add(getPage());91 }92 }93 };94 }95 96 private SelectedFacetPanel createSelectedFacetPanel(String id, String facetName) {97 return new SelectedFacetPanel(id, new FacetSelectionModel(facetName, model)) {98 99 @Override100 public void onValuesUnselected(String facet, Collection<String> valuesRemoved, AjaxRequestTarget target) {101 // Values have been removed, calculate remainder102 final Collection<String> currentSelection = model.getObject().getSelectionValues(facet);103 final Collection<String> newSelection = new HashSet<String>(currentSelection);104 newSelection.removeAll(valuesRemoved);105 106 // Update model107 model.getObject().selectValues(facet, newSelection);108 109 if (target != null) {110 // reload entire page for now111 target.add(getPage());112 }113 }114 };115 }116 72 }
Note: See TracChangeset
for help on using the changeset viewer.