Changeset 4540
- Timestamp:
- 02/20/14 16:09:24 (10 years ago)
- Location:
- vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo
- Files:
-
- 2 added
- 2 edited
- 1 copied
Legend:
- Unmodified
- Added
- Removed
-
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/FacetValuesPanel.java
r4538 r4540 33 33 34 34 /** 35 * A panel representing a single facet 35 * A panel representing a single facet and its selectable values 36 36 * 37 37 * @author twagoo … … 54 54 @Override 55 55 protected void populateItem(final Item<Count> item) { 56 item.setDefaultModel(new CompoundPropertyModel<Count>(item.getModel())); 57 final Link selectLink = new AjaxFallbackLink("facetSelect") { 58 59 @Override 60 public void onClick(AjaxRequestTarget target) { 61 FacetValuesPanel.this.onValuesSelected( 62 item.getModelObject().getFacetField().getName(), 63 Collections.singleton(item.getModelObject().getName()), 64 target); 65 } 66 }; 67 item.add(selectLink); 68 // 'name' field from Count (name of value) 69 selectLink.add(new Label("name")); 70 // 'count' field from Count (document count for value) 71 selectLink.add(new Label("count")); 56 addFacetValue(item); 72 57 } 73 58 }); 59 } 60 61 private void addFacetValue(final Item<Count> item) { 62 item.setDefaultModel(new CompoundPropertyModel<Count>(item.getModel())); 63 64 // link to select an individual facet value 65 final Link selectLink = new AjaxFallbackLink("facetSelect") { 66 67 @Override 68 public void onClick(AjaxRequestTarget target) { 69 // call callback 70 onValuesSelected( 71 item.getModelObject().getFacetField().getName(), 72 // for now only single values can be selected 73 Collections.singleton(item.getModelObject().getName()), 74 target); 75 } 76 }; 77 item.add(selectLink); 78 79 // 'name' field from Count (name of value) 80 selectLink.add(new Label("name")); 81 // 'count' field from Count (document count for value) 82 selectLink.add(new Label("count")); 74 83 } 75 84 … … 82 91 * (fallback)! 83 92 */ 84 p ublicabstract void onValuesSelected(String facet, Collection<String> values, AjaxRequestTarget target);93 protected abstract void onValuesSelected(String facet, Collection<String> values, AjaxRequestTarget target); 85 94 86 95 } -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/FacetsPanel.java
r4538 r4540 17 17 package eu.clarin.cmdi.vlo.wicket.components; 18 18 19 import eu.clarin.cmdi.vlo.pojo.FacetSelection; 19 20 import eu.clarin.cmdi.vlo.pojo.QueryFacetsSelection; 20 21 import eu.clarin.cmdi.vlo.service.FacetFieldsService; 21 22 import eu.clarin.cmdi.vlo.wicket.provider.FacetFieldsDataProvider; 22 23 import java.util.Collection; 24 import java.util.HashSet; 23 25 import org.apache.solr.client.solrj.response.FacetField; 24 26 import org.apache.wicket.ajax.AjaxRequestTarget; … … 27 29 import org.apache.wicket.markup.repeater.data.DataView; 28 30 import org.apache.wicket.model.IModel; 31 import org.apache.wicket.model.Model; 29 32 import org.apache.wicket.spring.injection.annot.SpringBean; 30 33 31 34 /** 32 * A panel representing a group of facets 35 * A panel representing a group of facets. 36 * 37 * For each facet present (retrieved from the injected 38 * {@link FacetFieldsService}, a panel is added. This is either a 39 * {@link FacetValuesPanel}, allowing for selection of facet values, or a 40 * {@link SelectedFacetPanel} representing a facet with selected values, 41 * allowing for deselection of these values. 33 42 * 34 43 * @author twagoo … … 38 47 @SpringBean 39 48 private FacetFieldsService facetFieldsService; 49 private final IModel<QueryFacetsSelection> model; 40 50 41 public FacetsPanel(final String id, finalIModel<QueryFacetsSelection> model) {51 public FacetsPanel(final String id, IModel<QueryFacetsSelection> model) { 42 52 super(id, model); 53 this.model = model; 43 54 44 55 add(new DataView<FacetField>("facets", new FacetFieldsDataProvider(facetFieldsService, model)) { … … 46 57 @Override 47 58 protected void populateItem(Item<FacetField> item) { 48 item.add(new FacetValuesPanel("facet", item.getModel()) { 49 50 @Override 51 public void onValuesSelected(String facet, Collection<String> value, AjaxRequestTarget target) { 52 // A value has been selected on this facet's panel, 53 // update the model! 54 model.getObject().selectValues(facet, value); 55 56 // Trigger updates to reflect new model state 57 modelChanged(); 58 59 if (target != null) { 60 // reload entire page for now 61 target.add(getPage()); 62 } 63 } 64 }); 59 createFacetPanel(item); 65 60 } 66 61 }); 67 62 } 68 63 64 private void createFacetPanel(Item<FacetField> item) { 65 // Is there a selection for this facet? 66 final IModel<FacetField> facetFieldModel = item.getModel(); 67 final String facetName = facetFieldModel.getObject().getName(); 68 final Collection<String> selectionValues = model.getObject().getSelectionValues(facetName); 69 70 // Show different panel, depending on selected values 71 if (selectionValues == null || selectionValues.isEmpty()) { 72 // No values selected, show value selection panel 73 item.add(createFacetValuesPanel(facetFieldModel)); 74 } else { 75 // Values selected, show selected values panel (with option to remove) 76 item.add(createSelectedFacetPanel(facetName)); 77 } 78 } 79 80 private FacetValuesPanel createFacetValuesPanel(final IModel<FacetField> facetFieldModel) { 81 return new FacetValuesPanel("facet", facetFieldModel) { 82 83 @Override 84 public void onValuesSelected(String facet, Collection<String> value, AjaxRequestTarget target) { 85 // A value has been selected on this facet's panel, 86 // update the model! 87 model.getObject().selectValues(facet, value); 88 89 if (target != null) { 90 // reload entire page for now 91 target.add(getPage()); 92 } 93 } 94 }; 95 } 96 97 private SelectedFacetPanel createSelectedFacetPanel(String facetName) { 98 final FacetSelection selection = new FacetSelection(facetName, model); 99 return new SelectedFacetPanel("facet", new Model(selection)) { 100 101 @Override 102 public void onValuesUnselected(String facet, Collection<String> valuesRemoved, AjaxRequestTarget target) { 103 // Values have been removed, calculate remainder 104 final Collection<String> currentSelection = model.getObject().getSelectionValues(facet); 105 final Collection<String> newSelection = new HashSet<String>(currentSelection); 106 newSelection.removeAll(valuesRemoved); 107 108 // Update model 109 model.getObject().selectValues(facet, newSelection); 110 111 if (target != null) { 112 // reload entire page for now 113 target.add(getPage()); 114 } 115 } 116 }; 117 } 69 118 } -
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/SelectedFacetPanel.html
r4522 r4540 23 23 </head> 24 24 <body> 25 <wicket:panel> 26 <div class="facet collapsedfacet"> 27 <a href="#" class="expandfacet"><span>expand</span></a> 28 <a href="#" class="collapsefacet"><span>collapse</span></a> 29 <h1><a href="#"><wicket:container wicket:id="name">[TITLE]</wicket:container></a></h1> 30 <a href class="filtertoggle"><span>filter</span></a> 31 <form class="filterform"> 32 <input type="text" /> 33 </form> 34 <div class="sbilinks facetvalues"> 35 <ul> 36 <li wicket:id="facetValues"><a wicket:id="facetSelect" href="index3.html"><span wicket:id="name">Dutch</span> (<span wicket:id="count">148167</span>)</a></li> 37 <!--<li class="more-link"><a wicket:id="allFacetValuesLink" href="#">more...</a></li>--> 38 </ul> 25 <wicket:panel> 26 <div class="facet collapsedfacet"> 27 <a href="#" class="expandfacet"><span>expand</span></a> 28 <a href="#" class="collapsefacet"><span>collapse</span></a> 29 <h1><a href="#"><wicket:container wicket:id="facet">[TITLE]</wicket:container></a></h1> 30 <div wicket:id="facetValueRemover" class="selectedvaluelabel"> 31 <wicket:container wicket:id="facetValue">value</wicket:container> 32 <a wicket:id="unselectValue" class="unselectfacetvalue" title="unselect value"> 33 <span>[unselect]</span> 34 </a> 35 </div> 36 <div class="sbilinks facetvalues"> 37 <ul> 38 <li><span class="selectedfacetvalue">Dutch</span><a class="unselectfacetvalue" title="unselect value" href="index2.html"><span>[unselect]</span></a></li> 39 <li><span class="facetvalue">English</span></li> 40 <li><span class="facetvalue">German</span></li> 41 <li><span class="facetvalue">French</span></li> 42 <li><span class="facetvalue">Spanish</span></li> 43 <li><span class="facetvalue">Danish</span></li> 44 <li><span class="facetvalue">Japanese</span></li> 45 <li><span class="facetvalue">Turkish</span></li> 46 <li><span class="facetvalue">Chinese</span></li> 47 <!--<li class="more-link"><a href="#">more...</a></li>--> 48 </ul> 49 </div> 39 50 </div> 40 </div> 41 </wicket:panel> 42 </body> 51 </wicket:panel> 52 </body> 43 53 </html>
Note: See TracChangeset
for help on using the changeset viewer.