123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800 |
- /*
- * Copyright 2011 gitblit.com.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- package com.gitblit.client;
-
- import java.awt.BorderLayout;
- import java.awt.Component;
- import java.awt.Dimension;
- import java.awt.FlowLayout;
- import java.awt.Font;
- import java.awt.GridLayout;
- import java.awt.Insets;
- import java.awt.event.ActionEvent;
- import java.awt.event.ActionListener;
- import java.awt.event.ItemEvent;
- import java.awt.event.ItemListener;
- import java.awt.event.KeyEvent;
- import java.text.MessageFormat;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.HashSet;
- import java.util.LinkedHashMap;
- import java.util.List;
- import java.util.Map;
- import java.util.Set;
-
- import javax.swing.BoxLayout;
- import javax.swing.ButtonGroup;
- import javax.swing.DefaultListCellRenderer;
- import javax.swing.ImageIcon;
- import javax.swing.JButton;
- import javax.swing.JCheckBox;
- import javax.swing.JComboBox;
- import javax.swing.JComponent;
- import javax.swing.JDialog;
- import javax.swing.JLabel;
- import javax.swing.JList;
- import javax.swing.JOptionPane;
- import javax.swing.JPanel;
- import javax.swing.JRadioButton;
- import javax.swing.JRootPane;
- import javax.swing.JScrollPane;
- import javax.swing.JTabbedPane;
- import javax.swing.JTextField;
- import javax.swing.KeyStroke;
- import javax.swing.ListCellRenderer;
- import javax.swing.ScrollPaneConstants;
-
- import com.gitblit.Constants.AccessRestrictionType;
- import com.gitblit.Constants.AuthorizationControl;
- import com.gitblit.Constants.FederationStrategy;
- import com.gitblit.Constants.RegistrantType;
- import com.gitblit.models.RegistrantAccessPermission;
- import com.gitblit.models.RepositoryModel;
- import com.gitblit.utils.ArrayUtils;
- import com.gitblit.utils.StringUtils;
-
- /**
- * Dialog to create/edit a repository.
- *
- * @author James Moger
- */
- public class EditRepositoryDialog extends JDialog {
-
- private static final long serialVersionUID = 1L;
-
- private final String repositoryName;
-
- private final RepositoryModel repository;
-
- private boolean isCreate;
-
- private boolean canceled = true;
-
- private JTextField nameField;
-
- private JTextField descriptionField;
-
- private JCheckBox useDocs;
-
- private JCheckBox useIncrementalPushTags;
-
- private JCheckBox showRemoteBranches;
-
- private JCheckBox skipSizeCalculation;
-
- private JCheckBox skipSummaryMetrics;
-
- private JCheckBox isFrozen;
-
- private JTextField mailingListsField;
-
- private JComboBox accessRestriction;
-
- private JRadioButton allowAuthenticated;
-
- private JRadioButton allowNamed;
-
- private JCheckBox allowForks;
-
- private JCheckBox verifyCommitter;
-
- private JComboBox federationStrategy;
-
- private JPalette<String> ownersPalette;
-
- private JComboBox headRefField;
-
- private JComboBox gcPeriod;
-
- private JTextField gcThreshold;
-
- private JComboBox maxActivityCommits;
-
- private RegistrantPermissionsPanel usersPalette;
-
- private JPalette<String> setsPalette;
-
- private RegistrantPermissionsPanel teamsPalette;
-
- private JPalette<String> indexedBranchesPalette;
-
- private JPalette<String> preReceivePalette;
-
- private JLabel preReceiveInherited;
-
- private JPalette<String> postReceivePalette;
-
- private JLabel postReceiveInherited;
-
- private Set<String> repositoryNames;
-
- private JPanel customFieldsPanel;
-
- private List<JTextField> customTextfields;
-
- public EditRepositoryDialog(int protocolVersion) {
- this(protocolVersion, new RepositoryModel());
- this.isCreate = true;
- setTitle(Translation.get("gb.newRepository"));
- }
-
- public EditRepositoryDialog(int protocolVersion, RepositoryModel aRepository) {
- super();
- this.repositoryName = aRepository.name;
- this.repository = new RepositoryModel();
- this.repositoryNames = new HashSet<String>();
- this.isCreate = false;
- initialize(protocolVersion, aRepository);
- setModal(true);
- setResizable(false);
- setTitle(Translation.get("gb.edit") + ": " + aRepository.name);
- setIconImage(new ImageIcon(getClass()
- .getResource("/gitblt-favicon.png")).getImage());
- }
-
- @Override
- protected JRootPane createRootPane() {
- KeyStroke stroke = KeyStroke.getKeyStroke(KeyEvent.VK_ESCAPE, 0);
- JRootPane rootPane = new JRootPane();
- rootPane.registerKeyboardAction(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent actionEvent) {
- setVisible(false);
- }
- }, stroke, JComponent.WHEN_IN_FOCUSED_WINDOW);
- return rootPane;
- }
-
- private void initialize(int protocolVersion, RepositoryModel anRepository) {
- nameField = new JTextField(anRepository.name == null ? ""
- : anRepository.name, 35);
- descriptionField = new JTextField(anRepository.description == null ? ""
- : anRepository.description, 35);
-
- JTextField originField = new JTextField(
- anRepository.origin == null ? "" : anRepository.origin, 40);
- originField.setEditable(false);
-
- if (ArrayUtils.isEmpty(anRepository.availableRefs)) {
- headRefField = new JComboBox();
- headRefField.setEnabled(false);
- } else {
- headRefField = new JComboBox(
- anRepository.availableRefs.toArray());
- headRefField.setSelectedItem(anRepository.HEAD);
- }
-
- Integer [] gcPeriods = { 1, 2, 3, 4, 5, 7, 10, 14 };
- gcPeriod = new JComboBox(gcPeriods);
- gcPeriod.setSelectedItem(anRepository.gcPeriod);
-
- gcThreshold = new JTextField(8);
- gcThreshold.setText(anRepository.gcThreshold);
-
- ownersPalette = new JPalette<String>(true);
-
- useDocs = new JCheckBox(Translation.get("gb.useDocsDescription"),
- anRepository.useDocs);
- useIncrementalPushTags = new JCheckBox(Translation.get("gb.useIncrementalPushTagsDescription"),
- anRepository.useIncrementalPushTags);
- showRemoteBranches = new JCheckBox(
- Translation.get("gb.showRemoteBranchesDescription"),
- anRepository.showRemoteBranches);
- skipSizeCalculation = new JCheckBox(
- Translation.get("gb.skipSizeCalculationDescription"),
- anRepository.skipSizeCalculation);
- skipSummaryMetrics = new JCheckBox(
- Translation.get("gb.skipSummaryMetricsDescription"),
- anRepository.skipSummaryMetrics);
- isFrozen = new JCheckBox(Translation.get("gb.isFrozenDescription"),
- anRepository.isFrozen);
-
- maxActivityCommits = new JComboBox(new Integer [] { -1, 0, 25, 50, 75, 100, 150, 250, 500 });
- maxActivityCommits.setSelectedItem(anRepository.maxActivityCommits);
-
- mailingListsField = new JTextField(
- ArrayUtils.isEmpty(anRepository.mailingLists) ? ""
- : StringUtils.flattenStrings(anRepository.mailingLists,
- " "), 50);
-
- accessRestriction = new JComboBox(AccessRestrictionType.values());
- accessRestriction.setRenderer(new AccessRestrictionRenderer());
- accessRestriction.setSelectedItem(anRepository.accessRestriction);
- accessRestriction.addItemListener(new ItemListener() {
- @Override
- public void itemStateChanged(ItemEvent e) {
- if (e.getStateChange() == ItemEvent.SELECTED) {
- AccessRestrictionType art = (AccessRestrictionType) accessRestriction.getSelectedItem();
- EditRepositoryDialog.this.setupAccessPermissions(art);
- }
- }
- });
-
- boolean authenticated = anRepository.authorizationControl != null
- && AuthorizationControl.AUTHENTICATED.equals(anRepository.authorizationControl);
- allowAuthenticated = new JRadioButton(Translation.get("gb.allowAuthenticatedDescription"));
- allowAuthenticated.setSelected(authenticated);
- allowAuthenticated.addItemListener(new ItemListener() {
- @Override
- public void itemStateChanged(ItemEvent e) {
- if (e.getStateChange() == ItemEvent.SELECTED) {
- usersPalette.setEnabled(false);
- teamsPalette.setEnabled(false);
- }
- }
- });
-
- allowNamed = new JRadioButton(Translation.get("gb.allowNamedDescription"));
- allowNamed.setSelected(!authenticated);
- allowNamed.addItemListener(new ItemListener() {
- @Override
- public void itemStateChanged(ItemEvent e) {
- if (e.getStateChange() == ItemEvent.SELECTED) {
- usersPalette.setEnabled(true);
- teamsPalette.setEnabled(true);
- }
- }
- });
-
- ButtonGroup group = new ButtonGroup();
- group.add(allowAuthenticated);
- group.add(allowNamed);
-
- JPanel authorizationPanel = new JPanel(new GridLayout(0, 1));
- authorizationPanel.add(allowAuthenticated);
- authorizationPanel.add(allowNamed);
-
- allowForks = new JCheckBox(Translation.get("gb.allowForksDescription"), anRepository.allowForks);
- verifyCommitter = new JCheckBox(Translation.get("gb.verifyCommitterDescription"), anRepository.verifyCommitter);
-
- // federation strategies - remove ORIGIN choice if this repository has
- // no origin.
- List<FederationStrategy> federationStrategies = new ArrayList<FederationStrategy>(
- Arrays.asList(FederationStrategy.values()));
- if (StringUtils.isEmpty(anRepository.origin)) {
- federationStrategies.remove(FederationStrategy.FEDERATE_ORIGIN);
- }
- federationStrategy = new JComboBox(federationStrategies.toArray());
- federationStrategy.setRenderer(new FederationStrategyRenderer());
- federationStrategy.setSelectedItem(anRepository.federationStrategy);
-
- JPanel fieldsPanel = new JPanel(new GridLayout(0, 1));
- fieldsPanel.add(newFieldPanel(Translation.get("gb.name"), nameField));
- fieldsPanel.add(newFieldPanel(Translation.get("gb.description"),
- descriptionField));
- fieldsPanel
- .add(newFieldPanel(Translation.get("gb.origin"), originField));
- fieldsPanel.add(newFieldPanel(Translation.get("gb.headRef"), headRefField));
- fieldsPanel.add(newFieldPanel(Translation.get("gb.gcPeriod"), gcPeriod));
- fieldsPanel.add(newFieldPanel(Translation.get("gb.gcThreshold"), gcThreshold));
-
- fieldsPanel
- .add(newFieldPanel(Translation.get("gb.enableDocs"), useDocs));
- fieldsPanel
- .add(newFieldPanel(Translation.get("gb.enableIncrementalPushTags"), useIncrementalPushTags));
- fieldsPanel.add(newFieldPanel(Translation.get("gb.showRemoteBranches"),
- showRemoteBranches));
- fieldsPanel
- .add(newFieldPanel(Translation.get("gb.skipSizeCalculation"),
- skipSizeCalculation));
- fieldsPanel.add(newFieldPanel(Translation.get("gb.skipSummaryMetrics"),
- skipSummaryMetrics));
- fieldsPanel.add(newFieldPanel(Translation.get("gb.maxActivityCommits"),
- maxActivityCommits));
- fieldsPanel.add(newFieldPanel(Translation.get("gb.mailingLists"),
- mailingListsField));
-
- JPanel clonePushPanel = new JPanel(new GridLayout(0, 1));
- clonePushPanel
- .add(newFieldPanel(Translation.get("gb.isFrozen"), isFrozen));
- clonePushPanel
- .add(newFieldPanel(Translation.get("gb.allowForks"), allowForks));
- clonePushPanel
- .add(newFieldPanel(Translation.get("gb.verifyCommitter"), verifyCommitter));
-
- usersPalette = new RegistrantPermissionsPanel(RegistrantType.USER);
-
- JPanel northFieldsPanel = new JPanel(new BorderLayout(0, 5));
- northFieldsPanel.add(newFieldPanel(Translation.get("gb.owners"), ownersPalette), BorderLayout.NORTH);
- northFieldsPanel.add(newFieldPanel(Translation.get("gb.accessRestriction"),
- accessRestriction), BorderLayout.CENTER);
-
- JPanel northAccessPanel = new JPanel(new BorderLayout(5, 5));
- northAccessPanel.add(northFieldsPanel, BorderLayout.NORTH);
- northAccessPanel.add(newFieldPanel(Translation.get("gb.authorizationControl"),
- authorizationPanel), BorderLayout.CENTER);
- northAccessPanel.add(clonePushPanel, BorderLayout.SOUTH);
-
- JPanel accessPanel = new JPanel(new BorderLayout(5, 5));
- accessPanel.add(northAccessPanel, BorderLayout.NORTH);
- accessPanel.add(newFieldPanel(Translation.get("gb.userPermissions"),
- usersPalette), BorderLayout.CENTER);
-
- teamsPalette = new RegistrantPermissionsPanel(RegistrantType.TEAM);
- JPanel teamsPanel = new JPanel(new BorderLayout(5, 5));
- teamsPanel.add(
- newFieldPanel(Translation.get("gb.teamPermissions"),
- teamsPalette), BorderLayout.CENTER);
-
- setsPalette = new JPalette<String>();
- JPanel federationPanel = new JPanel(new BorderLayout(5, 5));
- federationPanel.add(
- newFieldPanel(Translation.get("gb.federationStrategy"),
- federationStrategy), BorderLayout.NORTH);
- federationPanel
- .add(newFieldPanel(Translation.get("gb.federationSets"),
- setsPalette), BorderLayout.CENTER);
-
- indexedBranchesPalette = new JPalette<String>();
- JPanel indexedBranchesPanel = new JPanel(new BorderLayout(5, 5));
- indexedBranchesPanel
- .add(newFieldPanel(Translation.get("gb.indexedBranches"),
- indexedBranchesPalette), BorderLayout.CENTER);
-
- preReceivePalette = new JPalette<String>(true);
- preReceiveInherited = new JLabel();
- JPanel preReceivePanel = new JPanel(new BorderLayout(5, 5));
- preReceivePanel.add(preReceivePalette, BorderLayout.CENTER);
- preReceivePanel.add(preReceiveInherited, BorderLayout.WEST);
-
- postReceivePalette = new JPalette<String>(true);
- postReceiveInherited = new JLabel();
- JPanel postReceivePanel = new JPanel(new BorderLayout(5, 5));
- postReceivePanel.add(postReceivePalette, BorderLayout.CENTER);
- postReceivePanel.add(postReceiveInherited, BorderLayout.WEST);
-
- customFieldsPanel = new JPanel();
- customFieldsPanel.setLayout(new BoxLayout(customFieldsPanel, BoxLayout.Y_AXIS));
- JScrollPane customFieldsScrollPane = new JScrollPane(customFieldsPanel);
- customFieldsScrollPane.setHorizontalScrollBarPolicy(ScrollPaneConstants.HORIZONTAL_SCROLLBAR_NEVER);
- customFieldsScrollPane.setVerticalScrollBarPolicy(ScrollPaneConstants.VERTICAL_SCROLLBAR_AS_NEEDED);
-
- JTabbedPane panel = new JTabbedPane(JTabbedPane.TOP);
- panel.addTab(Translation.get("gb.general"), fieldsPanel);
- panel.addTab(Translation.get("gb.accessRestriction"), accessPanel);
- if (protocolVersion >= 2) {
- panel.addTab(Translation.get("gb.teams"), teamsPanel);
- }
- panel.addTab(Translation.get("gb.federation"), federationPanel);
- if (protocolVersion >= 3) {
- panel.addTab(Translation.get("gb.indexedBranches"), indexedBranchesPanel);
- }
- panel.addTab(Translation.get("gb.preReceiveScripts"), preReceivePanel);
- panel.addTab(Translation.get("gb.postReceiveScripts"), postReceivePanel);
-
- panel.addTab(Translation.get("gb.customFields"), customFieldsScrollPane);
-
-
- setupAccessPermissions(anRepository.accessRestriction);
-
- JButton createButton = new JButton(Translation.get("gb.save"));
- createButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent event) {
- if (validateFields()) {
- canceled = false;
- setVisible(false);
- }
- }
- });
-
- JButton cancelButton = new JButton(Translation.get("gb.cancel"));
- cancelButton.addActionListener(new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent event) {
- canceled = true;
- setVisible(false);
- }
- });
-
- JPanel controls = new JPanel();
- controls.add(cancelButton);
- controls.add(createButton);
-
- final Insets _insets = new Insets(5, 5, 5, 5);
- JPanel centerPanel = new JPanel(new BorderLayout(5, 5)) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public Insets getInsets() {
- return _insets;
- }
- };
- centerPanel.add(panel, BorderLayout.CENTER);
- centerPanel.add(controls, BorderLayout.SOUTH);
-
- getContentPane().setLayout(new BorderLayout(5, 5));
- getContentPane().add(centerPanel, BorderLayout.CENTER);
- pack();
- nameField.requestFocus();
- }
-
- private JPanel newFieldPanel(String label, JComponent comp) {
- return newFieldPanel(label, 150, comp);
- }
-
- private JPanel newFieldPanel(String label, int labelSize, JComponent comp) {
- JLabel fieldLabel = new JLabel(label);
- fieldLabel.setFont(fieldLabel.getFont().deriveFont(Font.BOLD));
- fieldLabel.setPreferredSize(new Dimension(labelSize, 20));
- JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT, 10, 0));
- panel.add(fieldLabel);
- panel.add(comp);
- return panel;
- }
-
- private void setupAccessPermissions(AccessRestrictionType art) {
- if (AccessRestrictionType.NONE.equals(art)) {
- usersPalette.setEnabled(false);
- teamsPalette.setEnabled(false);
-
- allowAuthenticated.setEnabled(false);
- allowNamed.setEnabled(false);
- verifyCommitter.setEnabled(false);
- } else {
- allowAuthenticated.setEnabled(true);
- allowNamed.setEnabled(true);
- verifyCommitter.setEnabled(true);
-
- if (allowNamed.isSelected()) {
- usersPalette.setEnabled(true);
- teamsPalette.setEnabled(true);
- }
- }
-
- }
-
- private boolean validateFields() {
- String rname = nameField.getText();
- if (StringUtils.isEmpty(rname)) {
- error("Please enter a repository name!");
- return false;
- }
-
- // automatically convert backslashes to forward slashes
- rname = rname.replace('\\', '/');
- // Automatically replace // with /
- rname = rname.replace("//", "/");
-
- // prohibit folder paths
- if (rname.startsWith("/")) {
- error("Leading root folder references (/) are prohibited.");
- return false;
- }
- if (rname.startsWith("../")) {
- error("Relative folder references (../) are prohibited.");
- return false;
- }
- if (rname.contains("/../")) {
- error("Relative folder references (../) are prohibited.");
- return false;
- }
- if (rname.endsWith("/")) {
- rname = rname.substring(0, rname.length() - 1);
- }
-
- // confirm valid characters in repository name
- Character c = StringUtils.findInvalidCharacter(rname);
- if (c != null) {
- error(MessageFormat.format(
- "Illegal character ''{0}'' in repository name!", c));
- return false;
- }
-
- // verify repository name uniqueness on create
- if (isCreate) {
- // force repo names to lowercase
- // this means that repository name checking for rpc creation
- // is case-insensitive, regardless of the Gitblit server's
- // filesystem
- if (repositoryNames.contains(rname.toLowerCase())) {
- error(MessageFormat
- .format("Can not create repository ''{0}'' because it already exists.",
- rname));
- return false;
- }
- } else {
- // check rename collision
- if (!repositoryName.equalsIgnoreCase(rname)) {
- if (repositoryNames.contains(rname.toLowerCase())) {
- error(MessageFormat
- .format("Failed to rename ''{0}'' because ''{1}'' already exists.",
- repositoryName, rname));
- return false;
- }
- }
- }
-
- if (accessRestriction.getSelectedItem() == null) {
- error("Please select access restriction!");
- return false;
- }
-
- if (federationStrategy.getSelectedItem() == null) {
- error("Please select federation strategy!");
- return false;
- }
-
- repository.name = rname;
- repository.description = descriptionField.getText();
- repository.owners.clear();
- repository.owners.addAll(ownersPalette.getSelections());
- repository.HEAD = headRefField.getSelectedItem() == null ? null
- : headRefField.getSelectedItem().toString();
- repository.gcPeriod = (Integer) gcPeriod.getSelectedItem();
- repository.gcThreshold = gcThreshold.getText();
- repository.useDocs = useDocs.isSelected();
- repository.useIncrementalPushTags = useIncrementalPushTags.isSelected();
- repository.showRemoteBranches = showRemoteBranches.isSelected();
- repository.skipSizeCalculation = skipSizeCalculation.isSelected();
- repository.skipSummaryMetrics = skipSummaryMetrics.isSelected();
- repository.maxActivityCommits = (Integer) maxActivityCommits.getSelectedItem();
-
- repository.isFrozen = isFrozen.isSelected();
- repository.allowForks = allowForks.isSelected();
- repository.verifyCommitter = verifyCommitter.isSelected();
-
- String ml = mailingListsField.getText();
- if (!StringUtils.isEmpty(ml)) {
- Set<String> list = new HashSet<String>();
- for (String address : ml.split("(,|\\s)")) {
- if (StringUtils.isEmpty(address)) {
- continue;
- }
- list.add(address.toLowerCase());
- }
- repository.mailingLists = new ArrayList<String>(list);
- }
-
- repository.accessRestriction = (AccessRestrictionType) accessRestriction
- .getSelectedItem();
- repository.authorizationControl = allowAuthenticated.isSelected() ?
- AuthorizationControl.AUTHENTICATED : AuthorizationControl.NAMED;
- repository.federationStrategy = (FederationStrategy) federationStrategy
- .getSelectedItem();
-
- if (repository.federationStrategy.exceeds(FederationStrategy.EXCLUDE)) {
- repository.federationSets = setsPalette.getSelections();
- }
-
- repository.indexedBranches = indexedBranchesPalette.getSelections();
- repository.preReceiveScripts = preReceivePalette.getSelections();
- repository.postReceiveScripts = postReceivePalette.getSelections();
-
- // Custom Fields
- repository.customFields = new LinkedHashMap<String, String>();
- if (customTextfields != null) {
- for (JTextField field : customTextfields) {
- String key = field.getName();
- String value = field.getText();
- repository.customFields.put(key, value);
- }
- }
- return true;
- }
-
- private void error(String message) {
- JOptionPane.showMessageDialog(EditRepositoryDialog.this, message,
- Translation.get("gb.error"), JOptionPane.ERROR_MESSAGE);
- }
-
- public void setAccessRestriction(AccessRestrictionType restriction) {
- this.accessRestriction.setSelectedItem(restriction);
- setupAccessPermissions(restriction);
- }
-
- public void setAuthorizationControl(AuthorizationControl authorization) {
- boolean authenticated = authorization != null && AuthorizationControl.AUTHENTICATED.equals(authorization);
- this.allowAuthenticated.setSelected(authenticated);
- this.allowNamed.setSelected(!authenticated);
- }
-
- public void setUsers(List<String> owners, List<String> all, List<RegistrantAccessPermission> permissions) {
- ownersPalette.setObjects(all, owners);
- usersPalette.setObjects(all, permissions);
- }
-
- public void setTeams(List<String> all, List<RegistrantAccessPermission> permissions) {
- teamsPalette.setObjects(all, permissions);
- }
-
- public void setRepositories(List<RepositoryModel> repositories) {
- repositoryNames.clear();
- for (RepositoryModel repository : repositories) {
- // force repo names to lowercase
- // this means that repository name checking for rpc creation
- // is case-insensitive, regardless of the Gitblit server's
- // filesystem
- repositoryNames.add(repository.name.toLowerCase());
- }
- }
-
- public void setFederationSets(List<String> all, List<String> selected) {
- setsPalette.setObjects(all, selected);
- }
-
- public void setIndexedBranches(List<String> all, List<String> selected) {
- indexedBranchesPalette.setObjects(all, selected);
- }
-
- public void setPreReceiveScripts(List<String> all, List<String> inherited,
- List<String> selected) {
- preReceivePalette.setObjects(all, selected);
- showInherited(inherited, preReceiveInherited);
- }
-
- public void setPostReceiveScripts(List<String> all, List<String> inherited,
- List<String> selected) {
- postReceivePalette.setObjects(all, selected);
- showInherited(inherited, postReceiveInherited);
- }
-
- private void showInherited(List<String> list, JLabel label) {
- StringBuilder sb = new StringBuilder();
- if (list != null && list.size() > 0) {
- sb.append("<html><body><b>INHERITED</b><ul style=\"margin-left:5px;list-style-type: none;\">");
- for (String script : list) {
- sb.append("<li>").append(script).append("</li>");
- }
- sb.append("</ul></body></html>");
- }
- label.setText(sb.toString());
- }
-
- public RepositoryModel getRepository() {
- if (canceled) {
- return null;
- }
- return repository;
- }
-
- public List<RegistrantAccessPermission> getUserAccessPermissions() {
- return usersPalette.getPermissions();
- }
-
- public List<RegistrantAccessPermission> getTeamAccessPermissions() {
- return teamsPalette.getPermissions();
- }
-
- public void setCustomFields(RepositoryModel repository, Map<String, String> customFields) {
- customFieldsPanel.removeAll();
- customTextfields = new ArrayList<JTextField>();
-
- final Insets insets = new Insets(5, 5, 5, 5);
- JPanel fields = new JPanel(new GridLayout(0, 1, 0, 5)) {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public Insets getInsets() {
- return insets;
- }
- };
-
- for (Map.Entry<String, String> entry : customFields.entrySet()) {
- String field = entry.getKey();
- String value = "";
- if (repository.customFields != null && repository.customFields.containsKey(field)) {
- value = repository.customFields.get(field);
- }
- JTextField textField = new JTextField(value);
- textField.setName(field);
-
- textField.setPreferredSize(new Dimension(450, 26));
-
- fields.add(newFieldPanel(entry.getValue(), 250, textField));
-
- customTextfields.add(textField);
- }
- JScrollPane jsp = new JScrollPane(fields);
- jsp.getVerticalScrollBar().setBlockIncrement(100);
- jsp.getVerticalScrollBar().setUnitIncrement(100);
- jsp.setViewportBorder(null);
- customFieldsPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
- customFieldsPanel.add(jsp);
- }
-
- /**
- * ListCellRenderer to display descriptive text about the access
- * restriction.
- *
- */
- private class AccessRestrictionRenderer extends DefaultListCellRenderer {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public Component getListCellRendererComponent(JList list, Object value,
- int index, boolean isSelected, boolean cellHasFocus) {
- super.getListCellRendererComponent(list, value, index, isSelected, cellHasFocus);
-
- if (value instanceof AccessRestrictionType) {
- AccessRestrictionType restriction = (AccessRestrictionType) value;
- switch (restriction) {
- case NONE:
- setText(Translation.get("gb.notRestricted"));
- break;
- case PUSH:
- setText(Translation.get("gb.pushRestricted"));
- break;
- case CLONE:
- setText(Translation.get("gb.cloneRestricted"));
- break;
- case VIEW:
- setText(Translation.get("gb.viewRestricted"));
- break;
- }
- } else {
- setText(value.toString());
- }
- return this;
- }
- }
-
- /**
- * ListCellRenderer to display descriptive text about the federation
- * strategy.
- */
- private class FederationStrategyRenderer extends JLabel implements
- ListCellRenderer {
-
- private static final long serialVersionUID = 1L;
-
- @Override
- public Component getListCellRendererComponent(JList list, Object value,
- int index, boolean isSelected, boolean cellHasFocus) {
- if (value instanceof FederationStrategy) {
- FederationStrategy strategy = (FederationStrategy) value;
- switch (strategy) {
- case EXCLUDE:
- setText(Translation.get("gb.excludeFromFederation"));
- break;
- case FEDERATE_THIS:
- setText(Translation.get("gb.federateThis"));
- break;
- case FEDERATE_ORIGIN:
- setText(Translation.get("gb.federateOrigin"));
- break;
- }
- } else {
- setText(value.toString());
- }
- return this;
- }
- }
- }
|