Ignore:
Timestamp:
02/25/14 16:33:17 (10 years ago)
Author:
twagoo
Message:

Added single facet panel for collection selection

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  
    1717package eu.clarin.cmdi.vlo.wicket.components;
    1818
    19 import eu.clarin.cmdi.vlo.wicket.model.FacetSelectionModel;
     19import eu.clarin.cmdi.vlo.config.VloSpringConfig;
    2020import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection;
    2121import eu.clarin.cmdi.vlo.service.FacetFieldsService;
    2222import eu.clarin.cmdi.vlo.wicket.provider.FacetFieldsDataProvider;
    2323import java.util.Collection;
    24 import java.util.HashSet;
    2524import org.apache.solr.client.solrj.response.FacetField;
    26 import org.apache.wicket.ajax.AjaxRequestTarget;
    2725import org.apache.wicket.markup.html.panel.Panel;
    2826import org.apache.wicket.markup.repeater.Item;
     
    4240 * @author twagoo
    4341 */
    44 public class FacetsPanel extends Panel {
     42public class FacetsPanel extends AbstractFacetsPanel {
    4543
    46     @SpringBean
     44    @SpringBean(name = VloSpringConfig.FACETS_PANEL_SERVICE)
    4745    private FacetFieldsService facetFieldsService;
    48     private final IModel<QueryFacetsSelection> model;
    4946
    5047    public FacetsPanel(final String id, IModel<QueryFacetsSelection> model) {
    5148        super(id, model);
    52         this.model = model;
    5349
    5450        add(new DataView<FacetField>("facets", new FacetFieldsDataProvider(facetFieldsService, model)) {
     
    5652            @Override
    5753            protected void populateItem(Item<FacetField> item) {
    58                 createFacetPanel("facet", item);
     54                item.add(createFacetPanel("facet", item.getModel()));
    5955            }
    6056        });
    6157    }
    6258
    63     private void createFacetPanel(String id, Item<FacetField> item) {
     59    private Panel createFacetPanel(String id, IModel<FacetField> facetFieldModel) {
    6460        // Is there a selection for this facet?
    65         final IModel<FacetField> facetFieldModel = item.getModel();
    6661        final String facetName = facetFieldModel.getObject().getName();
    6762        final Collection<String> selectionValues = model.getObject().getSelectionValues(facetName);
    68 
    6963        // Show different panel, depending on selected values
    7064        if (selectionValues == null || selectionValues.isEmpty()) {
    7165            // No values selected, show value selection panel
    72             item.add(createFacetValuesPanel(id, facetFieldModel));
     66            return createFacetValuesPanel(id, facetFieldModel);
    7367        } else {
    7468            // Values selected, show selected values panel (with option to remove)
    75             item.add(createSelectedFacetPanel(id, facetName));
     69            return createSelectedFacetPanel(id, facetName);
    7670        }
    7771    }
    78 
    79     private FacetValuesPanel createFacetValuesPanel(String id, final IModel<FacetField> facetFieldModel) {
    80         return new FacetValuesPanel(id, facetFieldModel) {
    81 
    82             @Override
    83             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 now
    90                     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             @Override
    100             public void onValuesUnselected(String facet, Collection<String> valuesRemoved, AjaxRequestTarget target) {
    101                 // Values have been removed, calculate remainder
    102                 final Collection<String> currentSelection = model.getObject().getSelectionValues(facet);
    103                 final Collection<String> newSelection = new HashSet<String>(currentSelection);
    104                 newSelection.removeAll(valuesRemoved);
    105 
    106                 // Update model
    107                 model.getObject().selectValues(facet, newSelection);
    108 
    109                 if (target != null) {
    110                     // reload entire page for now
    111                     target.add(getPage());
    112                 }
    113             }
    114         };
    115     }
    11672}
Note: See TracChangeset for help on using the changeset viewer.