James Moger
2011-10-14 bcc616b8e425f73e7abc6799f23445c1e411463d
src/com/gitblit/client/GitblitPanel.java
@@ -108,7 +108,7 @@
   private NameRenderer nameRenderer;
   private TypeRenderer typeRenderer;
   private IndicatorsRenderer typeRenderer;
   private DefaultTableCellRenderer ownerRenderer;
@@ -127,7 +127,7 @@
      this.account = account;
      this.password = password;
      final JButton browseRepository = new JButton("Browse");
      final JButton browseRepository = new JButton(Translation.get("gb.browse"));
      browseRepository.setEnabled(false);
      browseRepository.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
@@ -142,7 +142,7 @@
         }
      });
      JButton refreshRepositories = new JButton("Refresh");
      JButton refreshRepositories = new JButton(Translation.get("gb.refresh"));
      refreshRepositories.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            try {
@@ -157,14 +157,14 @@
         }
      });
      createRepository = new JButton("Create");
      createRepository = new JButton(Translation.get("gb.create"));
      createRepository.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            createRepository();
         }
      });
      final JButton editRepository = new JButton("Edit");
      final JButton editRepository = new JButton(Translation.get("gb.edit"));
      editRepository.setEnabled(false);
      editRepository.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
@@ -172,7 +172,7 @@
         }
      });
      delRepository = new JButton("Delete");
      delRepository = new JButton(Translation.get("gb.delete"));
      delRepository.setEnabled(false);
      delRepository.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
@@ -180,7 +180,7 @@
         }
      });
      final JButton cloneRepository = new JButton("Clone");
      final JButton cloneRepository = new JButton(Translation.get("gb.clone"));
      cloneRepository.setEnabled(false);
      cloneRepository.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
@@ -191,7 +191,7 @@
      });
      nameRenderer = new NameRenderer();
      typeRenderer = new TypeRenderer();
      typeRenderer = new IndicatorsRenderer();
      sizeRenderer = new DefaultTableCellRenderer();
      sizeRenderer.setHorizontalAlignment(SwingConstants.RIGHT);
@@ -216,7 +216,7 @@
      repositoriesTable.setDefaultRenderer(Date.class,
            new DateCellRenderer(null, Color.orange.darker()));
      setRenderer(RepositoriesModel.Columns.Name, nameRenderer);
      setRenderer(RepositoriesModel.Columns.Type, typeRenderer);
      setRenderer(RepositoriesModel.Columns.Indicators, typeRenderer);
      setRenderer(RepositoriesModel.Columns.Owner, ownerRenderer);
      setRenderer(RepositoriesModel.Columns.Size, sizeRenderer);
@@ -252,7 +252,7 @@
      });
      JPanel filterPanel = new JPanel(new BorderLayout(margin, margin));
      filterPanel.add(new JLabel("Filter"), BorderLayout.WEST);
      filterPanel.add(new JLabel(Translation.get("gb.filter")), BorderLayout.WEST);
      filterPanel.add(repositoryFilter, BorderLayout.CENTER);
      JPanel tablePanel = new JPanel(new BorderLayout(margin, margin));
@@ -267,11 +267,12 @@
      repositoryControls.add(delRepository);
      JPanel repositoriesPanel = new JPanel(new BorderLayout(margin, margin));
      repositoriesPanel.add(newHeaderLabel("Repositories"), BorderLayout.NORTH);
      repositoriesPanel.add(newHeaderLabel(Translation.get("gb.repositories")),
            BorderLayout.NORTH);
      repositoriesPanel.add(tablePanel, BorderLayout.CENTER);
      repositoriesPanel.add(repositoryControls, BorderLayout.SOUTH);
      JButton refreshUsers = new JButton("Refresh");
      JButton refreshUsers = new JButton(Translation.get("gb.refresh"));
      refreshUsers.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            try {
@@ -286,14 +287,14 @@
         }
      });
      JButton createUser = new JButton("Create");
      JButton createUser = new JButton(Translation.get("gb.create"));
      createUser.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            createUser();
         }
      });
      final JButton editUser = new JButton("Edit");
      final JButton editUser = new JButton(Translation.get("gb.edit"));
      editUser.setEnabled(false);
      editUser.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
