James Moger
2011-12-19 4bd2037edddbf444ac9817e9d14710be45850a10
RPC support for hook script selection
6 files modified
104 ■■■■ changed files
src/com/gitblit/RpcServlet.java 7 ●●●● patch | view | raw | blame | history
src/com/gitblit/client/EditRepositoryDialog.java 44 ●●●● patch | view | raw | blame | history
src/com/gitblit/client/GitblitClient.java 7 ●●●●● patch | view | raw | blame | history
src/com/gitblit/client/JPalette.java 32 ●●●●● patch | view | raw | blame | history
src/com/gitblit/client/RepositoriesPanel.java 12 ●●●● patch | view | raw | blame | history
src/com/gitblit/models/ServerSettings.java 2 ●●●●● patch | view | raw | blame | history
src/com/gitblit/RpcServlet.java
@@ -276,7 +276,7 @@
            }
        } else if (RpcRequest.LIST_SETTINGS.equals(reqType)) {
            // return the server's settings
            ServerSettings settings = GitBlit.self().getSettingsModel();
            ServerSettings settings = GitBlit.self().getSettingsModel();
            if (allowAdmin) {
                // return all settings
                result = settings;
@@ -294,10 +294,13 @@
                    keys.add(Keys.federation.sets);
                }
                // build the settings
                ServerSettings managementSettings = new ServerSettings();
                ServerSettings managementSettings = new ServerSettings();
                for (String key : keys) {
                    managementSettings.add(settings.get(key));
                }
                if (allowManagement) {
                    settings.pushScripts = settings.pushScripts;
                }
                result = managementSettings;
            }
        } else if (RpcRequest.EDIT_SETTINGS.equals(reqType)) {
src/com/gitblit/client/EditRepositoryDialog.java
@@ -88,7 +88,7 @@
    private JCheckBox skipSummaryMetrics;
    private JCheckBox isFrozen;
    private JTextField mailRecipientsField;
    private JComboBox accessRestriction;
@@ -98,10 +98,14 @@
    private JComboBox ownerField;
    private JPalette<String> usersPalette;
    private JPalette<String> setsPalette;
    private JPalette<String> teamsPalette;
    private JPalette<String> preReceivePalette;
    private JPalette<String> postReceivePalette;
    private Set<String> repositoryNames;
@@ -162,7 +166,7 @@
        mailRecipientsField = new JTextField(anRepository.mailRecipients == null ? ""
                : StringUtils.flattenStrings(anRepository.mailRecipients, " "), 50);
        accessRestriction = new JComboBox(AccessRestrictionType.values());
        accessRestriction.setRenderer(new AccessRestrictionRenderer());
        accessRestriction.setSelectedItem(anRepository.accessRestriction);
@@ -216,6 +220,18 @@
        federationPanel.add(newFieldPanel(Translation.get("gb.federationSets"), setsPalette),
                BorderLayout.CENTER);
        preReceivePalette = new JPalette<String>(true);
        JPanel preReceivePanel = new JPanel(new BorderLayout(5, 5));
        preReceivePanel.add(
                newFieldPanel(Translation.get("gb.preReceiveScripts"), preReceivePalette),
                BorderLayout.CENTER);
        postReceivePalette = new JPalette<String>(true);
        JPanel postReceivePanel = new JPanel(new BorderLayout(5, 5));
        postReceivePanel.add(
                newFieldPanel(Translation.get("gb.postReceiveScripts"), postReceivePalette),
                BorderLayout.CENTER);
        JTabbedPane panel = new JTabbedPane(JTabbedPane.TOP);
        panel.addTab(Translation.get("gb.general"), fieldsPanel);
        panel.addTab(Translation.get("gb.accessRestriction"), accessPanel);
@@ -223,6 +239,8 @@
            panel.addTab(Translation.get("gb.teams"), teamsPanel);
        }
        panel.addTab(Translation.get("gb.federation"), federationPanel);
        panel.addTab(Translation.get("gb.preReceiveScripts"), preReceivePanel);
        panel.addTab(Translation.get("gb.postReceiveScripts"), postReceivePanel);
        JButton createButton = new JButton(Translation.get("gb.save"));
        createButton.addActionListener(new ActionListener() {
@@ -352,8 +370,9 @@
        repository.skipSizeCalculation = skipSizeCalculation.isSelected();
        repository.skipSummaryMetrics = skipSummaryMetrics.isSelected();
        repository.isFrozen = isFrozen.isSelected();
        repository.mailRecipients = StringUtils.getStringsFromValue(mailRecipientsField.getText().trim(), " ");
        repository.mailRecipients = StringUtils.getStringsFromValue(mailRecipientsField.getText()
                .trim(), " ");
        repository.accessRestriction = (AccessRestrictionType) accessRestriction.getSelectedItem();
        repository.federationStrategy = (FederationStrategy) federationStrategy.getSelectedItem();
@@ -361,6 +380,9 @@
        if (repository.federationStrategy.exceeds(FederationStrategy.EXCLUDE)) {
            repository.federationSets = setsPalette.getSelections();
        }
        repository.preReceiveScripts = preReceivePalette.getSelections();
        repository.postReceiveScripts = postReceivePalette.getSelections();
        return true;
    }
@@ -376,7 +398,7 @@
        }
        usersPalette.setObjects(all, selected);
    }
    public void setTeams(List<String> all, List<String> selected) {
        teamsPalette.setObjects(all, selected);
    }
