src/com/gitblit/client/GitblitClient.java | ●●●●● patch | view | raw | blame | history | |
src/com/gitblit/client/GitblitManager.java | ●●●●● patch | view | raw | blame | history | |
src/com/gitblit/client/GitblitPanel.java | ●●●●● patch | view | raw | blame | history | |
src/com/gitblit/client/SettingPanel.java | ●●●●● patch | view | raw | blame | history | |
src/com/gitblit/client/Utils.java | ●●●●● patch | view | raw | blame | history | |
src/com/gitblit/wicket/GitBlitWebApp.properties | ●●●●● patch | view | raw | blame | history |
src/com/gitblit/client/GitblitClient.java
@@ -48,7 +48,7 @@ public final String account; private final char[] password; private volatile boolean allowManagement; private volatile boolean allowAdministration; @@ -100,7 +100,7 @@ public boolean allowManagement() { return allowManagement; } public boolean allowAdministration() { return allowAdministration; } @@ -136,7 +136,7 @@ allUsers.addAll(users); return allUsers; } public ServerSettings refreshSettings() throws IOException { settings = RpcUtils.getSettings(url, account, password); return settings; @@ -217,4 +217,8 @@ public boolean deleteUser(UserModel user) throws IOException { return RpcUtils.deleteUser(user, url, account, password); } public boolean updateSettings(Map<String, String> newSettings) throws IOException { return RpcUtils.updateSettings(newSettings, url, account, password); } } src/com/gitblit/client/GitblitManager.java
@@ -29,6 +29,7 @@ import java.awt.event.WindowEvent; import java.io.File; import java.io.IOException; import java.net.ConnectException; import java.text.MessageFormat; import java.text.SimpleDateFormat; import java.util.ArrayList; @@ -272,7 +273,13 @@ registrations.put(reg.name, reg); rebuildRecentMenu(); } catch (Throwable t) { Utils.showException(GitblitManager.this, t); Throwable cause = t.getCause(); if (cause instanceof ConnectException) { JOptionPane.showMessageDialog(GitblitManager.this, cause.getMessage(), Translation.get("gb.error"), JOptionPane.ERROR_MESSAGE); } else { Utils.showException(GitblitManager.this, t); } } finally { setCursor(Cursor.getPredefinedCursor(Cursor.DEFAULT_CURSOR)); } @@ -338,7 +345,7 @@ StoredConfig config = getConfig(); config.setString("servers", reg.name, "url", reg.url); config.setString("servers", reg.name, "account", reg.account); // FIXME this is pretty lame // FIXME this is pretty lame config.setString("servers", reg.name, "password", Base64.encodeBytes(new String(reg.password).getBytes("UTF-8"))); config.setString("servers", reg.name, "lastLogin", dateFormat.format(reg.lastLogin)); src/com/gitblit/client/GitblitPanel.java
@@ -19,7 +19,9 @@ 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; @@ -31,8 +33,11 @@ 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; @@ -395,6 +400,17 @@ } }); 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); @@ -412,9 +428,8 @@ 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); @@ -449,7 +464,7 @@ 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)) { @@ -917,4 +932,53 @@ }; 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(); } } src/com/gitblit/client/SettingPanel.java
@@ -50,10 +50,16 @@ initialize(); } public SettingPanel(SettingModel setting) { this(); setSetting(setting); } private void initialize() { descriptionArea = new JTextArea(); descriptionArea.setRows(6); descriptionArea.setFont(new Font("monospaced", Font.PLAIN, 11)); descriptionArea.setEditable(false); settingName = new JLabel(" "); settingName.setFont(settingName.getFont().deriveFont(Font.BOLD)); @@ -83,10 +89,10 @@ settingName.setText(setting.name); if (setting.since == null) { sinceVersion.setText("custom"); } else { } else { sinceVersion.setText("since " + setting.since); } settingDefault.setText("default: " + setting.defaultValue); settingDefault.setText(Translation.get("gb.default") + ": " + setting.defaultValue); List<String> values = new ArrayList<String>(); if (setting.caseSensitive) { src/com/gitblit/client/Utils.java
@@ -17,11 +17,17 @@ import java.awt.Color; import java.awt.Component; import java.awt.Dimension; import java.awt.Font; import java.io.PrintWriter; import java.io.StringWriter; import java.text.MessageFormat; import java.util.Date; import javax.swing.JOptionPane; import javax.swing.JScrollPane; import javax.swing.JTable; import javax.swing.JTextArea; import javax.swing.table.DefaultTableColumnModel; import javax.swing.table.TableCellRenderer; import javax.swing.table.TableColumn; @@ -55,8 +61,19 @@ } public static void showException(Component c, Throwable t) { // TODO show the unexpected exception t.printStackTrace(); StringWriter writer = new StringWriter(); t.printStackTrace(new PrintWriter(writer)); String stacktrace = writer.toString(); try { writer.close(); } catch (Throwable x) { } JTextArea textArea = new JTextArea(stacktrace); textArea.setFont(new Font("monospaced", Font.PLAIN, 11)); JScrollPane jsp = new JScrollPane(textArea); jsp.setPreferredSize(new Dimension(800, 400)); JOptionPane.showMessageDialog(c, jsp, Translation.get("gb.error"), JOptionPane.ERROR_MESSAGE); } public static void packColumns(JTable table, int margin) { src/com/gitblit/wicket/GitBlitWebApp.properties
@@ -163,4 +163,6 @@ gb.skipSizeCalculationDescription = do not calculate the repository size (reduces page load time) gb.skipSummaryMetrics = skip summary metrics gb.skipSummaryMetricsDescription = do not calculate metrics on the summary page (reduces page load time) gb.accessLevel = access level gb.accessLevel = access level gb.default = default gb.setDefault = set default