James Moger
2013-11-26 4fcac9d2cbdafb51e3ee9ca3b3da64fd86103174
src/main/java/com/gitblit/wicket/PageRegistration.java
@@ -26,9 +26,9 @@
/**
 * Represents a page link registration for the topbar.
 *
 *
 * @author James Moger
 *
 *
 */
public class PageRegistration implements Serializable {
   private static final long serialVersionUID = 1L;
@@ -36,6 +36,7 @@
   public final String translationKey;
   public final Class<? extends WebPage> pageClass;
   public final PageParameters params;
   public final boolean hiddenPhone;
   public PageRegistration(String translationKey, Class<? extends WebPage> pageClass) {
      this(translationKey, pageClass, null);
@@ -43,16 +44,22 @@
   public PageRegistration(String translationKey, Class<? extends WebPage> pageClass,
         PageParameters params) {
      this(translationKey, pageClass, params, false);
   }
   public PageRegistration(String translationKey, Class<? extends WebPage> pageClass,
         PageParameters params, boolean hiddenPhone) {
      this.translationKey = translationKey;
      this.pageClass = pageClass;
      this.params = params;
      this.hiddenPhone = hiddenPhone;
   }
   /**
    * Represents a page link to a non-Wicket page. Might be external.
    *
    *
    * @author James Moger
    *
    *
    */
   public static class OtherPageLink extends PageRegistration {
@@ -64,13 +71,18 @@
         super(translationKey, null);
         this.url = url;
      }
      public OtherPageLink(String translationKey, String url, boolean hiddenPhone) {
         super(translationKey, null, null, hiddenPhone);
         this.url = url;
      }
   }
   /**
    * Represents a DropDownMenu for the topbar
    *
    *
    * @author James Moger
    *
    *
    */
   public static class DropDownMenuRegistration extends PageRegistration {
@@ -86,9 +98,9 @@
   /**
    * A MenuItem for the DropDownMenu.
    *
    *
    * @author James Moger
    *
    *
    */
   public static class DropDownMenuItem implements Serializable {
@@ -109,7 +121,7 @@
      /**
       * Standard Menu Item constructor.
       *
       *
       * @param displayText
       * @param parameter
       * @param value
@@ -120,7 +132,7 @@
      /**
       * Standard Menu Item constructor that preserves aggregate parameters.
       *
       *
       * @param displayText
       * @param parameter
       * @param value
@@ -140,13 +152,8 @@
            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);
               }
               // set the new selection value
               setParameter(parameter, value);
            } else {
               // not currently selected
               isSelected = false;
@@ -155,7 +162,7 @@
         }
      }
      private void setParameter(String parameter, String value) {
      protected void setParameter(String parameter, String value) {
         if (!StringUtils.isEmpty(parameter)) {
            if (StringUtils.isEmpty(value)) {
               this.parameters.remove(parameter);
@@ -212,4 +219,25 @@
         return displayText;
      }
   }
   public static class DropDownToggleItem extends DropDownMenuItem {
      private static final long serialVersionUID = 1L;
      /**
       * Toggle Menu Item constructor that preserves aggregate parameters.
       *
       * @param displayText
       * @param parameter
       * @param value
       */
      public DropDownToggleItem(String displayText, String parameter, String value,
            PageParameters params) {
         super(displayText, parameter, value, params);
         if (isSelected) {
            // already selected, so remove this enables toggling
            parameters.remove(parameter);
         }
      }
   }
}