@@ -396,6 +418,14 @@
        setsPalette.setObjects(all, selected);
    }
    public void setPreReceiveScripts(List<String> all, List<String> selected) {
        preReceivePalette.setObjects(all, selected);
    }
    public void setPostReceiveScripts(List<String> all, List<String> selected) {
        postReceivePalette.setObjects(all, selected);
    }
    public RepositoryModel getRepository() {
        if (canceled) {
            return null;
src/com/gitblit/client/GitblitClient.java
@@ -183,6 +183,13 @@
        }
    }
    public List<String> getAvailableScripts() {
        if (settings.pushScripts == null) {
            return new ArrayList<String>();
        }
        return settings.pushScripts;
    }
    public ServerSettings getSettings() {
        return settings;
    }
src/com/gitblit/client/JPalette.java
@@ -40,6 +40,10 @@
    private PaletteModel<T> selectedModel;
    public JPalette() {
        this(false);
    }
    public JPalette(boolean controlOrder) {
        super(new BorderLayout(5, 5));
        availableModel = new PaletteModel<T>();
@@ -86,9 +90,37 @@
            }
        });
        JButton up = new JButton("\u2191");
        up.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                int row = selected.getSelectedRow();
                if (row > 0) {
                    T o = selectedModel.list.remove(row);
                    selectedModel.list.add(row - 1, o);
                    selectedModel.fireTableDataChanged();
                }
            }
        });
        JButton down = new JButton("\u2193");
        down.addActionListener(new ActionListener() {
            public void actionPerformed(ActionEvent event) {
                int row = selected.getSelectedRow();
                if (row < selected.getRowCount() - 1) {
                    T o = selectedModel.list.remove(row);
                    selectedModel.list.add(row + 1, o);
                    selectedModel.fireTableDataChanged();
                }
            }
        });
        JPanel controls = new JPanel(new GridLayout(0, 1, 0, 5));
        controls.add(add);
        controls.add(subtract);
        if (controlOrder) {
            controls.add(up);
            controls.add(down);
        }
        JPanel center = new JPanel(new GridBagLayout());
        center.add(controls);
src/com/gitblit/client/RepositoriesPanel.java
@@ -277,7 +277,7 @@
    protected abstract void subscribeFeeds(List<FeedModel> feeds);
    protected abstract void updateUsersTable();
    protected abstract void updateTeamsTable();
    protected void disableManagement() {
@@ -357,6 +357,8 @@
        dialog.setTeams(gitblit.getTeamnames(), null);
        dialog.setRepositories(gitblit.getRepositories());
        dialog.setFederationSets(gitblit.getFederationSets(), null);
        dialog.setPreReceiveScripts(gitblit.getAvailableScripts(), null);
        dialog.setPostReceiveScripts(gitblit.getAvailableScripts(), null);
        dialog.setVisible(true);
        final RepositoryModel newRepository = dialog.getRepository();
        final List<String> permittedUsers = dialog.getPermittedUsers();
@@ -369,7 +371,8 @@
            @Override
            protected Boolean doRequest() throws IOException {
                boolean success = gitblit.createRepository(newRepository, permittedUsers, permittedTeams);
                boolean success = gitblit.createRepository(newRepository, permittedUsers,
                        permittedTeams);
                if (success) {
                    gitblit.refreshRepositories();
                    if (permittedUsers.size() > 0) {
@@ -405,7 +408,8 @@
     * @param repository
     */
    protected void editRepository(final RepositoryModel repository) {
        EditRepositoryDialog dialog = new EditRepositoryDialog(gitblit.getProtocolVersion(), repository);
        EditRepositoryDialog dialog = new EditRepositoryDialog(gitblit.getProtocolVersion(),
                repository);
        dialog.setLocationRelativeTo(RepositoriesPanel.this);
        List<String> usernames = gitblit.getUsernames();
        List<String> members = gitblit.getPermittedUsernames(repository);
@@ -413,6 +417,8 @@
        dialog.setTeams(gitblit.getTeamnames(), gitblit.getPermittedTeamnames(repository));
        dialog.setRepositories(gitblit.getRepositories());
        dialog.setFederationSets(gitblit.getFederationSets(), repository.federationSets);
        dialog.setPreReceiveScripts(gitblit.getAvailableScripts(), repository.preReceiveScripts);
        dialog.setPostReceiveScripts(gitblit.getAvailableScripts(), repository.postReceiveScripts);
        dialog.setVisible(true);
        final RepositoryModel revisedRepository = dialog.getRepository();
        final List<String> permittedUsers = dialog.getPermittedUsers();
src/com/gitblit/models/ServerSettings.java
@@ -35,6 +35,8 @@
    private static final long serialVersionUID = 1L;
    public List<String> pushScripts;
    public ServerSettings() {
        settings = new TreeMap<String, SettingModel>();
    }