Changeset 4608


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

detaching from components with multiple models

Location:
vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket
Files:
3 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
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/components/FacetsPanel.java

    r4604 r4608  
    5151     */
    5252    public FacetsPanel(final String id, final IModel<List<FacetField>> facetsModel, final IModel<QueryFacetsSelection> selectionModel) {
    53         super(id, selectionModel);
    54        
     53        super(id);
     54
    5555        final Map<String, ExpansionState> expansionStateMap = new HashMap<String, ExpansionState>();
    5656        final MapModel<String, ExpansionState> expansionModel = new MapModel<String, ExpansionState>(expansionStateMap);
    57        
     57
    5858        final ListView<FacetField> facetsView = new ListView<FacetField>("facets", facetsModel) {
    59            
     59
    6060            @Override
    6161            protected void populateItem(ListItem<FacetField> item) {
     
    6464                                new FacetSelectionModel(item.getModel(), selectionModel),
    6565                                new FacetExpansionStateModel(item.getModel(), expansionModel)) {
    66                                    
    67                                     @Override
    68                                     protected void selectionChanged(AjaxRequestTarget target) {
    69                                         FacetsPanel.this.selectionChanged(target);
    70                                     }
    71                                 }
     66
     67                            @Override
     68                            protected void selectionChanged(AjaxRequestTarget target) {
     69                                FacetsPanel.this.selectionChanged(target);
     70                            }
     71                        }
    7272                );
    7373            }
     
    7777        add(facetsView);
    7878    }
    79    
     79
    8080    protected abstract void selectionChanged(AjaxRequestTarget target);
    8181}
  • vlo/branches/vlo-3.0/vlo-web-app/src/main/java/eu/clarin/cmdi/vlo/wicket/pages/FacetedSearchPage.java

    r4601 r4608  
    6161    }
    6262
    63     private Panel createCollectionsPanel(final String id, final Model<QueryFacetsSelection> queryModel) {
     63    private Panel createCollectionsPanel(final String id, final IModel<QueryFacetsSelection> queryModel) {
    6464        final FacetFieldModel collectionFacetFieldModel = new FacetFieldModel(facetFieldsService, vloConfig.getCollectionFacet(), queryModel);
    6565        final FacetSelectionModel collectionSelectionModel = new FacetSelectionModel(collectionFacetFieldModel, queryModel);
     
    7575    }
    7676
    77     private Panel createFacetsPanel(final String id, final Model<QueryFacetsSelection> queryModel) {
     77    private Panel createFacetsPanel(final String id, final IModel<QueryFacetsSelection> queryModel) {
    7878        final IModel<List<FacetField>> facetFieldsModel = new FacetFieldsModel(facetFieldsService, vloConfig.getFacetFields(), queryModel);
    7979        final FacetsPanel panel = new FacetsPanel(id, facetFieldsModel, queryModel) {
     
    9595    }
    9696
    97     private QueryFacetsSelection paramsToQueryFacetSelection(final PageParameters parameters) {
     97    private static QueryFacetsSelection paramsToQueryFacetSelection(final PageParameters parameters) {
    9898        final String query = parameters.get("q").toOptionalString();
    9999
Note: See TracChangeset for help on using the changeset viewer.