@@ -301,7 +302,7 @@
         }
      });
      final JButton delUser = new JButton("Delete");
      final JButton delUser = new JButton(Translation.get("gb.delete"));
      delUser.setEnabled(false);
      delUser.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
@@ -331,7 +332,7 @@
      userControls.add(delUser);
      usersPanel = new JPanel(new BorderLayout(margin, margin));
      usersPanel.add(newHeaderLabel("Users"), BorderLayout.NORTH);
      usersPanel.add(newHeaderLabel(Translation.get("gb.users")), BorderLayout.NORTH);
      usersPanel.add(new JScrollPane(usersList), BorderLayout.CENTER);
      usersPanel.add(userControls, BorderLayout.SOUTH);
@@ -343,8 +344,8 @@
      mainPanel.add(usersPanel, BorderLayout.EAST);
      tabs = new JTabbedPane(JTabbedPane.BOTTOM);
      tabs.addTab("Main", mainPanel);
      tabs.addTab("Federation", new JPanel());
      tabs.addTab(Translation.get("gb.repositories"), mainPanel);
      tabs.addTab(Translation.get("gb.federation"), new JPanel());
      setLayout(new BorderLayout());
      add(tabs, BorderLayout.CENTER);
@@ -516,9 +517,17 @@
    * 
    */
   protected void createRepository() {
      EditRepositoryDialog dialog = new EditRepositoryDialog(allUsers);
      List<String> usernames = new ArrayList<String>();
      for (UserModel user : this.allUsers) {
         usernames.add(user.username);
      }
      Collections.sort(usernames);
      EditRepositoryDialog dialog = new EditRepositoryDialog();
      dialog.setUsers(null, usernames, null);
      dialog.setRepositories(allRepositories);
      dialog.setVisible(true);
      final RepositoryModel newRepository = dialog.getRepository();
      final List<String> permittedUsers = dialog.getPermittedUsers();
      if (newRepository == null) {
         return;
      }
@@ -528,7 +537,14 @@
         @Override
         protected Boolean doInBackground() throws IOException {
            return RpcUtils.createRepository(newRepository, url, account, password);
            boolean success = true;
            success &= RpcUtils.createRepository(newRepository, url, account, password);
            if (permittedUsers.size() > 0) {
               // if new repository has named members, set them
               success &= RpcUtils.setRepositoryMembers(newRepository, permittedUsers, url,
                     account, password);
            }
            return success;
         }
         @Override
@@ -537,12 +553,15 @@
               boolean success = get();
               if (success) {
                  refreshRepositoriesTable();
                  if (permittedUsers.size() > 0) {
                     refreshUsersTable();
                  }
               } else {
                  String msg = MessageFormat.format(
                        "Failed to execute request \"{0}\" for repository \"{1}\".",
                        request.name(), newRepository.name);
                  JOptionPane.showMessageDialog(GitblitPanel.this, msg, "Error!",
                        JOptionPane.ERROR_MESSAGE);
                  JOptionPane.showMessageDialog(GitblitPanel.this, msg,
                        Translation.get("gb.error"), JOptionPane.ERROR_MESSAGE);
               }
            } catch (ForbiddenException e) {
               explainForbidden(request);
@@ -563,17 +582,22 @@
    * @param repository
    */
   protected void editRepository(final RepositoryModel repository) {
      EditRepositoryDialog dialog = new EditRepositoryDialog(repository, allUsers);
      EditRepositoryDialog dialog = new EditRepositoryDialog(repository);
      List<String> members = new ArrayList<String>();
      List<String> usernames = new ArrayList<String>();
      for (UserModel user : this.allUsers) {
         usernames.add(user.username);
         if (user.repositories.contains(repository.name)) {
            members.add(user.username);
         }
      }
      Collections.sort(usernames);
      dialog.setUsers(usernames, null);
      dialog.setUsers(repository.owner, usernames, members);
      dialog.setFederationSets(settings.getStrings(Keys.federation.sets),
            repository.federationSets);
      dialog.setVisible(true);
      final RepositoryModel revisedRepository = dialog.getRepository();
      final List<String> permittedUsers = dialog.getPermittedUsers();
      if (revisedRepository == null) {
         return;
      }
@@ -583,8 +607,13 @@
         @Override
         protected Boolean doInBackground() throws IOException {
            return RpcUtils.updateRepository(repository.name, revisedRepository, url, account,
            boolean success = true;
            success &= RpcUtils.updateRepository(repository.name, revisedRepository, url,
                  account, password);
            // always set the repository members
            success &= RpcUtils.setRepositoryMembers(repository, permittedUsers, url, account,
                  password);
            return success;
         }
         @Override
@@ -593,12 +622,13 @@
               boolean success = get();
               if (success) {
                  refreshRepositoriesTable();
                  refreshUsersTable();
               } else {
                  String msg = MessageFormat.format(
                        "Failed to execute request \"{0}\" for repository \"{1}\".",
                        request.name(), repository.name);
                  JOptionPane.showMessageDialog(GitblitPanel.this, msg, "Error!",
                        JOptionPane.ERROR_MESSAGE);
                  JOptionPane.showMessageDialog(GitblitPanel.this, msg,
                        Translation.get("gb.error"), JOptionPane.ERROR_MESSAGE);
               }
            } catch (ForbiddenException e) {
               explainForbidden(request);
@@ -642,8 +672,8 @@
                     refreshRepositoriesTable();
                  } else {
                     String msg = "Failed to delete specified repositories!";
                     JOptionPane.showMessageDialog(GitblitPanel.this, msg, "Error!",
                           JOptionPane.ERROR_MESSAGE);
                     JOptionPane.showMessageDialog(GitblitPanel.this, msg,
                           Translation.get("gb.error"), JOptionPane.ERROR_MESSAGE);
                  }
               } catch (ForbiddenException e) {
                  explainForbidden(request);
@@ -665,6 +695,7 @@
    */
   protected void createUser() {
      EditUserDialog dialog = new EditUserDialog(settings);
      dialog.setUsers(allUsers);
      dialog.setRepositories(allRepositories, null);
      dialog.setVisible(true);
      final UserModel newUser = dialog.getUser();
@@ -690,8 +721,8 @@
                  String msg = MessageFormat.format(
                        "Failed to execute request \"{0}\" for user \"{1}\".",
                        request.name(), newUser.username);
                  JOptionPane.showMessageDialog(GitblitPanel.this, msg, "Error!",
                        JOptionPane.ERROR_MESSAGE);
                  JOptionPane.showMessageDialog(GitblitPanel.this, msg,
                        Translation.get("gb.error"), JOptionPane.ERROR_MESSAGE);
               }
            } catch (ForbiddenException e) {
               explainForbidden(request);
@@ -738,8 +769,8 @@
                  String msg = MessageFormat.format(
                        "Failed to execute request \"{0}\" for user \"{1}\".",
                        request.name(), user.username);
                  JOptionPane.showMessageDialog(GitblitPanel.this, msg, "Error!",
                        JOptionPane.ERROR_MESSAGE);
                  JOptionPane.showMessageDialog(GitblitPanel.this, msg,
                        Translation.get("gb.error"), JOptionPane.ERROR_MESSAGE);
               }
            } catch (ForbiddenException e) {
               explainForbidden(request);
@@ -783,8 +814,8 @@
                     refreshUsersTable();
                  } else {
                     String msg = "Failed to delete specified users!";
                     JOptionPane.showMessageDialog(GitblitPanel.this, msg, "Error!",
                           JOptionPane.ERROR_MESSAGE);
                     JOptionPane.showMessageDialog(GitblitPanel.this, msg,
                           Translation.get("gb.error"), JOptionPane.ERROR_MESSAGE);
                  }
               } catch (ForbiddenException e) {
                  explainForbidden(request);