Changeset 5059


Ignore:
Timestamp:
04/25/14 07:34:38 (10 years ago)
Author:
Twan Goosen
Message:

refactoring and documentation in FacetValuesPanel?

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  
    6262    private final IModel<FieldValuesFilter> filterModel;
    6363
     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     */
    6471    public FacetValuesPanel(String id, final IModel<FacetField> model, final IModel<QueryFacetsSelection> selectionModel) {
    6572        super(id, model);
     
    8794    }
    8895
    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     */
    109102    private Form createFilterForm(String id) {
    110103        final Form filterForm = new Form(id);
     
    124117    }
    125118
    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) {
    127151        item.setDefaultModel(new CompoundPropertyModel<Count>(item.getModel()));
    128152
    129153        // link to select an individual facet value
    130         final Link selectLink = new IndicatingAjaxFallbackLink("facetSelect") {
     154        final Link selectLink = new IndicatingAjaxFallbackLink(id) {
    131155
    132156            @Override
     
    151175    }
    152176
    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     */
    175185    private Link createAllValuesLink(String id) {
    176186        final Link link = new AjaxFallbackLink<FacetField>(id, getModel()) {
     
    179189            public void onClick(AjaxRequestTarget target) {
    180190                if (target == null) {
    181                     // open a new page with values
     191                    // no JavaScript, open a new page with values
    182192                    setResponsePage(new AllFacetValuesPage(getModel(), selectionModel));
    183193                } else {
    184                     // show values in a popup (requires JavaScript)
     194                    // JavaScript enabled, show values in a modal popup
    185195                    valuesWindow.show(target);
    186196                }
     
    196206        };
    197207        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;
    198237    }
    199238
Note: See TracChangeset for help on using the changeset viewer.