James Moger
2012-10-13 c658df9e87d65b08d5482cf04489cb0532ff83dd
src/com/gitblit/wicket/PageRegistration.java
@@ -49,6 +49,24 @@
   }
   /**
    * Represents a page link to a non-Wicket page. Might be external.
    *
    * @author James Moger
    *
    */
   public static class OtherPageLink extends PageRegistration {
      private static final long serialVersionUID = 1L;
      public final String url;
      public OtherPageLink(String translationKey, String url) {
         super(translationKey, null);
         this.url = url;
      }
   }
   /**
    * Represents a DropDownMenu for the topbar
    * 
    * @author James Moger
@@ -76,19 +94,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 +130,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 +173,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()) {