Changeset 5059
- Timestamp:
- 04/25/14 07:34:38 (10 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/panels/search/FacetValuesPanel.java
r5058 r5059 62 62 private final IModel<FieldValuesFilter> filterModel; 63 63 64 /** 65 * Creates a new panel with selectable values for a single facet 66 * 67 * @param id component id 68 * @param model facet field model for this panel 69 * @param selectionModel model holding the global query/facet selection 70 */ 64 71 public FacetValuesPanel(String id, final IModel<FacetField> model, final IModel<QueryFacetsSelection> selectionModel) { 65 72 super(id, model); … … 87 94 } 88 95 89 private DataView<Count> createValuesView(String id) { 90 final FacetFieldValuesProvider valuesProvider = new FacetFieldValuesProvider(getModel(), MAX_NUMBER_OF_FACETS_TO_SHOW, LOW_PRIORITY_VALUES) { 91 92 @Override 93 protected IModel<FieldValuesFilter> getFilterModel() { 94 return filterModel; 95 } 96 97 }; 98 final DataView<Count> valuesView = new DataView<Count>(id, valuesProvider) { 99 100 @Override 101 protected void populateItem(final Item<Count> item) { 102 addFacetValue(item); 103 } 104 }; 105 valuesView.setOutputMarkupId(true); 106 return valuesView; 107 } 108 96 /** 97 * Creates a form with an input bound to the filter model 98 * 99 * @param id component id 100 * @return filter form 101 */ 109 102 private Form createFilterForm(String id) { 110 103 final Form filterForm = new Form(id); … … 124 117 } 125 118 126 private void addFacetValue(final Item<Count> item) { 119 /** 120 * Creates a view for the actual values (as links) for selection 121 * 122 * @param id component id 123 * @return data view with value links 124 */ 125 private DataView<Count> createValuesView(String id) { 126 final FacetFieldValuesProvider valuesProvider = new FacetFieldValuesProvider(getModel(), MAX_NUMBER_OF_FACETS_TO_SHOW, LOW_PRIORITY_VALUES) { 127 128 @Override 129 protected IModel<FieldValuesFilter> getFilterModel() { 130 return filterModel; 131 } 132 133 }; 134 final DataView<Count> valuesView = new DataView<Count>(id, valuesProvider) { 135 136 @Override 137 protected void populateItem(final Item<Count> item) { 138 addFacetValue("facetSelect", item); 139 } 140 }; 141 valuesView.setOutputMarkupId(true); 142 return valuesView; 143 } 144 145 /** 146 * Adds an individual facet value selection link to a dataview item 147 * 148 * @param item item to add link to 149 */ 150 private void addFacetValue(String id, final Item<Count> item) { 127 151 item.setDefaultModel(new CompoundPropertyModel<Count>(item.getModel())); 128 152 129 153 // link to select an individual facet value 130 final Link selectLink = new IndicatingAjaxFallbackLink( "facetSelect") {154 final Link selectLink = new IndicatingAjaxFallbackLink(id) { 131 155 132 156 @Override … … 151 175 } 152 176 153 private ModalWindow createAllValuesWindow(String id) { 154 final ModalWindow window = new ModalWindow(id) { 155 156 @Override 157 public IModel<String> getTitle() { 158 return new SolrFieldNameModel(getModel(), "name"); 159 } 160 161 }; 162 163 final AllFacetValuesPanel allValuesPanel = new AllFacetValuesPanel(window.getContentId(), getModel(), filterModel) { 164 165 @Override 166 protected void onValuesSelected(String facet, FacetSelection values, AjaxRequestTarget target) { 167 window.close(target); 168 FacetValuesPanel.this.onValuesSelected(facet, values, target); 169 } 170 }; 171 window.addOrReplace(allValuesPanel); 172 return window; 173 } 174 177 /** 178 * Creates a link that leads to the 'all facet values' view, either as a 179 * modal window (if JavaScript is enabled, see {@link #createAllValuesWindow(java.lang.String) 180 * }) or by redirecting to {@link AllFacetValuesPage} 181 * 182 * @param id component id 183 * @return 'show all values' link 184 */ 175 185 private Link createAllValuesLink(String id) { 176 186 final Link link = new AjaxFallbackLink<FacetField>(id, getModel()) { … … 179 189 public void onClick(AjaxRequestTarget target) { 180 190 if (target == null) { 181 // open a new page with values191 // no JavaScript, open a new page with values 182 192 setResponsePage(new AllFacetValuesPage(getModel(), selectionModel)); 183 193 } else { 184 // show values in a popup (requires JavaScript)194 // JavaScript enabled, show values in a modal popup 185 195 valuesWindow.show(target); 186 196 } … … 196 206 }; 197 207 return link; 208 } 209 210 /** 211 * Creates a modal window showing a {@link AllFacetValuesPanel} for this 212 * facet 213 * 214 * @param id component id 215 * @return 'all facet values' modal window component 216 */ 217 private ModalWindow createAllValuesWindow(String id) { 218 final ModalWindow window = new ModalWindow(id) { 219 220 @Override 221 public IModel<String> getTitle() { 222 return new SolrFieldNameModel(getModel(), "name"); 223 } 224 225 }; 226 227 final AllFacetValuesPanel allValuesPanel = new AllFacetValuesPanel(window.getContentId(), getModel(), filterModel) { 228 229 @Override 230 protected void onValuesSelected(String facet, FacetSelection values, AjaxRequestTarget target) { 231 window.close(target); 232 FacetValuesPanel.this.onValuesSelected(facet, values, target); 233 } 234 }; 235 window.addOrReplace(allValuesPanel); 236 return window; 198 237 } 199 238
Note: See TracChangeset
for help on using the changeset viewer.