James Moger
2011-10-17 44f2dad1f1d3a9ee2b22f213e806d5ef415769b0
src/com/gitblit/client/GitblitPanel.java
@@ -19,9 +19,12 @@
import java.awt.Color;
import java.awt.Component;
import java.awt.Desktop;
import java.awt.FlowLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyAdapter;
import java.awt.event.KeyEvent;
import java.io.IOException;
import java.net.URI;
import java.text.MessageFormat;
@@ -76,8 +79,6 @@
   private JTable usersTable;
   private UsersModel usersModel;
   private JPanel usersPanel;
   private JButton createRepository;
@@ -201,26 +202,38 @@
            filterRepositories(repositoryFilter.getText());
         }
      });
      repositoryFilter.addKeyListener(new KeyAdapter() {
         public void keyReleased(KeyEvent e) {
            filterRepositories(repositoryFilter.getText());
         }
      });
      JPanel filterPanel = new JPanel(new BorderLayout(margin, margin));
      filterPanel.add(new JLabel(Translation.get("gb.filter")), BorderLayout.WEST);
      filterPanel.add(repositoryFilter, BorderLayout.CENTER);
      JPanel repositoryFilterPanel = new JPanel(new BorderLayout(margin, margin));
      repositoryFilterPanel.add(new JLabel(Translation.get("gb.filter")), BorderLayout.WEST);
      repositoryFilterPanel.add(repositoryFilter, BorderLayout.CENTER);
      JPanel tablePanel = new JPanel(new BorderLayout(margin, margin));
      tablePanel.add(filterPanel, BorderLayout.NORTH);
      tablePanel.add(new JScrollPane(repositoriesTable), BorderLayout.CENTER);
      JPanel repositoryTablePanel = new JPanel(new BorderLayout(margin, margin));
      repositoryTablePanel.add(repositoryFilterPanel, BorderLayout.NORTH);
      repositoryTablePanel.add(new JScrollPane(repositoriesTable), BorderLayout.CENTER);
      JPanel repositoryControls = new JPanel();
      JPanel repositoryControls = new JPanel(new FlowLayout(FlowLayout.CENTER, 5, 0));
      repositoryControls.add(refreshRepositories);
      repositoryControls.add(browseRepository);
      repositoryControls.add(createRepository);
      repositoryControls.add(editRepository);
      repositoryControls.add(delRepository);
      JPanel repositoriesPanel = new JPanel(new BorderLayout(margin, margin));
      repositoriesPanel.add(newHeaderLabel(Translation.get("gb.repositories")),
      JPanel repositoriesPanel = new JPanel(new BorderLayout(margin, margin)) {
         private static final long serialVersionUID = 1L;
         public Insets getInsets() {
            return insets;
         }
      };
      repositoriesPanel.add(new HeaderPanel(Translation.get("gb.repositories")),
            BorderLayout.NORTH);
      repositoriesPanel.add(tablePanel, BorderLayout.CENTER);
      repositoriesPanel.add(repositoryTablePanel, BorderLayout.CENTER);
      repositoriesPanel.add(repositoryControls, BorderLayout.SOUTH);
      JButton refreshUsers = new JButton(Translation.get("gb.refresh"));
@@ -275,15 +288,42 @@
         }
      });
      JPanel userControls = new JPanel();
      final JTextField userFilter = new JTextField();
      userFilter.addActionListener(new ActionListener() {
         public void actionPerformed(ActionEvent e) {
            filterUsers(userFilter.getText());
         }
      });
      userFilter.addKeyListener(new KeyAdapter() {
         public void keyReleased(KeyEvent e) {
            filterUsers(userFilter.getText());
         }
      });
      JPanel userFilterPanel = new JPanel(new BorderLayout(margin, margin));
      userFilterPanel.add(new JLabel(Translation.get("gb.filter")), BorderLayout.WEST);
      userFilterPanel.add(userFilter, BorderLayout.CENTER);
      JPanel userTablePanel = new JPanel(new BorderLayout(margin, margin));
      userTablePanel.add(userFilterPanel, BorderLayout.NORTH);
      userTablePanel.add(new JScrollPane(usersTable), BorderLayout.CENTER);
      JPanel userControls = new JPanel(new FlowLayout(FlowLayout.CENTER, 5, 0));
      userControls.add(refreshUsers);
      userControls.add(createUser);
      userControls.add(editUser);
      userControls.add(delUser);
      usersPanel = new JPanel(new BorderLayout(margin, margin));
      usersPanel.add(newHeaderLabel(Translation.get("gb.users")), BorderLayout.NORTH);
      usersPanel.add(new JScrollPane(usersTable), BorderLayout.CENTER);
      JPanel usersPanel = new JPanel(new BorderLayout(margin, margin)) {
         private static final long serialVersionUID = 1L;
         public Insets getInsets() {
            return insets;
         }
      };
      usersPanel.add(new HeaderPanel(Translation.get("gb.users")), BorderLayout.NORTH);
      usersPanel.add(userTablePanel, BorderLayout.CENTER);
      usersPanel.add(userControls, BorderLayout.SOUTH);
      tabs = new JTabbedPane(JTabbedPane.BOTTOM);
@@ -293,15 +333,6 @@
      setLayout(new BorderLayout());
      add(tabs, BorderLayout.CENTER);
   }
   private JLabel newHeaderLabel(String text) {
      JLabel label = new JLabel(text);
      label.setOpaque(true);
      label.setForeground(Color.white);
      label.setBackground(Color.gray);
      label.setFont(label.getFont().deriveFont(14f));
      return label;
   }
   private void setRepositoryRenderer(RepositoriesModel.Columns col, TableCellRenderer renderer) {
@@ -323,9 +354,6 @@
         createRepository.setVisible(false);
         editRepository.setVisible(false);
         delRepository.setVisible(false);
         // hide users panel
         usersPanel.setVisible(false);
         while (tabs.getTabCount() > 1) {
            // remove admin tabs
@@ -361,12 +389,32 @@
            return false;
         }
      };
      RepositoriesModel model = (RepositoriesModel) repositoriesTable.getModel();
      TableRowSorter<RepositoriesModel> sorter = new TableRowSorter<RepositoriesModel>(model);
      TableRowSorter<RepositoriesModel> sorter = new TableRowSorter<RepositoriesModel>(
            repositoriesModel);
      sorter.setRowFilter(containsFilter);
      repositoriesTable.setRowSorter(sorter);
   }
   private void filterUsers(final String fragment) {
      if (StringUtils.isEmpty(fragment)) {
         usersTable.setRowSorter(defaultUsersSorter);
         return;
      }
      RowFilter<UsersModel, Object> containsFilter = new RowFilter<UsersModel, Object>() {
         public boolean include(Entry<? extends UsersModel, ? extends Object> entry) {
            for (int i = entry.getValueCount() - 1; i >= 0; i--) {
               if (entry.getStringValue(i).toLowerCase().contains(fragment.toLowerCase())) {
                  return true;
               }
            }
            return false;
         }
      };
      TableRowSorter<UsersModel> sorter = new TableRowSorter<UsersModel>(usersModel);
      sorter.setRowFilter(containsFilter);
      usersTable.setRowSorter(sorter);
   }
   private List<RepositoryModel> getSelectedRepositories() {
      List<RepositoryModel> repositories = new ArrayList<RepositoryModel>();
      for (int viewRow : repositoriesTable.getSelectedRows()) {