Ignore:
Timestamp:
02/28/14 15:22:54 (10 years ago)
Author:
Twan Goosen
Message:

detaching from components with multiple models

File:
1 edited

Legend:

Unmodified
Added
Removed
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/FacetPanel.java

    r4604 r4608  
    4141public abstract class FacetPanel extends Panel {
    4242
    43     private final IModel<FacetSelection> model;
     43    private final IModel<FacetSelection> selectionModel;
     44    private final IModel<ExpansionState> expansionStateModel;
    4445
    4546    private final SelectedFacetPanel selectedFacetPanel;
    4647    private final FacetValuesPanel facetValuesPanel;
    47     private final IModel<ExpansionState> expansionStateModel;
    4848
    49     public FacetPanel(String id, IModel<FacetSelection> model, IModel<ExpansionState> expansionState) {
    50         super(id, model);
    51         this.model = model;
     49    public FacetPanel(String id, IModel<FacetSelection> selectionModel, IModel<ExpansionState> expansionState) {
     50        super(id, selectionModel);
     51        this.selectionModel = selectionModel;
    5252        this.expansionStateModel = expansionState;
    5353
     
    6767        super.onConfigure();
    6868
    69         final boolean valuesSelected = !model.getObject().getFacetValues().isEmpty();
     69        final boolean valuesSelected = !selectionModel.getObject().getFacetValues().isEmpty();
    7070        facetValuesPanel.setVisible(!valuesSelected);
    7171        selectedFacetPanel.setVisible(valuesSelected);
     
    7373
    7474    private FacetValuesPanel createFacetValuesPanel(String id) {
    75         return new FacetValuesPanel(id, new PropertyModel<FacetField>(model, "facetField")) {
     75        return new FacetValuesPanel(id, new PropertyModel<FacetField>(selectionModel, "facetField")) {
    7676            @Override
    7777            public void onValuesSelected(String facet, Collection<String> value, AjaxRequestTarget target) {
    7878                // A value has been selected on this facet's panel, update the model!
    79                 model.getObject().getSelection().selectValues(facet, value);
     79                selectionModel.getObject().getSelection().selectValues(facet, value);
    8080                // collapse after selection
    8181                expansionStateModel.setObject(ExpansionState.COLLAPSED);
     
    8989
    9090    private SelectedFacetPanel createSelectedFacetPanel(String id) {
    91         return new SelectedFacetPanel(id, model) {
     91        return new SelectedFacetPanel(id, selectionModel) {
    9292            @Override
    9393            public void onValuesUnselected(String facet, Collection<String> valuesRemoved, AjaxRequestTarget target) {
    94                 final QueryFacetsSelection selection = model.getObject().getSelection();
     94                final QueryFacetsSelection selection = selectionModel.getObject().getSelection();
    9595                // Values have been removed, calculate remainder
    9696                final Collection<String> currentSelection = selection.getSelectionValues(facet);
     
    153153    }
    154154
     155    @Override
     156    public void detachModels() {
     157        // this will detach selection model (passed to super through constructor)
     158        super.detachModels();
     159        // additional model not known by supertype
     160        expansionStateModel.detach();
     161    }
     162
    155163    protected abstract void selectionChanged(AjaxRequestTarget target);
    156164
Note: See TracChangeset for help on using the changeset viewer.