Changeset 5031


Ignore:
Timestamp:
04/23/14 15:31:38 (10 years ago)
Author:
Twan Goosen
Message:

ajax updates (with fallback) from selections/removals in breadcrumb panel in faceted search page

Location:
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket
Files:
2 edited

Legend:

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

    r4987 r5031  
    6161
    6262    private void addComponents() {
    63         navigation = new WebMarkupContainer("navigation");
    64         navigation.setOutputMarkupId(true);
     63        navigation = createNavigation("navigation");
    6564        add(navigation);
    66 
    67         navigation.add(new BreadCrumbPanel("breadcrumbs", getModel()));
    68         navigation.add(new TopLinksPanel("permalink", getModel()) {
    69 
    70             @Override
    71             protected void onChange(AjaxRequestTarget target) {
    72                 if (target != null) {
    73                     target.add(navigation);
    74                 }
    75             }
    76 
    77         });
    7865
    7966        add(createSearchForm("search"));
     
    9279    }
    9380
    94     public Panel createOptionsPanel(String id) {
     81    private WebMarkupContainer createNavigation(String id) {
     82        final WebMarkupContainer container = new WebMarkupContainer(id);
     83        container.setOutputMarkupId(true);
     84        container.add(new BreadCrumbPanel("breadcrumbs", getModel()){
     85
     86            @Override
     87            protected void onSelectionChanged(QueryFacetsSelection selection, AjaxRequestTarget target) {
     88                setModelObject(selection);
     89                updateSelection(target);
     90            }
     91           
     92        });
     93        container.add(new TopLinksPanel("permalink", getModel()) {
     94
     95            @Override
     96            protected void onChange(AjaxRequestTarget target) {
     97                if (target != null) {
     98                    target.add(container);
     99                }
     100            }
     101
     102        });
     103        return container;
     104    }
     105
     106    private Panel createOptionsPanel(String id) {
    95107        final Panel optionsPanel = new AdvancedSearchOptionsPanel(id, getModel()) {
    96108
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/panels/BreadCrumbPanel.java

    r4987 r5031  
    2929import java.util.Map;
    3030import org.apache.wicket.AttributeModifier;
     31import org.apache.wicket.ajax.AjaxRequestTarget;
     32import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
    3133import org.apache.wicket.markup.html.WebMarkupContainer;
    3234import org.apache.wicket.markup.html.basic.Label;
     
    5153public class BreadCrumbPanel extends GenericPanel<QueryFacetsSelection> {
    5254
    53     @SpringBean(name="queryParametersConverter")
     55    @SpringBean(name = "queryParametersConverter")
    5456    private PageParametersConverter<QueryFacetsSelection> paramsConverter;
    5557
     
    6668    private WebMarkupContainer createQuery(final IModel<QueryFacetsSelection> selectionModel, String id) {
    6769        final WebMarkupContainer queryContainer = new WebMarkupContainer(id);
    68         final Link link = new Link("leavequery") {
     70        final Link link = new AjaxFallbackLink("leavequery") {
    6971
    7072            @Override
    71             public void onClick() {
     73            public void onClick(AjaxRequestTarget target) {
    7274                // make query object without selection
    7375                final QueryFacetsSelection newSelection = new QueryFacetsSelection(selectionModel.getObject().getQuery(), null);
    74                 setResponsePage(FacetedSearchPage.class, paramsConverter.toParameters(newSelection));
     76                onSelectionChanged(newSelection, target);
    7577            }
    7678        };
     
    8284    private WebMarkupContainer createFacets(final IModel<QueryFacetsSelection> model, String id) {
    8385        final WebMarkupContainer facetsContainer = new WebMarkupContainer(id);
    84         facetsContainer.add(new Link("leaveselection") {
     86        facetsContainer.add(new AjaxFallbackLink("leaveselection") {
    8587
    8688            @Override
    87             public void onClick() {
    88                 setResponsePage(FacetedSearchPage.class, paramsConverter.toParameters(model.getObject()));
     89            public void onClick(AjaxRequestTarget target) {
     90                onSelectionChanged(model.getObject(), target);
    8991            }
    9092        });
     
    113115
    114116                // add a link for removal of the facet value selection
    115                 item.add(new Link("removal") {
     117                item.add(new AjaxFallbackLink("removal") {
    116118
    117119                    @Override
    118                     public void onClick() {
     120                    public void onClick(AjaxRequestTarget target) {
    119121                        // get a copy of the current selection
    120122                        final QueryFacetsSelection newSelection = model.getObject().getCopy();
     
    122124                        // unselect this facet
    123125                        newSelection.selectValues(facet, null);
    124                         setResponsePage(FacetedSearchPage.class, paramsConverter.toParameters(newSelection));
     126                        onSelectionChanged(newSelection, target);
    125127                    }
    126128                });
     
    129131
    130132        return facetsContainer;
     133    }
     134
     135    /**
     136     * Gets called if one of the links is clicked and the selection is changed.
     137     * This implementation sets the response page to {@link FacetedSearchPage}
     138     * with the new selection as its parameters
     139     *
     140     * @param selection new selection
     141     * @param target AJAX target, may be null
     142     */
     143    protected void onSelectionChanged(QueryFacetsSelection selection, AjaxRequestTarget target) {
     144        setResponsePage(FacetedSearchPage.class, paramsConverter.toParameters(selection));
    131145    }
    132146
Note: See TracChangeset for help on using the changeset viewer.