import java.awt.Insets;\r
import java.awt.event.ActionEvent;\r
import java.awt.event.ActionListener;\r
+import java.awt.event.KeyAdapter;\r
+import java.awt.event.KeyEvent;\r
import java.io.IOException;\r
import java.net.URI;\r
import java.text.MessageFormat;\r
\r
private UsersModel usersModel;\r
\r
- private JPanel usersPanel;\r
-\r
private JButton createRepository;\r
\r
private JButton delRepository;\r
filterRepositories(repositoryFilter.getText());\r
}\r
});\r
+ repositoryFilter.addKeyListener(new KeyAdapter() {\r
+ public void keyReleased(KeyEvent e) {\r
+ filterRepositories(repositoryFilter.getText());\r
+ }\r
+ });\r
\r
- JPanel filterPanel = new JPanel(new BorderLayout(margin, margin));\r
- filterPanel.add(new JLabel(Translation.get("gb.filter")), BorderLayout.WEST);\r
- filterPanel.add(repositoryFilter, BorderLayout.CENTER);\r
+ JPanel repositoryFilterPanel = new JPanel(new BorderLayout(margin, margin));\r
+ repositoryFilterPanel.add(new JLabel(Translation.get("gb.filter")), BorderLayout.WEST);\r
+ repositoryFilterPanel.add(repositoryFilter, BorderLayout.CENTER);\r
\r
- JPanel tablePanel = new JPanel(new BorderLayout(margin, margin));\r
- tablePanel.add(filterPanel, BorderLayout.NORTH);\r
- tablePanel.add(new JScrollPane(repositoriesTable), BorderLayout.CENTER);\r
+ JPanel repositoryTablePanel = new JPanel(new BorderLayout(margin, margin));\r
+ repositoryTablePanel.add(repositoryFilterPanel, BorderLayout.NORTH);\r
+ repositoryTablePanel.add(new JScrollPane(repositoriesTable), BorderLayout.CENTER);\r
\r
JPanel repositoryControls = new JPanel();\r
repositoryControls.add(refreshRepositories);\r
JPanel repositoriesPanel = new JPanel(new BorderLayout(margin, margin));\r
repositoriesPanel.add(newHeaderLabel(Translation.get("gb.repositories")),\r
BorderLayout.NORTH);\r
- repositoriesPanel.add(tablePanel, BorderLayout.CENTER);\r
+ repositoriesPanel.add(repositoryTablePanel, BorderLayout.CENTER);\r
repositoriesPanel.add(repositoryControls, BorderLayout.SOUTH);\r
\r
JButton refreshUsers = new JButton(Translation.get("gb.refresh"));\r
}\r
});\r
\r
+ final JTextField userFilter = new JTextField();\r
+ userFilter.addActionListener(new ActionListener() {\r
+ public void actionPerformed(ActionEvent e) {\r
+ filterUsers(userFilter.getText());\r
+ }\r
+ });\r
+ userFilter.addKeyListener(new KeyAdapter() {\r
+ public void keyReleased(KeyEvent e) {\r
+ filterUsers(userFilter.getText());\r
+ }\r
+ });\r
+\r
+ JPanel userFilterPanel = new JPanel(new BorderLayout(margin, margin));\r
+ userFilterPanel.add(new JLabel(Translation.get("gb.filter")), BorderLayout.WEST);\r
+ userFilterPanel.add(userFilter, BorderLayout.CENTER);\r
+\r
+ JPanel userTablePanel = new JPanel(new BorderLayout(margin, margin));\r
+ userTablePanel.add(userFilterPanel, BorderLayout.NORTH);\r
+ userTablePanel.add(new JScrollPane(usersTable), BorderLayout.CENTER);\r
+\r
JPanel userControls = new JPanel();\r
userControls.add(refreshUsers);\r
userControls.add(createUser);\r
userControls.add(editUser);\r
userControls.add(delUser);\r
\r
- usersPanel = new JPanel(new BorderLayout(margin, margin));\r
+ JPanel usersPanel = new JPanel(new BorderLayout(margin, margin));\r
usersPanel.add(newHeaderLabel(Translation.get("gb.users")), BorderLayout.NORTH);\r
- usersPanel.add(new JScrollPane(usersTable), BorderLayout.CENTER);\r
+ usersPanel.add(userTablePanel, BorderLayout.CENTER);\r
usersPanel.add(userControls, BorderLayout.SOUTH);\r
\r
tabs = new JTabbedPane(JTabbedPane.BOTTOM);\r
editRepository.setVisible(false);\r
delRepository.setVisible(false);\r
\r
- // hide users panel\r
- usersPanel.setVisible(false);\r
-\r
while (tabs.getTabCount() > 1) {\r
// remove admin tabs\r
tabs.removeTabAt(1);\r
return false;\r
}\r
};\r
- RepositoriesModel model = (RepositoriesModel) repositoriesTable.getModel();\r
- TableRowSorter<RepositoriesModel> sorter = new TableRowSorter<RepositoriesModel>(model);\r
+ TableRowSorter<RepositoriesModel> sorter = new TableRowSorter<RepositoriesModel>(\r
+ repositoriesModel);\r
sorter.setRowFilter(containsFilter);\r
repositoriesTable.setRowSorter(sorter);\r
}\r
\r
+ private void filterUsers(final String fragment) {\r
+ if (StringUtils.isEmpty(fragment)) {\r
+ usersTable.setRowSorter(defaultUsersSorter);\r
+ return;\r
+ }\r
+ RowFilter<UsersModel, Object> containsFilter = new RowFilter<UsersModel, Object>() {\r
+ public boolean include(Entry<? extends UsersModel, ? extends Object> entry) {\r
+ for (int i = entry.getValueCount() - 1; i >= 0; i--) {\r
+ if (entry.getStringValue(i).toLowerCase().contains(fragment.toLowerCase())) {\r
+ return true;\r
+ }\r
+ }\r
+ return false;\r
+ }\r
+ };\r
+ TableRowSorter<UsersModel> sorter = new TableRowSorter<UsersModel>(usersModel);\r
+ sorter.setRowFilter(containsFilter);\r
+ usersTable.setRowSorter(sorter);\r
+ }\r
+\r
private List<RepositoryModel> getSelectedRepositories() {\r
List<RepositoryModel> repositories = new ArrayList<RepositoryModel>();\r
for (int viewRow : repositoriesTable.getSelectedRows()) {\r