James Moger
2012-11-01 3dec957f01b1e6b0af31476361efbb5767d0303d
src/com/gitblit/wicket/pages/EditRepositoryPage.java
@@ -115,6 +115,11 @@
      setStatelessHint(false);
      setOutputMarkupId(true);
   }
   @Override
   protected boolean requiresPageMap() {
      return true;
   }
   protected void setupPage(RepositoryModel model) {
      this.repositoryModel = model;
@@ -141,11 +146,11 @@
         }
      } else {
         super.setupPage(getString("gb.edit"), repositoryModel.name);
         if (repositoryModel.accessRestriction.exceeds(AccessRestrictionType.NONE)) {
            repositoryUsers.addAll(GitBlit.self().getUserAccessPermissions(repositoryModel));
            repositoryTeams.addAll(GitBlit.self().getTeamAccessPermissions(repositoryModel));
            Collections.sort(repositoryUsers);
         }
         repositoryUsers.addAll(GitBlit.self().getUserAccessPermissions(repositoryModel));
         repositoryTeams.addAll(GitBlit.self().getTeamAccessPermissions(repositoryModel));
         Collections.sort(repositoryUsers);
         Collections.sort(repositoryTeams);
         federationSets.addAll(repositoryModel.federationSets);
         if (!ArrayUtils.isEmpty(repositoryModel.indexedBranches)) {
            indexedBranches.addAll(repositoryModel.indexedBranches);
@@ -373,7 +378,7 @@
      form.add(new TextField<String>("name").setEnabled(allowEditName));
      form.add(new TextField<String>("description"));
      form.add(new DropDownChoice<String>("owner", GitBlit.self().getAllUsernames())
            .setEnabled(GitBlitWebSession.get().canAdmin()));
            .setEnabled(GitBlitWebSession.get().canAdmin() && !repositoryModel.isPersonalRepository()));
      form.add(new CheckBox("allowForks"));
      DropDownChoice<AccessRestrictionType> accessRestriction = new DropDownChoice<AccessRestrictionType>("accessRestriction", Arrays
            .asList(AccessRestrictionType.values()), new AccessRestrictionRenderer());
@@ -389,9 +394,10 @@
      }
      form.add(new DropDownChoice<String>("HEAD", availableRefs).setEnabled(availableRefs.size() > 0));
      List<String> gcPeriods = Arrays.asList("1 day", "2 days", "3 days", "4 days", "5 days", "7 days", "10 days", "14 days");
      form.add(new DropDownChoice<String>("gcPeriod", gcPeriods));
      form.add(new TextField<String>("gcThreshold"));
      boolean gcEnabled = GitBlit.getBoolean(Keys.git.enableGarbageCollection, false);
      List<Integer> gcPeriods = Arrays.asList(1, 2, 3, 4, 5, 7, 10, 14 );
      form.add(new DropDownChoice<Integer>("gcPeriod", gcPeriods, new GCPeriodRenderer()).setEnabled(gcEnabled));
      form.add(new TextField<String>("gcThreshold").setEnabled(gcEnabled));
      // federation strategies - remove ORIGIN choice if this repository has
      // no origin.
@@ -417,8 +423,10 @@
      final RadioChoice<AuthorizationControl> authorizationControl = new RadioChoice<Constants.AuthorizationControl>(
            "authorizationControl", acList, new AuthorizationControlRenderer());
      form.add(authorizationControl);
      form.add(new CheckBox("verifyCommitter"));
      final CheckBox verifyCommitter = new CheckBox("verifyCommitter");
      verifyCommitter.setOutputMarkupId(true);
      form.add(verifyCommitter);
      form.add(usersPalette);
      form.add(teamsPalette);
@@ -440,14 +448,16 @@
         usersPalette.setEnabled(false);
         teamsPalette.setEnabled(false);
         authorizationControl.setEnabled(false);
         verifyCommitter.setEnabled(false);
      } else {
         // authenticated something
         // enable authorization controls
         authorizationControl.setEnabled(true);
         verifyCommitter.setEnabled(true);
         
         boolean allowFineGrainedControls = repositoryModel.authorizationControl.equals(AuthorizationControl.NAMED);
         usersPalette.setEnabled(allowFineGrainedControls);
         teamsPalette.setEnabled(allowFineGrainedControls);
         teamsPalette.setEnabled(allowFineGrainedControls);
      }
      
      accessRestriction.add(new AjaxFormComponentUpdatingBehavior("onchange") {
@@ -458,6 +468,7 @@
            // enable/disable permissions panel based on access restriction
            boolean allowAuthorizationControl = repositoryModel.accessRestriction.exceeds(AccessRestrictionType.NONE);
            authorizationControl.setEnabled(allowAuthorizationControl);
            verifyCommitter.setEnabled(allowAuthorizationControl);
            
            boolean allowFineGrainedControls = allowAuthorizationControl && repositoryModel.authorizationControl.equals(AuthorizationControl.NAMED);
            usersPalette.setEnabled(allowFineGrainedControls);
@@ -468,6 +479,7 @@
            }
            
            target.addComponent(authorizationControl);
            target.addComponent(verifyCommitter);
            target.addComponent(usersPalette);
            target.addComponent(teamsPalette);
         }
@@ -619,4 +631,27 @@
         return Integer.toString(index);
      }
   }
   private class GCPeriodRenderer implements IChoiceRenderer<Integer> {
      private static final long serialVersionUID = 1L;
      public GCPeriodRenderer() {
      }
      @Override
      public String getDisplayValue(Integer value) {
         if (value == 1) {
            return getString("gb.duration.oneDay");
         } else {
            return MessageFormat.format(getString("gb.duration.days"), value);
         }
      }
      @Override
      public String getIdValue(Integer value, int index) {
         return Integer.toString(index);
      }
   }
}