From fe326255202dcfac8b0991ca9d28e3cf4bcc4fe6 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Sun, 23 Oct 2011 12:28:48 -0400 Subject: [PATCH] Per-repository setting to skip summary metrics --- src/com/gitblit/client/GitblitPanel.java | 115 +++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 71 insertions(+), 44 deletions(-) diff --git a/src/com/gitblit/client/GitblitPanel.java b/src/com/gitblit/client/GitblitPanel.java index 5e7cfe1..31de44e 100644 --- a/src/com/gitblit/client/GitblitPanel.java +++ b/src/com/gitblit/client/GitblitPanel.java @@ -52,6 +52,7 @@ import com.gitblit.Constants.RpcRequest; import com.gitblit.client.ClosableTabComponent.CloseTabListener; import com.gitblit.models.RepositoryModel; +import com.gitblit.models.SettingModel; import com.gitblit.models.UserModel; import com.gitblit.utils.StringUtils; @@ -70,21 +71,21 @@ private final Insets insets = new Insets(margin, margin, margin, margin); - private GitblitModel gitblit; + private GitblitClient gitblit; private JTabbedPane tabs; private JTable repositoriesTable; - private RepositoriesModel repositoriesModel; + private RepositoriesTableModel repositoriesModel; private JTable usersTable; - private UsersModel usersModel; + private UsersTableModel usersModel; private JTable settingsTable; - private SettingsModel settingsModel; + private SettingsTableModel settingsModel; private JButton createRepository; @@ -98,11 +99,11 @@ private DefaultTableCellRenderer sizeRenderer; - private TableRowSorter<RepositoriesModel> defaultRepositoriesSorter; + private TableRowSorter<RepositoriesTableModel> defaultRepositoriesSorter; - private TableRowSorter<UsersModel> defaultUsersSorter; + private TableRowSorter<UsersTableModel> defaultUsersSorter; - private TableRowSorter<SettingsModel> defaultSettingsSorter; + private TableRowSorter<SettingsTableModel> defaultSettingsSorter; private JButton editRepository; @@ -111,12 +112,11 @@ } public GitblitPanel(String url, String account, char[] password) { - this.gitblit = new GitblitModel(url, account, password); + this.gitblit = new GitblitClient(url, account, password); tabs = new JTabbedPane(JTabbedPane.BOTTOM); tabs.addTab(Translation.get("gb.repositories"), createRepositoriesPanel()); tabs.addTab(Translation.get("gb.users"), createUsersPanel()); - tabs.addTab(Translation.get("gb.federation"), new JPanel()); tabs.addTab(Translation.get("gb.settings"), createSettingsPanel()); setLayout(new BorderLayout()); @@ -180,17 +180,18 @@ ownerRenderer.setForeground(Color.gray); ownerRenderer.setHorizontalAlignment(SwingConstants.CENTER); - repositoriesModel = new RepositoriesModel(); - defaultRepositoriesSorter = new TableRowSorter<RepositoriesModel>(repositoriesModel); + repositoriesModel = new RepositoriesTableModel(); + defaultRepositoriesSorter = new TableRowSorter<RepositoriesTableModel>(repositoriesModel); repositoriesTable = Utils.newTable(repositoriesModel); repositoriesTable.setRowHeight(nameRenderer.getFont().getSize() + 8); repositoriesTable.setRowSorter(defaultRepositoriesSorter); - repositoriesTable.getRowSorter().toggleSortOrder(RepositoriesModel.Columns.Name.ordinal()); + repositoriesTable.getRowSorter().toggleSortOrder( + RepositoriesTableModel.Columns.Name.ordinal()); - setRepositoryRenderer(RepositoriesModel.Columns.Name, nameRenderer, -1); - setRepositoryRenderer(RepositoriesModel.Columns.Indicators, typeRenderer, 100); - setRepositoryRenderer(RepositoriesModel.Columns.Owner, ownerRenderer, -1); - setRepositoryRenderer(RepositoriesModel.Columns.Size, sizeRenderer, 60); + setRepositoryRenderer(RepositoriesTableModel.Columns.Name, nameRenderer, -1); + setRepositoryRenderer(RepositoriesTableModel.Columns.Indicators, typeRenderer, 100); + setRepositoryRenderer(RepositoriesTableModel.Columns.Owner, ownerRenderer, -1); + setRepositoryRenderer(RepositoriesTableModel.Columns.Size, sizeRenderer, 60); repositoriesTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() { @Override @@ -205,19 +206,19 @@ if (selected) { int viewRow = repositoriesTable.getSelectedRow(); int modelRow = repositoriesTable.convertRowIndexToModel(viewRow); - RepositoryModel model = ((RepositoriesModel) repositoriesTable.getModel()).list + RepositoryModel model = ((RepositoriesTableModel) repositoriesTable.getModel()).list .get(modelRow); editRepository.setEnabled(singleSelection - && (gitblit.allowAdmin() || gitblit.isOwner(model))); + && (gitblit.allowManagement() || gitblit.isOwner(model))); } else { editRepository.setEnabled(false); } } }); - + repositoriesTable.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { - if (e.getClickCount() == 2) { + if (e.getClickCount() == 2 && gitblit.allowManagement()) { editRepository(getSelectedRepositories().get(0)); } } @@ -266,8 +267,8 @@ return repositoriesPanel; } - private void setRepositoryRenderer(RepositoriesModel.Columns col, TableCellRenderer renderer, - int maxWidth) { + private void setRepositoryRenderer(RepositoriesTableModel.Columns col, + TableCellRenderer renderer, int maxWidth) { String name = repositoriesTable.getColumnName(col.ordinal()); repositoriesTable.getColumn(name).setCellRenderer(renderer); if (maxWidth > 0) { @@ -307,14 +308,14 @@ } }); - usersModel = new UsersModel(); - defaultUsersSorter = new TableRowSorter<UsersModel>(usersModel); + usersModel = new UsersTableModel(); + defaultUsersSorter = new TableRowSorter<UsersTableModel>(usersModel); usersTable = Utils.newTable(usersModel); - String name = usersTable.getColumnName(UsersModel.Columns.Name.ordinal()); + String name = usersTable.getColumnName(UsersTableModel.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.getRowSorter().toggleSortOrder(UsersTableModel.Columns.Name.ordinal()); usersTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() { @Override @@ -328,7 +329,7 @@ delUser.setEnabled(selected); } }); - + usersTable.addMouseListener(new MouseAdapter() { public void mouseClicked(MouseEvent e) { if (e.getClickCount() == 2) { @@ -380,14 +381,16 @@ } private JPanel createSettingsPanel() { - settingsModel = new SettingsModel(); - defaultSettingsSorter = new TableRowSorter<SettingsModel>(settingsModel); + final SettingPanel settingPanel = new SettingPanel(); + settingsModel = new SettingsTableModel(); + defaultSettingsSorter = new TableRowSorter<SettingsTableModel>(settingsModel); settingsTable = Utils.newTable(settingsModel); - String name = settingsTable.getColumnName(UsersModel.Columns.Name.ordinal()); + settingsTable.setDefaultRenderer(SettingModel.class, new SettingCellRenderer()); + String name = settingsTable.getColumnName(UsersTableModel.Columns.Name.ordinal()); settingsTable.setRowHeight(nameRenderer.getFont().getSize() + 8); settingsTable.getColumn(name).setCellRenderer(nameRenderer); settingsTable.setRowSorter(defaultSettingsSorter); - settingsTable.getRowSorter().toggleSortOrder(SettingsModel.Columns.Name.ordinal()); + settingsTable.getRowSorter().toggleSortOrder(SettingsTableModel.Columns.Name.ordinal()); settingsTable.getSelectionModel().addListSelectionListener(new ListSelectionListener() { @Override @@ -398,6 +401,14 @@ boolean selected = settingsTable.getSelectedRow() > -1; boolean singleSelection = settingsTable.getSelectedRows().length == 1; // TODO enable/disable setting buttons + if (singleSelection) { + int viewRow = settingsTable.getSelectedRow(); + int modelRow = settingsTable.convertRowIndexToModel(viewRow); + SettingModel setting = settingsModel.get(modelRow); + settingPanel.setSetting(setting); + } else { + settingPanel.clear(); + } } }); @@ -420,6 +431,7 @@ JPanel settingsTablePanel = new JPanel(new BorderLayout(margin, margin)); settingsTablePanel.add(settingFilterPanel, BorderLayout.NORTH); settingsTablePanel.add(new JScrollPane(settingsTable), BorderLayout.CENTER); + settingsTablePanel.add(settingPanel, BorderLayout.SOUTH); JPanel settingsControls = new JPanel(new FlowLayout(FlowLayout.CENTER, 5, 0)); // TODO update setting? @@ -446,9 +458,8 @@ updateRepositoriesTable(); Utils.packColumns(repositoriesTable, 2); - if (gitblit.allowAdmin()) { + if (gitblit.allowManagement()) { updateUsersTable(); - updateSettingsTable(); } else { // user does not have administrator privileges // hide admin repository buttons @@ -457,8 +468,21 @@ delRepository.setVisible(false); while (tabs.getTabCount() > 1) { - // remove admin tabs + // remove all management/administration tabs tabs.removeTabAt(1); + } + } + + if (gitblit.allowAdministration()) { + updateSettingsTable(); + } else { + // remove the settings tab + String settingsTitle = Translation.get("gb.settings"); + for (int i= 0; i < tabs.getTabCount(); i++) { + if (tabs.getTitleAt(i).equals(settingsTitle)) { + tabs.removeTabAt(i); + break; + } } } } @@ -485,8 +509,8 @@ repositoriesTable.setRowSorter(defaultRepositoriesSorter); return; } - RowFilter<RepositoriesModel, Object> containsFilter = new RowFilter<RepositoriesModel, Object>() { - public boolean include(Entry<? extends RepositoriesModel, ? extends Object> entry) { + RowFilter<RepositoriesTableModel, Object> containsFilter = new RowFilter<RepositoriesTableModel, Object>() { + public boolean include(Entry<? extends RepositoriesTableModel, ? extends Object> entry) { for (int i = entry.getValueCount() - 1; i >= 0; i--) { if (entry.getStringValue(i).toLowerCase().contains(fragment.toLowerCase())) { return true; @@ -495,7 +519,7 @@ return false; } }; - TableRowSorter<RepositoriesModel> sorter = new TableRowSorter<RepositoriesModel>( + TableRowSorter<RepositoriesTableModel> sorter = new TableRowSorter<RepositoriesTableModel>( repositoriesModel); sorter.setRowFilter(containsFilter); repositoriesTable.setRowSorter(sorter); @@ -506,8 +530,8 @@ usersTable.setRowSorter(defaultUsersSorter); return; } - RowFilter<UsersModel, Object> containsFilter = new RowFilter<UsersModel, Object>() { - public boolean include(Entry<? extends UsersModel, ? extends Object> entry) { + RowFilter<UsersTableModel, Object> containsFilter = new RowFilter<UsersTableModel, Object>() { + public boolean include(Entry<? extends UsersTableModel, ? extends Object> entry) { for (int i = entry.getValueCount() - 1; i >= 0; i--) { if (entry.getStringValue(i).toLowerCase().contains(fragment.toLowerCase())) { return true; @@ -516,7 +540,7 @@ return false; } }; - TableRowSorter<UsersModel> sorter = new TableRowSorter<UsersModel>(usersModel); + TableRowSorter<UsersTableModel> sorter = new TableRowSorter<UsersTableModel>(usersModel); sorter.setRowFilter(containsFilter); usersTable.setRowSorter(sorter); } @@ -526,8 +550,8 @@ settingsTable.setRowSorter(defaultSettingsSorter); return; } - RowFilter<SettingsModel, Object> containsFilter = new RowFilter<SettingsModel, Object>() { - public boolean include(Entry<? extends SettingsModel, ? extends Object> entry) { + RowFilter<SettingsTableModel, Object> containsFilter = new RowFilter<SettingsTableModel, Object>() { + public boolean include(Entry<? extends SettingsTableModel, ? extends Object> entry) { for (int i = entry.getValueCount() - 1; i >= 0; i--) { if (entry.getStringValue(i).toLowerCase().contains(fragment.toLowerCase())) { return true; @@ -536,7 +560,8 @@ return false; } }; - TableRowSorter<SettingsModel> sorter = new TableRowSorter<SettingsModel>(settingsModel); + TableRowSorter<SettingsTableModel> sorter = new TableRowSorter<SettingsTableModel>( + settingsModel); sorter.setRowFilter(containsFilter); settingsTable.setRowSorter(sorter); } @@ -571,7 +596,7 @@ gitblit = null; } - protected void refreshRepositories() { + protected void refreshRepositories() { GitblitWorker worker = new GitblitWorker(GitblitPanel.this, RpcRequest.LIST_REPOSITORIES) { @Override protected Boolean doRequest() throws IOException { @@ -645,6 +670,7 @@ List<String> usernames = gitblit.getUsernames(); List<String> members = gitblit.getPermittedUsernames(repository); dialog.setUsers(repository.owner, usernames, members); + dialog.setRepositories(gitblit.getRepositories()); dialog.setFederationSets(gitblit.getFederationSets(), repository.federationSets); dialog.setVisible(true); final RepositoryModel revisedRepository = dialog.getRepository(); @@ -787,6 +813,7 @@ protected void editUser(final UserModel user) { EditUserDialog dialog = new EditUserDialog(user, gitblit.getSettings()); dialog.setLocationRelativeTo(GitblitPanel.this); + dialog.setUsers(gitblit.getUsers()); dialog.setRepositories(gitblit.getRepositories(), new ArrayList<String>(user.repositories)); dialog.setVisible(true); final UserModel revisedUser = dialog.getUser(); -- Gitblit v1.9.1