| | |
| | | import java.awt.Color;
|
| | | import java.awt.Component;
|
| | | import java.awt.Desktop;
|
| | | import java.awt.Dimension;
|
| | | import java.awt.FlowLayout;
|
| | | import java.awt.GridLayout;
|
| | | import java.awt.Insets;
|
| | | import java.awt.event.ActionEvent;
|
| | | import java.awt.event.ActionListener;
|
| | |
| | | import java.net.URI;
|
| | | import java.text.MessageFormat;
|
| | | import java.util.ArrayList;
|
| | | import java.util.HashMap;
|
| | | import java.util.List;
|
| | | import java.util.Map;
|
| | |
|
| | | import javax.swing.ImageIcon;
|
| | | import javax.swing.JButton;
|
| | | import javax.swing.JLabel;
|
| | | import javax.swing.JOptionPane;
|
| | |
| | |
|
| | | private HeaderPanel settingsHeader;
|
| | |
|
| | | private StatusPanel statusPanel;
|
| | |
|
| | | public GitblitPanel(GitblitRegistration reg) {
|
| | | this(reg.url, reg.account, reg.password);
|
| | | }
|
| | |
| | | tabs.addTab(Translation.get("gb.repositories"), createRepositoriesPanel());
|
| | | tabs.addTab(Translation.get("gb.users"), createUsersPanel());
|
| | | tabs.addTab(Translation.get("gb.settings"), createSettingsPanel());
|
| | | tabs.addTab(Translation.get("gb.status"), createStatusPanel());
|
| | |
|
| | | setLayout(new BorderLayout());
|
| | | add(tabs, BorderLayout.CENTER);
|
| | |
| | | }
|
| | | });
|
| | |
|
| | | final JButton editSetting = new JButton(Translation.get("gb.edit"));
|
| | | editSetting.addActionListener(new ActionListener() {
|
| | | public void actionPerformed(ActionEvent e) {
|
| | | int viewRow = settingsTable.getSelectedRow();
|
| | | int modelRow = settingsTable.convertRowIndexToModel(viewRow);
|
| | | String key = settingsModel.keys.get(modelRow);
|
| | | SettingModel setting = settingsModel.settings.get(key);
|
| | | editSetting(setting);
|
| | | }
|
| | | });
|
| | |
|
| | | final SettingPanel settingPanel = new SettingPanel();
|
| | | settingsModel = new SettingsTableModel();
|
| | | defaultSettingsSorter = new TableRowSorter<SettingsTableModel>(settingsModel);
|
| | |
| | | if (e.getValueIsAdjusting()) {
|
| | | return;
|
| | | }
|
| | | boolean selected = settingsTable.getSelectedRow() > -1;
|
| | | boolean singleSelection = settingsTable.getSelectedRows().length == 1;
|
| | | // TODO enable/disable setting buttons
|
| | | editSetting.setEnabled(singleSelection);
|
| | | if (singleSelection) {
|
| | | int viewRow = settingsTable.getSelectedRow();
|
| | | int modelRow = settingsTable.convertRowIndexToModel(viewRow);
|
| | |
| | |
|
| | | JPanel settingsControls = new JPanel(new FlowLayout(FlowLayout.CENTER, 5, 0));
|
| | | settingsControls.add(refreshSettings);
|
| | | // TODO update setting?
|
| | | settingsControls.add(editSetting);
|
| | |
|
| | | JPanel settingsPanel = new JPanel(new BorderLayout(margin, margin)) {
|
| | |
|
| | |
| | | return settingsPanel;
|
| | | }
|
| | |
|
| | | private JPanel createStatusPanel() {
|
| | | JButton refreshStatus = new JButton(Translation.get("gb.refresh"));
|
| | | refreshStatus.addActionListener(new ActionListener() {
|
| | | public void actionPerformed(ActionEvent e) {
|
| | | refreshStatus();
|
| | | }
|
| | | });
|
| | |
|
| | | JPanel controls = new JPanel();
|
| | | controls.add(refreshStatus);
|
| | |
|
| | | JPanel panel = new JPanel(new BorderLayout());
|
| | | statusPanel = new StatusPanel();
|
| | | panel.add(statusPanel, BorderLayout.CENTER);
|
| | | panel.add(controls, BorderLayout.SOUTH);
|
| | | return panel;
|
| | | }
|
| | |
|
| | | public void login() throws IOException {
|
| | | gitblit.login();
|
| | |
|
| | | updateRepositoriesTable();
|
| | | Utils.packColumns(repositoriesTable, 2);
|
| | | Utils.packColumns(repositoriesTable, 5);
|
| | |
|
| | | if (gitblit.allowManagement()) {
|
| | | updateUsersTable();
|
| | |
| | |
|
| | | if (gitblit.allowAdministration()) {
|
| | | updateSettingsTable();
|
| | | updateStatusPanel();
|
| | | Utils.packColumns(settingsTable, 5);
|
| | | } else {
|
| | | // remove the settings tab
|
| | | String settingsTitle = Translation.get("gb.settings");
|
| | |
| | | settingsModel.setSettings(gitblit.getSettings());
|
| | | settingsModel.fireTableDataChanged();
|
| | | settingsHeader.setText(Translation.get("gb.settings"));
|
| | | }
|
| | |
|
| | | private void updateStatusPanel() {
|
| | | statusPanel.setStatus(gitblit.getStatus());
|
| | | }
|
| | |
|
| | | private void filterRepositories(final String fragment) {
|
| | |
| | | dialog.setLocationRelativeTo(GitblitPanel.this);
|
| | | dialog.setUsers(null, gitblit.getUsernames(), null);
|
| | | dialog.setRepositories(gitblit.getRepositories());
|
| | | dialog.setFederationSets(gitblit.getFederationSets(), null);
|
| | | dialog.setVisible(true);
|
| | | final RepositoryModel newRepository = dialog.getRepository();
|
| | | final List<String> permittedUsers = dialog.getPermittedUsers();
|
| | |
| | | };
|
| | | worker.execute();
|
| | | }
|
| | |
|
| | | protected void refreshStatus() {
|
| | | GitblitWorker worker = new GitblitWorker(GitblitPanel.this, RpcRequest.LIST_STATUS) {
|
| | | @Override
|
| | | protected Boolean doRequest() throws IOException {
|
| | | gitblit.refreshStatus();
|
| | | return true;
|
| | | }
|
| | |
|
| | | @Override
|
| | | protected void onSuccess() {
|
| | | updateStatusPanel();
|
| | | }
|
| | | };
|
| | | worker.execute();
|
| | | }
|
| | |
|
| | | protected void editSetting(final SettingModel settingModel) {
|
| | | final JTextField textField = new JTextField(settingModel.currentValue);
|
| | | JPanel editPanel = new JPanel(new GridLayout(0, 1));
|
| | | editPanel.add(new JLabel("New Value"));
|
| | | editPanel.add(textField);
|
| | |
|
| | | JPanel settingPanel = new JPanel(new BorderLayout());
|
| | | settingPanel.add(new SettingPanel(settingModel), BorderLayout.CENTER);
|
| | | settingPanel.add(editPanel, BorderLayout.SOUTH);
|
| | | settingPanel.setPreferredSize(new Dimension(800, 200));
|
| | |
|
| | | String[] options;
|
| | | if (settingModel.currentValue.equals(settingModel.defaultValue)) {
|
| | | options = new String[] { Translation.get("gb.cancel"), Translation.get("gb.save") };
|
| | | } else {
|
| | | options = new String[] { Translation.get("gb.cancel"),
|
| | | Translation.get("gb.setDefault"), Translation.get("gb.save") };
|
| | | }
|
| | | String defaultOption = options[0];
|
| | | int selection = JOptionPane.showOptionDialog(GitblitPanel.this, settingPanel,
|
| | | settingModel.name, JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE,
|
| | | new ImageIcon(getClass().getResource("/settings_16x16.png")), options,
|
| | | defaultOption);
|
| | | if (selection <= 0) {
|
| | | return;
|
| | | }
|
| | | if (options[selection].equals(Translation.get("gb.setDefault"))) {
|
| | | textField.setText(settingModel.defaultValue);
|
| | | }
|
| | | final Map<String, String> newSettings = new HashMap<String, String>();
|
| | | newSettings.put(settingModel.name, textField.getText().trim());
|
| | | GitblitWorker worker = new GitblitWorker(GitblitPanel.this, RpcRequest.EDIT_SETTINGS) {
|
| | | @Override
|
| | | protected Boolean doRequest() throws IOException {
|
| | | boolean success = gitblit.updateSettings(newSettings);
|
| | | if (success) {
|
| | | gitblit.refreshSettings();
|
| | | }
|
| | | return success;
|
| | | }
|
| | |
|
| | | @Override
|
| | | protected void onSuccess() {
|
| | | updateSettingsTable();
|
| | | }
|
| | | };
|
| | | worker.execute();
|
| | | }
|
| | | } |