source: vlo/trunk/vlo_webapp/src/main/java/eu/clarin/cmdi/vlo/pages/FacetBoxPanel.java @ 1007

Last change on this file since 1007 was 1007, checked in by patdui, 13 years ago
  • added resourceType facet and added a list of resources on the show result page.
  • added i18n properties
  • fixed some olac facets supporting multiple patterns to match a facet
File size: 3.0 KB
Line 
1package eu.clarin.cmdi.vlo.pages;
2
3import java.util.List;
4
5import org.apache.solr.client.solrj.response.FacetField;
6import org.apache.solr.client.solrj.response.FacetField.Count;
7import org.apache.wicket.PageParameters;
8import org.apache.wicket.markup.html.WebMarkupContainer;
9import org.apache.wicket.markup.html.basic.Label;
10import org.apache.wicket.markup.html.link.BookmarkablePageLink;
11import org.apache.wicket.markup.html.list.ListItem;
12import org.apache.wicket.markup.html.list.ListView;
13import org.apache.wicket.markup.html.panel.Panel;
14import org.apache.wicket.model.IModel;
15import org.apache.wicket.model.Model;
16
17public class FacetBoxPanel extends Panel {
18   
19    private static final int MAX_NR_OF_FACET_VALUES = 5;
20    private static final long serialVersionUID = 1L;
21    private Label label;
22    private FacetHeaderPanel facetHeaderPanel;
23    private FacetModel facetModel;
24
25    public FacetBoxPanel(String id, IModel<FacetField> model) {
26        super(id, model);
27        setOutputMarkupId(true);
28    }
29
30    @SuppressWarnings("serial")
31    public FacetBoxPanel create(final SearchPageQuery query) {
32        final FacetField facetField = (FacetField) getDefaultModelObject();
33        facetModel = new FacetModel(facetField);
34        facetModel.setSelectedValue(query.getSelectedValue(facetField));
35        label = new Label("headerLabel", facetField.getName());
36        add(label);
37        facetHeaderPanel = new FacetHeaderPanel("facetHeaderPanel", new Model<FacetModel>(facetModel), query);
38        if (facetModel.isSelected()) {
39            add(facetHeaderPanel);
40        } else {
41            add(new WebMarkupContainer("facetHeaderPanel"));
42        }
43        List<Count> allValues = facetField.getValues();
44        List<Count> values = allValues;
45        final boolean showMore = allValues != null && allValues.size() > MAX_NR_OF_FACET_VALUES;
46        if (showMore) {
47            values = allValues.subList(0, MAX_NR_OF_FACET_VALUES);
48        }
49        ListView<Count> facetList = new ListView<Count>("facetList", values) {
50            @Override
51            protected void populateItem(ListItem<Count> item) {
52                item.add(new FacetLinkPanel("facetLinks", item.getModel(), query));
53            }
54
55            @Override
56            public boolean isVisible() {
57                return !facetModel.isSelected();
58            }
59        };
60        add(facetList);
61        PageParameters pageParameters = query.getPageParameters();
62        pageParameters.add(ShowAllFacetValuesPage.SELECTED_FACET_PARAM, facetField.getName());
63        add(new BookmarkablePageLink("showMore", ShowAllFacetValuesPage.class, pageParameters) {
64
65            public boolean isVisible() {
66                return !facetModel.isSelected() && showMore;
67            }
68
69        });
70        return this;
71    }
72
73    public void replaceHeader(boolean isSelected, String selectedValue) {
74        facetModel.setSelectedValue(selectedValue);
75        if (isSelected) {
76            label.replaceWith(facetHeaderPanel);
77        } else {
78            facetHeaderPanel.replaceWith(label);
79        }
80
81    }
82
83}
Note: See TracBrowser for help on using the repository browser.