Changeset 6012


Ignore:
Timestamp:
02/23/15 11:01:21 (9 years ago)
Author:
Twan Goosen
Message:

Converted field value shown in breadcrumbs panel
Refs #553

File:
1 edited

Legend:

Unmodified
Added
Removed
  • vlo/trunk/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/panels/BreadCrumbPanel.java

    r5224 r6012  
    2424import eu.clarin.cmdi.vlo.wicket.pages.FacetedSearchPage;
    2525import eu.clarin.cmdi.vlo.wicket.provider.FacetSelectionProvider;
     26import eu.clarin.cmdi.vlo.wicket.provider.FieldValueConverterProvider;
    2627import java.util.Collection;
    2728import java.util.Iterator;
     
    5253 */
    5354public class BreadCrumbPanel extends GenericPanel<QueryFacetsSelection> {
    54 
     55   
    5556    @SpringBean(name = "queryParametersConverter")
    5657    private PageParametersConverter<QueryFacetsSelection> paramsConverter;
    57 
     58    @SpringBean
     59    private FieldValueConverterProvider fieldValueConverterProvider;
     60   
    5861    private final WebMarkupContainer query;
    5962    private final WebMarkupContainer facets;
    60 
     63   
    6164    public BreadCrumbPanel(String id, IModel<QueryFacetsSelection> model) {
    6265        super(id, model);
     
    6568        add(facets = createFacets(model, "facets"));
    6669    }
    67 
     70   
    6871    private WebMarkupContainer createQuery(final IModel<QueryFacetsSelection> selectionModel, String id) {
    6972        final WebMarkupContainer queryContainer = new WebMarkupContainer(id);
    7073        final Link link = new AjaxFallbackLink("leavequery") {
    71 
     74           
    7275            @Override
    7376            public void onClick(AjaxRequestTarget target) {
     
    8184        return queryContainer;
    8285    }
    83 
     86   
    8487    private WebMarkupContainer createFacets(final IModel<QueryFacetsSelection> model, String id) {
    8588        final WebMarkupContainer facetsContainer = new WebMarkupContainer(id);
    8689        facetsContainer.add(new AjaxFallbackLink("leaveselection") {
    87 
     90           
    8891            @Override
    8992            public void onClick(AjaxRequestTarget target) {
     
    9598        final FacetSelectionProvider facetSelectionProvider = new FacetSelectionProvider(model);
    9699        facetsContainer.add(new DataView<Map.Entry<String, FacetSelection>>("facet", facetSelectionProvider) {
    97 
     100           
    98101            @Override
    99102            protected void populateItem(final Item<Map.Entry<String, FacetSelection>> item) {
     
    101104                // add a label for the selected facet value(s)
    102105                final Label valueLabel = new Label("value", new PropertyModel(selectionModel, "value")) {
    103 
     106                   
    104107                    @Override
    105108                    public <C> IConverter<C> getConverter(Class<C> type) {
     109                        final String facet = item.getModelObject().getKey();
    106110                        // converter to render the value(s) nicely
    107                         return (IConverter<C>) new SelectionConverter(item.getModelObject().getKey());
     111                        return (IConverter<C>) new SelectionConverter(facet, fieldValueConverterProvider.getConverter(facet));
    108112                    }
    109 
     113                   
    110114                };
    111115                // add facet name as title attribute so that it becomes available through a tooltip
     
    116120                // add a link for removal of the facet value selection
    117121                item.add(new AjaxFallbackLink("removal") {
    118 
     122                   
    119123                    @Override
    120124                    public void onClick(AjaxRequestTarget target) {
     
    129133            }
    130134        });
    131 
     135       
    132136        return facetsContainer;
    133137    }
     
    144148        setResponsePage(FacetedSearchPage.class, paramsConverter.toParameters(selection));
    145149    }
    146 
     150   
    147151    @Override
    148152    protected void onConfigure() {
    149153        super.onConfigure();
    150 
     154       
    151155        final String queryString = getModelObject().getQuery();
    152156        final Map<String, FacetSelection> selection = getModelObject().getSelection();
    153 
     157       
    154158        query.setVisible(queryString != null && !queryString.isEmpty());
    155159        facets.setVisible(selection != null && !selection.isEmpty());
     
    161165     */
    162166    private class SelectionConverter implements IConverter<FacetSelection> {
    163 
     167       
    164168        private final String facet;
    165 
    166         public SelectionConverter(String facet) {
     169        private final IConverter<String> valueConverter;
     170       
     171        public SelectionConverter(String facet, IConverter<String> valueConverter) {
    167172            this.facet = facet;
    168         }
    169 
     173            this.valueConverter = valueConverter;
     174        }
     175       
    170176        @Override
    171177        public FacetSelection convertToObject(String value, Locale locale) throws ConversionException {
    172178            throw new UnsupportedOperationException("Not supported yet.");
    173179        }
    174 
     180       
    175181        @Override
    176182        public String convertToString(FacetSelection selection, Locale locale) {
    177183            switch (selection.getSelectionType()) {
    178184                case AND:
    179                     return getCollectionString(selection, " and ");
     185                    return getCollectionString(selection, " and ", locale);
    180186                case OR:
    181                     return getCollectionString(selection, " or ");
     187                    return getCollectionString(selection, " or ", locale);
    182188                case NOT:
    183                     return "not [" + getCollectionString(selection, " or ") + "]";
     189                    return "not [" + getCollectionString(selection, " or ", locale) + "]";
    184190                case NOT_EMPTY:
    185191                    return getAnyValueString();
     
    187193                    return facet;
    188194            }
    189 
    190         }
    191 
     195           
     196        }
     197       
    192198        private String getAnyValueString() {
    193199            if (FacetConstants.FIELD_SEARCH_SERVICE.equals(facet)) {
     
    196202            return "any " + facet;
    197203        }
    198 
    199         public String getCollectionString(FacetSelection selection, String valueSeparator) {
     204       
     205        public String getCollectionString(FacetSelection selection, String valueSeparator, Locale locale) {
    200206            final Collection<String> value = selection.getValues();
    201207            //TODO: include selection type
     
    203209                return "";
    204210            } else if (value.size() == 1) {
    205                 return value.iterator().next();
     211                return getConvertedValue(value.iterator().next(), locale);
    206212            } else {
    207213                final Iterator<String> iterator = value.iterator();
    208                 final StringBuilder sb = new StringBuilder(iterator.next());
     214                final StringBuilder sb = new StringBuilder(getConvertedValue(iterator.next(), locale));
    209215                while (iterator.hasNext()) {
    210                     sb.append(valueSeparator).append(iterator.next());
     216                    sb.append(valueSeparator).append(getConvertedValue(iterator.next(), locale));
    211217                }
    212218                return sb.toString();
    213219            }
    214220        }
    215 
     221       
     222        private String getConvertedValue(String string, Locale locale) {
     223            if (valueConverter != null) {
     224                final String converted = valueConverter.convertToString(string, locale);
     225                if (converted != null) {
     226                    return converted;
     227                }
     228            }
     229            return string;
     230        }
     231       
    216232    };
    217233}
Note: See TracChangeset for help on using the changeset viewer.