Index: /vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/pojo/QueryFacetsSelection.java
===================================================================
--- /vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/pojo/QueryFacetsSelection.java	(revision 4525)
+++ /vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/pojo/QueryFacetsSelection.java	(revision 4526)
@@ -91,4 +91,8 @@
         return queryString;
     }
+    
+    public void selectValues(String facet, Collection<String> values){
+        selection.put(facet, values);
+    }
 
 }
Index: /vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/FacetPanel.java
===================================================================
--- /vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/FacetPanel.java	(revision 4525)
+++ /vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/FacetPanel.java	(revision 4526)
@@ -18,6 +18,10 @@
 
 import eu.clarin.cmdi.vlo.wicket.provider.FacetFieldValuesProvider;
+import java.util.Collection;
+import java.util.Collections;
 import org.apache.solr.client.solrj.response.FacetField;
 import org.apache.solr.client.solrj.response.FacetField.Count;
+import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
 import org.apache.wicket.markup.html.basic.Label;
 import org.apache.wicket.markup.html.link.Link;
@@ -33,8 +37,8 @@
  * @author twagoo
  */
-public class FacetPanel extends Panel {
+public abstract class FacetPanel extends Panel {
 
     private final int maxNumberOfFacetsToShow = 10; //TODO: get from config
-    
+
     public FacetPanel(String id, IModel<FacetField> model) {
         super(id, model);
@@ -43,5 +47,5 @@
         // 'name' field from FacetField
         add(new Label("name"));
-        
+
         // provider that extracts values and counts from FacetField
         final FacetFieldValuesProvider valuesProvider = new FacetFieldValuesProvider(model, maxNumberOfFacetsToShow);
@@ -49,12 +53,14 @@
 
             @Override
-            protected void populateItem(Item<Count> item) {
+            protected void populateItem(final Item<Count> item) {
                 item.setDefaultModel(new CompoundPropertyModel<Count>(item.getModel()));
-                final Link selectLink = new Link("facetSelect") {
-                    
+                final Link selectLink = new AjaxFallbackLink("facetSelect") {
+
                     @Override
-                    public void onClick() {
-                        //TODO: select facet
-                        throw new UnsupportedOperationException("Not supported yet.");
+                    public void onClick(AjaxRequestTarget target) {
+                        FacetPanel.this.onValuesSelected(
+                                item.getModelObject().getFacetField().getName(),
+                                Collections.singleton(item.getModelObject().getName()),
+                                target);
                     }
                 };
@@ -68,3 +74,13 @@
     }
 
+    /**
+     * Callback triggered when values have been selected on this facet
+     *
+     * @param facet name of the facet this panel represents
+     * @param values selected values
+     * @param target Ajax target allowing for a partial update. May be null
+     * (fallback)!
+     */
+    public abstract void onValuesSelected(String facet, Collection<String> values, AjaxRequestTarget target);
+
 }
Index: /vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/FacetsPanel.java
===================================================================
--- /vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/FacetsPanel.java	(revision 4525)
+++ /vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/FacetsPanel.java	(revision 4526)
@@ -20,5 +20,7 @@
 import eu.clarin.cmdi.vlo.service.FacetFieldsService;
 import eu.clarin.cmdi.vlo.wicket.provider.FacetFieldsDataProvider;
+import java.util.Collection;
 import org.apache.solr.client.solrj.response.FacetField;
+import org.apache.wicket.ajax.AjaxRequestTarget;
 import org.apache.wicket.markup.html.panel.Panel;
 import org.apache.wicket.markup.repeater.Item;
@@ -37,19 +39,31 @@
     private FacetFieldsService facetFieldsService;
 
-    public FacetsPanel(String id, IModel<QueryFacetsSelection> model) {
+    public FacetsPanel(final String id, final IModel<QueryFacetsSelection> model) {
         super(id, model);
-        add(new FacetsDataView("facets", model));
+
+        add(new DataView<FacetField>("facets", new FacetFieldsDataProvider(facetFieldsService, model)) {
+
+            @Override
+            protected void populateItem(Item<FacetField> item) {
+                item.add(new FacetPanel("facet", item.getModel()) {
+
+                    @Override
+                    public void onValuesSelected(String facet, Collection<String> value, AjaxRequestTarget target) {
+                        // A value has been selected on this facet's panel,
+                        // update the model! 
+                        model.getObject().selectValues(facet, value);
+
+                        // Trigger updates to reflect new model state
+                        modelChanged();
+
+                        if (target != null) {
+                            // reload entire page for now
+                            target.add(getPage());
+                        }
+                    }
+                });
+            }
+        });
     }
 
-    private class FacetsDataView extends DataView<FacetField> {
-
-        public FacetsDataView(String id, IModel<QueryFacetsSelection> model) {
-            super(id, new FacetFieldsDataProvider(facetFieldsService, model));
-        }
-
-        @Override
-        protected void populateItem(Item<FacetField> item) {
-            item.add(new FacetPanel("facet", item.getModel()));
-        }
-    }
 }
