| | |
| | | import java.awt.event.MouseEvent;
|
| | | import java.io.IOException;
|
| | | import java.util.ArrayList;
|
| | | import java.util.Arrays;
|
| | | import java.util.List;
|
| | | import java.util.Map;
|
| | |
|
| | | import javax.swing.JButton;
|
| | | import javax.swing.JLabel;
|
| | |
| | | import javax.swing.table.TableCellRenderer;
|
| | | import javax.swing.table.TableRowSorter;
|
| | |
|
| | | import com.gitblit.Constants;
|
| | | import com.gitblit.Constants.RpcRequest;
|
| | | import com.gitblit.Keys;
|
| | | import com.gitblit.models.FeedModel;
|
| | | import com.gitblit.models.RepositoryModel;
|
| | | import com.gitblit.utils.StringUtils;
|
| | |
| | |
|
| | | private JTextField filterTextfield;
|
| | |
|
| | | private JButton clearCache;
|
| | |
|
| | | public RepositoriesPanel(GitblitClient gitblit) {
|
| | | super();
|
| | | this.gitblit = gitblit;
|
| | |
| | | refreshRepositories.addActionListener(new ActionListener() {
|
| | | public void actionPerformed(ActionEvent e) {
|
| | | refreshRepositories();
|
| | | }
|
| | | });
|
| | | |
| | | clearCache = new JButton(Translation.get("gb.clearCache"));
|
| | | clearCache.addActionListener(new ActionListener() {
|
| | | public void actionPerformed(ActionEvent e) {
|
| | | clearCache();
|
| | | }
|
| | | });
|
| | |
|
| | |
| | | }
|
| | | });
|
| | |
|
| | | final JButton logRepository = new JButton(Translation.get("gb.log") + "...");
|
| | | logRepository.setEnabled(false);
|
| | | logRepository.addActionListener(new ActionListener() {
|
| | | public void actionPerformed(ActionEvent e) {
|
| | | RepositoryModel model = getSelectedRepositories().get(0);
|
| | | showSearchDialog(false, model);
|
| | | }
|
| | | });
|
| | |
|
| | | final JButton searchRepository = new JButton(Translation.get("gb.search") + "...");
|
| | | searchRepository.setEnabled(false);
|
| | | searchRepository.addActionListener(new ActionListener() {
|
| | | public void actionPerformed(ActionEvent e) {
|
| | | RepositoryModel model = getSelectedRepositories().get(0);
|
| | | searchRepository(model);
|
| | | showSearchDialog(true, model);
|
| | | }
|
| | | });
|
| | |
|
| | |
| | | return;
|
| | | }
|
| | | boolean singleSelection = table.getSelectedRowCount() == 1;
|
| | | boolean selected = table.getSelectedRow() > -1; |
| | | boolean selected = table.getSelectedRow() > -1;
|
| | | if (singleSelection) {
|
| | | RepositoryModel repository = getSelectedRepositories().get(0);
|
| | | browseRepository.setEnabled(repository.hasCommits);
|
| | | logRepository.setEnabled(repository.hasCommits);
|
| | | searchRepository.setEnabled(repository.hasCommits);
|
| | | subscribeRepository.setEnabled(repository.hasCommits);
|
| | | } else {
|
| | | browseRepository.setEnabled(false);
|
| | | logRepository.setEnabled(false);
|
| | | searchRepository.setEnabled(false);
|
| | | subscribeRepository.setEnabled(false);
|
| | | }
|
| | | delRepository.setEnabled(selected); |
| | | delRepository.setEnabled(selected);
|
| | | if (selected) {
|
| | | int viewRow = table.getSelectedRow();
|
| | | int modelRow = table.convertRowIndexToModel(viewRow);
|
| | |
| | | repositoryTablePanel.add(new JScrollPane(table), BorderLayout.CENTER);
|
| | |
|
| | | JPanel repositoryControls = new JPanel(new FlowLayout(FlowLayout.CENTER, Utils.MARGIN, 0));
|
| | | repositoryControls.add(clearCache);
|
| | | repositoryControls.add(refreshRepositories);
|
| | | repositoryControls.add(browseRepository);
|
| | | repositoryControls.add(createRepository);
|
| | | repositoryControls.add(editRepository);
|
| | | repositoryControls.add(delRepository);
|
| | | repositoryControls.add(subscribeRepository);
|
| | | repositoryControls.add(logRepository);
|
| | | repositoryControls.add(searchRepository);
|
| | |
|
| | | setLayout(new BorderLayout(Utils.MARGIN, Utils.MARGIN));
|
| | | header = new HeaderPanel(Translation.get("gb.repositories"), "gitweb-favicon.png");
|
| | | header = new HeaderPanel(Translation.get("gb.repositories"), "git-orange-16x16.png");
|
| | | add(header, BorderLayout.NORTH);
|
| | | add(repositoryTablePanel, BorderLayout.CENTER);
|
| | | add(repositoryControls, BorderLayout.SOUTH);
|
| | |
| | |
|
| | | protected abstract void updateUsersTable();
|
| | |
|
| | | protected abstract void updateTeamsTable();
|
| | |
|
| | | protected void disableManagement() {
|
| | | clearCache.setVisible(false);
|
| | | createRepository.setVisible(false);
|
| | | editRepository.setVisible(false);
|
| | | delRepository.setVisible(false);
|
| | |
| | | };
|
| | | worker.execute();
|
| | | }
|
| | | |
| | | protected void clearCache() {
|
| | | GitblitWorker worker = new GitblitWorker(RepositoriesPanel.this,
|
| | | RpcRequest.CLEAR_REPOSITORY_CACHE) {
|
| | | @Override
|
| | | protected Boolean doRequest() throws IOException {
|
| | | if (gitblit.clearRepositoryCache()) {
|
| | | gitblit.refreshRepositories();
|
| | | return true;
|
| | | }
|
| | | return false;
|
| | | }
|
| | |
|
| | | @Override
|
| | | protected void onSuccess() {
|
| | | updateTable(false);
|
| | | }
|
| | | };
|
| | | worker.execute();
|
| | | }
|
| | |
|
| | | /**
|
| | | * Displays the create repository dialog and fires a SwingWorker to update
|
| | |
| | | *
|
| | | */
|
| | | protected void createRepository() {
|
| | | EditRepositoryDialog dialog = new EditRepositoryDialog();
|
| | | EditRepositoryDialog dialog = new EditRepositoryDialog(gitblit.getProtocolVersion());
|
| | | dialog.setLocationRelativeTo(RepositoriesPanel.this);
|
| | | dialog.setAccessRestriction(gitblit.getDefaultAccessRestriction());
|
| | | dialog.setAuthorizationControl(gitblit.getDefaultAuthorizationControl());
|
| | | dialog.setUsers(null, gitblit.getUsernames(), null);
|
| | | dialog.setTeams(gitblit.getTeamnames(), null);
|
| | | dialog.setRepositories(gitblit.getRepositories());
|
| | | dialog.setFederationSets(gitblit.getFederationSets(), null);
|
| | | dialog.setIndexedBranches(new ArrayList<String>(Arrays.asList(Constants.DEFAULT_BRANCH)), null);
|
| | | dialog.setPreReceiveScripts(gitblit.getPreReceiveScriptsUnused(null),
|
| | | gitblit.getPreReceiveScriptsInherited(null), null);
|
| | | dialog.setPostReceiveScripts(gitblit.getPostReceiveScriptsUnused(null),
|
| | | gitblit.getPostReceiveScriptsInherited(null), null);
|
| | | dialog.setVisible(true);
|
| | | final RepositoryModel newRepository = dialog.getRepository();
|
| | | final List<String> permittedUsers = dialog.getPermittedUsers();
|
| | | final List<String> permittedTeams = dialog.getPermittedTeams();
|
| | | if (newRepository == null) {
|
| | | return;
|
| | | }
|
| | |
| | |
|
| | | @Override
|
| | | protected Boolean doRequest() throws IOException {
|
| | | boolean success = gitblit.createRepository(newRepository, permittedUsers);
|
| | | boolean success = gitblit.createRepository(newRepository, permittedUsers,
|
| | | permittedTeams);
|
| | | if (success) {
|
| | | gitblit.refreshRepositories();
|
| | | if (permittedUsers.size() > 0) {
|
| | | gitblit.refreshUsers();
|
| | | }
|
| | | if (permittedTeams.size() > 0) {
|
| | | gitblit.refreshTeams();
|
| | | }
|
| | | }
|
| | | return success;
|
| | |
| | | protected void onSuccess() {
|
| | | updateTable(false);
|
| | | updateUsersTable();
|
| | | updateTeamsTable();
|
| | | }
|
| | |
|
| | | @Override
|
| | |
| | | * @param repository
|
| | | */
|
| | | protected void editRepository(final RepositoryModel repository) {
|
| | | EditRepositoryDialog dialog = new EditRepositoryDialog(repository);
|
| | | EditRepositoryDialog dialog = new EditRepositoryDialog(gitblit.getProtocolVersion(),
|
| | | repository);
|
| | | dialog.setLocationRelativeTo(RepositoriesPanel.this);
|
| | | List<String> usernames = gitblit.getUsernames();
|
| | | List<String> members = gitblit.getPermittedUsernames(repository);
|
| | | dialog.setUsers(repository.owner, usernames, members);
|
| | | dialog.setTeams(gitblit.getTeamnames(), gitblit.getPermittedTeamnames(repository));
|
| | | dialog.setRepositories(gitblit.getRepositories());
|
| | | dialog.setFederationSets(gitblit.getFederationSets(), repository.federationSets);
|
| | | List<String> allLocalBranches = new ArrayList<String>();
|
| | | allLocalBranches.add(Constants.DEFAULT_BRANCH);
|
| | | allLocalBranches.addAll(repository.getLocalBranches());
|
| | | dialog.setIndexedBranches(allLocalBranches, repository.indexedBranches);
|
| | | dialog.setPreReceiveScripts(gitblit.getPreReceiveScriptsUnused(repository),
|
| | | gitblit.getPreReceiveScriptsInherited(repository), repository.preReceiveScripts);
|
| | | dialog.setPostReceiveScripts(gitblit.getPostReceiveScriptsUnused(repository),
|
| | | gitblit.getPostReceiveScriptsInherited(repository), repository.postReceiveScripts);
|
| | | if (gitblit.getSettings().hasKey(Keys.groovy.customFields)) {
|
| | | Map<String, String> map = gitblit.getSettings().get(Keys.groovy.customFields).getMap();
|
| | | dialog.setCustomFields(repository, map);
|
| | | }
|
| | | dialog.setVisible(true);
|
| | | final RepositoryModel revisedRepository = dialog.getRepository();
|
| | | final List<String> permittedUsers = dialog.getPermittedUsers();
|
| | | final List<String> permittedTeams = dialog.getPermittedTeams();
|
| | | if (revisedRepository == null) {
|
| | | return;
|
| | | }
|
| | |
| | | @Override
|
| | | protected Boolean doRequest() throws IOException {
|
| | | boolean success = gitblit.updateRepository(repository.name, revisedRepository,
|
| | | permittedUsers);
|
| | | permittedUsers, permittedTeams);
|
| | | if (success) {
|
| | | gitblit.refreshRepositories();
|
| | | gitblit.refreshUsers();
|
| | | gitblit.refreshTeams();
|
| | | }
|
| | | return success;
|
| | | }
|
| | |
| | | protected void onSuccess() {
|
| | | updateTable(false);
|
| | | updateUsersTable();
|
| | | updateTeamsTable();
|
| | | }
|
| | |
|
| | | @Override
|
| | |
| | | if (success) {
|
| | | gitblit.refreshRepositories();
|
| | | gitblit.refreshUsers();
|
| | | gitblit.refreshTeams();
|
| | | }
|
| | | return success;
|
| | | }
|
| | |
| | | protected void onSuccess() {
|
| | | updateTable(false);
|
| | | updateUsersTable();
|
| | | updateTeamsTable();
|
| | | }
|
| | |
|
| | | @Override
|
| | |
| | | }
|
| | | }
|
| | |
|
| | | protected void searchRepository(final RepositoryModel repository) {
|
| | | SearchDialog searchDialog = new SearchDialog(gitblit);
|
| | | private void showSearchDialog(boolean isSearch, final RepositoryModel repository) {
|
| | | final SearchDialog dialog = new SearchDialog(gitblit, isSearch);
|
| | | if (repository != null) {
|
| | | searchDialog.selectRepository(repository);
|
| | | dialog.selectRepository(repository);
|
| | | }
|
| | | searchDialog.setLocationRelativeTo(this);
|
| | | searchDialog.setVisible(true);
|
| | | dialog.setLocationRelativeTo(this);
|
| | | dialog.setVisible(true);
|
| | | }
|
| | | }
|