From 856c8a2ad521064d69b2b50003c1df382d375013 Mon Sep 17 00:00:00 2001
From: Marcin Floryan <marcin.floryan@gmail.com>
Date: Sat, 03 Nov 2012 15:15:22 -0400
Subject: [PATCH] Download progress - CR character behaves as expected on Windows but not on other platforms.
---
src/com/gitblit/client/StatusPanel.java | 83 +++++++++++++++++++++++++++--------------
1 files changed, 55 insertions(+), 28 deletions(-)
diff --git a/src/com/gitblit/client/StatusPanel.java b/src/com/gitblit/client/StatusPanel.java
index 797ae9b..6d004f1 100644
--- a/src/com/gitblit/client/StatusPanel.java
+++ b/src/com/gitblit/client/StatusPanel.java
@@ -21,16 +21,20 @@
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.IOException;
+import javax.swing.JButton;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTable;
import com.gitblit.Constants;
+import com.gitblit.Constants.RpcRequest;
import com.gitblit.models.ServerStatus;
import com.gitblit.utils.ByteFormat;
-import com.gitblit.utils.TimeUtils;
/**
* This panel displays the server status.
@@ -40,29 +44,32 @@
public class StatusPanel extends JPanel {
private static final long serialVersionUID = 1L;
- private final Insets insets = new Insets(5, 5, 5, 5);
+ private final GitblitClient gitblit;
private JLabel bootDate;
private JLabel url;
private JLabel servletContainer;
private JLabel heapMaximum;
private JLabel heapAllocated;
private JLabel heapUsed;
- private PropertiesTableModel model;
- private HeaderPanel headerPanel;
+ private PropertiesTableModel tableModel;
+ private HeaderPanel header;
private JLabel version;
private JLabel releaseDate;
- public StatusPanel() {
+ public StatusPanel(GitblitClient gitblit) {
super();
+ this.gitblit = gitblit;
initialize();
}
- public StatusPanel(String url, ServerStatus status) {
- this();
- setStatus(url, status);
- }
-
private void initialize() {
+ JButton refreshStatus = new JButton(Translation.get("gb.refresh"));
+ refreshStatus.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ refreshStatus();
+ }
+ });
+
version = new JLabel();
releaseDate = new JLabel();
bootDate = new JLabel();
@@ -73,13 +80,13 @@
heapAllocated = new JLabel();
heapUsed = new JLabel();
- JPanel fieldsPanel = new JPanel(new GridLayout(0, 1, 0, 5)) {
+ JPanel fieldsPanel = new JPanel(new GridLayout(0, 1, 0, Utils.MARGIN)) {
private static final long serialVersionUID = 1L;
@Override
public Insets getInsets() {
- return insets;
+ return Utils.INSETS;
}
};
fieldsPanel.add(createFieldPanel("gb.version", version));
@@ -91,25 +98,28 @@
fieldsPanel.add(createFieldPanel("gb.heapAllocated", heapAllocated));
fieldsPanel.add(createFieldPanel("gb.heapMaximum", heapMaximum));
- model = new PropertiesTableModel();
- JTable propertiesTable = Utils.newTable(model, Utils.DATE_FORMAT);
+ tableModel = new PropertiesTableModel();
+ JTable propertiesTable = Utils.newTable(tableModel, Utils.DATE_FORMAT);
String name = propertiesTable.getColumnName(PropertiesTableModel.Columns.Name.ordinal());
NameRenderer nameRenderer = new NameRenderer();
- propertiesTable.setRowHeight(nameRenderer.getFont().getSize() + 8);
propertiesTable.getColumn(name).setCellRenderer(nameRenderer);
- JPanel centerPanel = new JPanel(new BorderLayout());
+ JPanel centerPanel = new JPanel(new BorderLayout(Utils.MARGIN, Utils.MARGIN));
centerPanel.add(fieldsPanel, BorderLayout.NORTH);
centerPanel.add(new JScrollPane(propertiesTable), BorderLayout.CENTER);
- headerPanel = new HeaderPanel(Translation.get("gb.status"), "health_16x16.png");
- setLayout(new BorderLayout());
- add(headerPanel, BorderLayout.NORTH);
+ JPanel controls = new JPanel(new FlowLayout(FlowLayout.CENTER, Utils.MARGIN, 0));
+ controls.add(refreshStatus);
+
+ header = new HeaderPanel(Translation.get("gb.status"), "health_16x16.png");
+ setLayout(new BorderLayout(Utils.MARGIN, Utils.MARGIN));
+ add(header, BorderLayout.NORTH);
add(centerPanel, BorderLayout.CENTER);
+ add(controls, BorderLayout.SOUTH);
}
private JPanel createFieldPanel(String key, JLabel valueLabel) {
- JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT, 5, 0));
+ JPanel panel = new JPanel(new FlowLayout(FlowLayout.LEFT, Utils.MARGIN, 0));
JLabel textLabel = new JLabel(Translation.get(key));
textLabel.setFont(textLabel.getFont().deriveFont(Font.BOLD));
textLabel.setPreferredSize(new Dimension(120, 10));
@@ -120,23 +130,40 @@
@Override
public Insets getInsets() {
- return insets;
+ return Utils.INSETS;
}
- public void setStatus(String url, ServerStatus status) {
- headerPanel.setText(Translation.get("gb.status"));
+ protected void refreshStatus() {
+ GitblitWorker worker = new GitblitWorker(StatusPanel.this, RpcRequest.LIST_STATUS) {
+ @Override
+ protected Boolean doRequest() throws IOException {
+ gitblit.refreshStatus();
+ return true;
+ }
+
+ @Override
+ protected void onSuccess() {
+ updateTable(false);
+ }
+ };
+ worker.execute();
+ }
+
+ protected void updateTable(boolean pack) {
+ ServerStatus status = gitblit.getStatus();
+ header.setText(Translation.get("gb.status"));
version.setText(Constants.NAME + (status.isGO ? " GO v" : " WAR v") + status.version);
- releaseDate.setText(status.releaseDate);
- bootDate.setText(status.bootDate.toString() + " (" + TimeUtils.timeAgo(status.bootDate)
+ releaseDate.setText(status.releaseDate);
+ bootDate.setText(status.bootDate.toString() + " (" + Translation.getTimeUtils().timeAgo(status.bootDate)
+ ")");
- this.url.setText(url);
+ url.setText(gitblit.url);
servletContainer.setText(status.servletContainer);
ByteFormat byteFormat = new ByteFormat();
heapMaximum.setText(byteFormat.format(status.heapMaximum));
heapAllocated.setText(byteFormat.format(status.heapAllocated));
heapUsed.setText(byteFormat.format(status.heapAllocated - status.heapFree) + " ("
+ byteFormat.format(status.heapFree) + " " + Translation.get("gb.free") + ")");
- model.setProperties(status.systemProperties);
- model.fireTableDataChanged();
+ tableModel.setProperties(status.systemProperties);
+ tableModel.fireTableDataChanged();
}
}
--
Gitblit v1.9.1