From 8f86e2d6469269323bcd7b0788c56cf08ac34c49 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 30 Dec 2011 07:53:00 -0500 Subject: [PATCH] Indicate selected filters. Strip default db value from links. --- src/com/gitblit/wicket/PageRegistration.java | 43 +++++++++++++++++++++++++++++++++---------- 1 files changed, 33 insertions(+), 10 deletions(-) diff --git a/src/com/gitblit/wicket/PageRegistration.java b/src/com/gitblit/wicket/PageRegistration.java index 6c13b82..fe76a85 100644 --- a/src/com/gitblit/wicket/PageRegistration.java +++ b/src/com/gitblit/wicket/PageRegistration.java @@ -76,19 +76,17 @@ private static final long serialVersionUID = 1L; - final PageParameters params; + final PageParameters parameters; final String displayText; final String parameter; final String value; + final boolean isSelected; /** * Divider constructor. */ public DropDownMenuItem() { - displayText = null; - parameter = null; - value = null; - params = null; + this(null, null, null, null); } /** @@ -114,16 +112,37 @@ this.displayText = displayText; this.parameter = parameter; this.value = value; + if (params == null) { - this.params = new PageParameters(); + // no parameters specified + parameters = new PageParameters(); + setParameter(parameter, value); + isSelected = false; } else { - this.params = new PageParameters(params); + parameters = new PageParameters(params); + if (parameters.containsKey(parameter)) { + isSelected = params.getString(parameter).equals(value); + if (isSelected) { + // already selected, so remove this enables toggling + parameters.remove(parameter); + } else { + // set the new selection value + setParameter(parameter, value); + } + } else { + // not currently selected + isSelected = false; + setParameter(parameter, value); + } } + } + + private void setParameter(String parameter, String value) { if (!StringUtils.isEmpty(parameter)) { if (StringUtils.isEmpty(value)) { - this.params.remove(parameter); + this.parameters.remove(parameter); } else { - this.params.put(parameter, value); + this.parameters.put(parameter, value); } } } @@ -136,13 +155,17 @@ } public PageParameters getPageParameters() { - return params; + return parameters; } public boolean isDivider() { return displayText == null && value == null && parameter == null; } + public boolean isSelected() { + return isSelected; + } + @Override public int hashCode() { if (isDivider()) { -- Gitblit v1.9.1