Ignore:
Timestamp:
03/10/14 15:52:30 (10 years ago)
Author:
Twan Goosen
Message:

added filtering of values in all values panel

File:
1 edited

Legend:

Unmodified
Added
Removed
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/panels/AllFacetValuesPanel.java

    r4665 r4666  
    2525import org.apache.wicket.ajax.AjaxRequestTarget;
    2626import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior;
     27import org.apache.wicket.ajax.form.OnChangeAjaxBehavior;
    2728import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
    2829import org.apache.wicket.extensions.markup.html.repeater.util.SortParam;
     
    3132import org.apache.wicket.markup.html.form.DropDownChoice;
    3233import org.apache.wicket.markup.html.form.Form;
     34import org.apache.wicket.markup.html.form.TextField;
    3335import org.apache.wicket.markup.html.link.Link;
    3436import org.apache.wicket.markup.html.panel.GenericPanel;
     
    3739import org.apache.wicket.model.CompoundPropertyModel;
    3840import org.apache.wicket.model.IModel;
     41import org.apache.wicket.model.Model;
    3942import org.apache.wicket.model.PropertyModel;
    4043
     
    4952    private final FacetFieldValuesProvider valuesProvider;
    5053    private final WebMarkupContainer valuesContainer;
     54    private IModel<String> filterModel = new Model<String>();
    5155
    5256    public AllFacetValuesPanel(String id, IModel<FacetField> model) {
    5357        super(id, model);
    54         valuesProvider = new FacetFieldValuesProvider(model);
     58        // create a provider that shows all values and is sorted by name by default
     59        valuesProvider = new FacetFieldValuesProvider(model, Integer.MAX_VALUE, FieldValueOrderSelector.NAME_SORT) {
    5560
     61            @Override
     62            protected IModel<String> getFilterModel() {
     63                // filters the values
     64                return filterModel;
     65            }
     66
     67        };
     68
     69        // create a container for the values to allow for AJAX updates
    5670        valuesContainer = new WebMarkupContainer("facetValuesContainer");
    5771        valuesContainer.setOutputMarkupId(true);
    5872        add(valuesContainer);
    5973
     74        // create the view of the actual values
    6075        final DataView<FacetField.Count> valuesView = createValuesView("facetValue");
    6176        valuesContainer.add(valuesView);
    6277
     78        // create the form for selection sort option and entering filter string
    6379        final Form optionsForm = createOptionsForm("options");
    6480        optionsForm.setOutputMarkupId(true);
     
    101117        final DropDownChoice<SortParam<FieldValuesOrder>> sortSelect
    102118                = new FieldValueOrderSelector("sort", new PropertyModel<SortParam<FieldValuesOrder>>(valuesProvider, "sort"));
    103         sortSelect.add(new AjaxFormComponentUpdatingBehavior("onchange") {
     119        sortSelect.add(new OnChangeAjaxBehavior() {
    104120
    105121            @Override
     
    110126        });
    111127        options.add(sortSelect);
     128
     129        final TextField filterField = new TextField("filter", filterModel);
     130        filterField.add(new AjaxFormComponentUpdatingBehavior("keyup") {
     131
     132            @Override
     133            protected void onUpdate(AjaxRequestTarget target) {
     134                target.add(valuesContainer);
     135            }
     136        });
     137        options.add(filterField);
    112138        return options;
    113139    }
Note: See TracChangeset for help on using the changeset viewer.