From 4b430b4b02e96f0257fb70f1aacab1269b0c2aec Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Sun, 16 Oct 2011 08:43:52 -0400
Subject: [PATCH] Users JList to JTable. Fixed indicator tooltip. Users Tab.
---
src/com/gitblit/client/GitblitPanel.java | 99 +++++++++++++++++++++++--------------------------
1 files changed, 46 insertions(+), 53 deletions(-)
diff --git a/src/com/gitblit/client/GitblitPanel.java b/src/com/gitblit/client/GitblitPanel.java
index 05ba415..9e10d2d 100644
--- a/src/com/gitblit/client/GitblitPanel.java
+++ b/src/com/gitblit/client/GitblitPanel.java
@@ -19,8 +19,6 @@
import java.awt.Color;
import java.awt.Component;
import java.awt.Desktop;
-import java.awt.Dimension;
-import java.awt.GridLayout;
import java.awt.Insets;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -28,12 +26,10 @@
import java.net.URI;
import java.text.MessageFormat;
import java.util.ArrayList;
-import java.util.Date;
import java.util.List;
import javax.swing.JButton;
import javax.swing.JLabel;
-import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
@@ -77,7 +73,9 @@
private RepositoriesModel repositoriesModel;
- private JList usersList;
+ private JTable usersTable;
+
+ private UsersModel usersModel;
private JPanel usersPanel;
@@ -93,7 +91,11 @@
private DefaultTableCellRenderer sizeRenderer;
- private TableRowSorter<RepositoriesModel> defaultSorter;
+ private TableRowSorter<RepositoriesModel> defaultRepositoriesSorter;
+
+ private TableRowSorter<UsersModel> defaultUsersSorter;
+
+ private JButton editRepository;
public GitblitPanel(GitblitRegistration reg) {
this(reg.url, reg.account, reg.password);
@@ -131,7 +133,7 @@
}
});
- final JButton editRepository = new JButton(Translation.get("gb.edit"));
+ editRepository = new JButton(Translation.get("gb.edit"));
editRepository.setEnabled(false);
editRepository.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
@@ -169,23 +171,16 @@
ownerRenderer.setHorizontalAlignment(SwingConstants.CENTER);
repositoriesModel = new RepositoriesModel();
- defaultSorter = new TableRowSorter<RepositoriesModel>(repositoriesModel);
- repositoriesTable = new JTable(repositoriesModel);
- repositoriesTable.setRowSorter(defaultSorter);
+ defaultRepositoriesSorter = new TableRowSorter<RepositoriesModel>(repositoriesModel);
+ repositoriesTable = Utils.newTable(repositoriesModel);
+ repositoriesTable.setRowHeight(nameRenderer.getFont().getSize() + 8);
+ repositoriesTable.setRowSorter(defaultRepositoriesSorter);
repositoriesTable.getRowSorter().toggleSortOrder(RepositoriesModel.Columns.Name.ordinal());
- repositoriesTable.setCellSelectionEnabled(false);
- repositoriesTable.setRowSelectionAllowed(true);
- repositoriesTable.setRowHeight(nameRenderer.getFont().getSize() + 8);
- repositoriesTable.getTableHeader().setReorderingAllowed(false);
- repositoriesTable.setGridColor(new Color(0xd9d9d9));
- repositoriesTable.setBackground(Color.white);
- repositoriesTable.setDefaultRenderer(Date.class,
- new DateCellRenderer(null, Color.orange.darker()));
- setRenderer(RepositoriesModel.Columns.Name, nameRenderer);
- setRenderer(RepositoriesModel.Columns.Indicators, typeRenderer);
- setRenderer(RepositoriesModel.Columns.Owner, ownerRenderer);
- setRenderer(RepositoriesModel.Columns.Size, sizeRenderer);
+ setRepositoryRenderer(RepositoriesModel.Columns.Name, nameRenderer);
+ setRepositoryRenderer(RepositoriesModel.Columns.Indicators, typeRenderer);
+ setRepositoryRenderer(RepositoriesModel.Columns.Owner, ownerRenderer);
+ setRepositoryRenderer(RepositoriesModel.Columns.Size, sizeRenderer);
repositoriesTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
@@ -270,22 +265,29 @@
}
});
- usersList = new JList();
- usersList.addListSelectionListener(new ListSelectionListener() {
+ usersModel = new UsersModel();
+ defaultUsersSorter = new TableRowSorter<UsersModel>(usersModel);
+ usersTable = Utils.newTable(usersModel);
+ String name = usersTable.getColumnName(UsersModel.Columns.Name.ordinal());
+ usersTable.setRowHeight(nameRenderer.getFont().getSize() + 8);
+ usersTable.getColumn(name).setCellRenderer(nameRenderer);
+ usersTable.setRowSorter(defaultUsersSorter);
+ usersTable.getRowSorter().toggleSortOrder(UsersModel.Columns.Name.ordinal());
+ usersTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() {
@Override
public void valueChanged(ListSelectionEvent e) {
if (e.getValueIsAdjusting()) {
return;
}
- boolean selected = usersList.getSelectedIndex() > -1;
- boolean singleSelection = usersList.getSelectedIndices().length == 1;
+ boolean selected = usersTable.getSelectedRow() > -1;
+ boolean singleSelection = usersTable.getSelectedRows().length == 1;
editUser.setEnabled(singleSelection && selected);
delUser.setEnabled(selected);
}
});
- JPanel userControls = new JPanel(new GridLayout(0, 2));
+ JPanel userControls = new JPanel();
userControls.add(refreshUsers);
userControls.add(createUser);
userControls.add(editUser);
@@ -293,18 +295,12 @@
usersPanel = new JPanel(new BorderLayout(margin, margin));
usersPanel.add(newHeaderLabel(Translation.get("gb.users")), BorderLayout.NORTH);
- usersPanel.add(new JScrollPane(usersList), BorderLayout.CENTER);
+ usersPanel.add(new JScrollPane(usersTable), BorderLayout.CENTER);
usersPanel.add(userControls, BorderLayout.SOUTH);
- /*
- * Assemble the main panel
- */
- JPanel mainPanel = new JPanel(new BorderLayout(margin, margin));
- mainPanel.add(repositoriesPanel, BorderLayout.CENTER);
- mainPanel.add(usersPanel, BorderLayout.EAST);
-
tabs = new JTabbedPane(JTabbedPane.BOTTOM);
- tabs.addTab(Translation.get("gb.repositories"), mainPanel);
+ tabs.addTab(Translation.get("gb.repositories"), repositoriesPanel);
+ tabs.addTab(Translation.get("gb.users"), usersPanel);
tabs.addTab(Translation.get("gb.federation"), new JPanel());
setLayout(new BorderLayout());
@@ -320,7 +316,7 @@
return label;
}
- private void setRenderer(RepositoriesModel.Columns col, TableCellRenderer renderer) {
+ private void setRepositoryRenderer(RepositoriesModel.Columns col, TableCellRenderer renderer) {
String name = repositoriesTable.getColumnName(col.ordinal());
repositoriesTable.getColumn(name).setCellRenderer(renderer);
}
@@ -337,13 +333,16 @@
// user does not have administrator privileges
// hide admin repository buttons
createRepository.setVisible(false);
+ editRepository.setVisible(false);
delRepository.setVisible(false);
// hide users panel
usersPanel.setVisible(false);
- // remove federation tab
- tabs.removeTabAt(1);
+ while (tabs.getTabCount() > 1) {
+ // remove admin tabs
+ tabs.removeTabAt(1);
+ }
}
}
@@ -354,12 +353,14 @@
}
private void updateUsersTable() {
- usersList.setListData(gitblit.getUsers().toArray());
+ usersModel.list.clear();
+ usersModel.list.addAll(gitblit.getUsers());
+ usersModel.fireTableDataChanged();
}
private void filterRepositories(final String fragment) {
if (StringUtils.isEmpty(fragment)) {
- repositoriesTable.setRowSorter(defaultSorter);
+ repositoriesTable.setRowSorter(defaultRepositoriesSorter);
return;
}
RowFilter<RepositoriesModel, Object> containsFilter = new RowFilter<RepositoriesModel, Object>() {
@@ -382,8 +383,7 @@
List<RepositoryModel> repositories = new ArrayList<RepositoryModel>();
for (int viewRow : repositoriesTable.getSelectedRows()) {
int modelRow = repositoriesTable.convertRowIndexToModel(viewRow);
- RepositoryModel model = ((RepositoriesModel) repositoriesTable.getModel()).list
- .get(modelRow);
+ RepositoryModel model = repositoriesModel.list.get(modelRow);
repositories.add(model);
}
return repositories;
@@ -391,8 +391,9 @@
private List<UserModel> getSelectedUsers() {
List<UserModel> users = new ArrayList<UserModel>();
- for (int viewRow : usersList.getSelectedIndices()) {
- UserModel model = (UserModel) usersList.getModel().getElementAt(viewRow);
+ for (int viewRow : usersTable.getSelectedRows()) {
+ int modelRow = usersTable.convertRowIndexToModel(viewRow);
+ UserModel model = usersModel.list.get(modelRow);
users.add(model);
}
return users;
@@ -401,14 +402,6 @@
@Override
public Insets getInsets() {
return insets;
- }
-
- @Override
- public Dimension getPreferredSize() {
- if (gitblit.allowAdmin()) {
- return new Dimension(950, 550);
- }
- return new Dimension(775, 450);
}
@Override
--
Gitblit v1.9.1