From 27ae9095639bb228a1b7ff86a3ebe4264abf05be Mon Sep 17 00:00:00 2001
From: mschaefers <mschaefers@scoop-gmbh.de>
Date: Thu, 29 Nov 2012 12:33:09 -0500
Subject: [PATCH] feature: when using LdapUserService one can configure Gitblit to fetch all users from ldap that can possibly login. This allows to see newly generated LDAP users instantly in Gitblit. By now an LDAP user had to log in once to appear in GitBlit.

---
 src/com/gitblit/client/StatusPanel.java |  100 +++++++++++++++++++++++++++++++++++++------------
 1 files changed, 75 insertions(+), 25 deletions(-)

diff --git a/src/com/gitblit/client/StatusPanel.java b/src/com/gitblit/client/StatusPanel.java
index 551d865..6d004f1 100644
--- a/src/com/gitblit/client/StatusPanel.java
+++ b/src/com/gitblit/client/StatusPanel.java
@@ -21,12 +21,18 @@
 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;
 
@@ -38,62 +44,85 @@
 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(ServerStatus status) {
-		this();
-		setStatus(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();
+		url = new JLabel();
 		servletContainer = new JLabel();
 
 		heapMaximum = new JLabel();
 		heapAllocated = new JLabel();
 		heapUsed = new JLabel();
 
-		JPanel fieldsPanel = new JPanel(new GridLayout(0, 1));
+		JPanel fieldsPanel = new JPanel(new GridLayout(0, 1, 0, Utils.MARGIN)) {
+
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public Insets getInsets() {
+				return Utils.INSETS;
+			}
+		};
+		fieldsPanel.add(createFieldPanel("gb.version", version));
+		fieldsPanel.add(createFieldPanel("gb.releaseDate", releaseDate));
 		fieldsPanel.add(createFieldPanel("gb.bootDate", bootDate));
+		fieldsPanel.add(createFieldPanel("gb.url", url));
 		fieldsPanel.add(createFieldPanel("gb.servletContainer", servletContainer));
 		fieldsPanel.add(createFieldPanel("gb.heapUsed", heapUsed));
 		fieldsPanel.add(createFieldPanel("gb.heapAllocated", heapAllocated));
 		fieldsPanel.add(createFieldPanel("gb.heapMaximum", heapMaximum));
 
-		model = new PropertiesTableModel();
-		JTable propertiesTable = Utils.newTable(model);
+		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, 5));
+		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, valueLabel.getFont().getSize() + 4));
+		textLabel.setPreferredSize(new Dimension(120, 10));
 		panel.add(textLabel);
 		panel.add(valueLabel);
 		return panel;
@@ -101,19 +130,40 @@
 
 	@Override
 	public Insets getInsets() {
-		return insets;
+		return Utils.INSETS;
 	}
 
-	public void setStatus(ServerStatus status) {
-		headerPanel.setText(Translation.get("gb.status"));
-		bootDate.setText(status.bootDate.toString());
+	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() + " (" + Translation.getTimeUtils().timeAgo(status.bootDate)
+				+ ")");
+		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